- 博客(72)
- 收藏
- 关注
原创 【NDK系列】使用ndk-build构建可在Android设备运行的ELF可执行文件
介绍如何使用NDK开发一个最简单的可在Android设备运行的可执行程序
2024-03-02 23:49:20
935
原创 Shell脚本案例:获取自己上周git提交记录
日常工作周报需要总结上周的主要工作,开发了哪些需求解决了哪些bug,通过git提交日志来呈现是比较客观的,本文介绍如何使用shell调用git命令获取自己上周的git提交记录
2023-03-21 20:21:55
573
原创 Shell脚本案例:安装指定路径下的所有apk到安卓设备
工作中经常涉及的操作流程如下:`解bug`->`打release包`->`安装apk到手机`->`验证bug`,在之前的文章中已经介绍了如何做复杂工程的打包自动化方案,本篇解决的是`安装apk到手机`这个步骤的自动化操作。
2022-09-02 14:51:26
1789
原创 Shell脚本案例:Git规范commit-msg
git本身自带hooks入口,支持用户通过脚本的方式在git命令执行前后进行一些检查工作,使用的脚本语言为Shell。相关hook脚本需放在本地.git/hooks目录下,打开该目录可以看到很多示例脚本,我们要用到的正是commit-msg这个。只需要将对应脚本的后缀.sample去掉即可启动该脚本,然后我们将脚本内容修改为自己的脚本逻辑即可:#!/bin/shCOMMIT_MSG=`cat $1 | egrep "^(feat|fix|docs|chore)\(\w+\)?:\s(\S|\w)+
2022-08-09 11:44:19
1153
原创 Shell脚本案例:Android多模块构建和发布
在安卓模块化和组件化开发的趋势下,一个构建物往往依赖会依赖其他构建物进行进行编译,而构建物也可能发布到多个不同的仓库,此时采用手动构建和发布的方式就会非常影响开发效率,我们期望构建和发布可以自动化和批量化...
2022-07-07 18:45:09
671
原创 【NDK系列】CMake使用指南
CMake作为C/C++的构建工具,其地位和作用类似于安卓中的gradle,因此具备安卓开发能力的开发者可以将两者对比着学习有助于理解和记忆。CMake旨在实现编写一次CMakeLists.txt可以在不同操作系统上完成可执行程序或者链接库的构建,CMakeLists.txt于CMake相当于build.gradle之于gradle。......
2022-06-14 19:31:52
1763
原创 Android原生图表库调研
曾经由于项目需要使用过一些开源的安卓原生图表库,但是没有系统整理过,最近又遇到这个需求,遂整理一下省得日后重蹈覆辙。
2022-05-05 23:55:43
1312
1
原创 Gradle案例:apk构建、安装、启动一体化
背景我们知道在调试时,只需要点击一下运行按钮就会自动为我们执行build->install->launch三个动作,非常方便,然而到了release阶段,AS就没有为我们提供类似的快捷操作了。本文的初衷就是希望在release阶段实现与AS run App类似的一键操作,提高自测阶段的工作效率。技术点首先需要了解build->install->launch这三个动作是如何实现的:build:就是构建apk,相关的task为assemble<VariantName>
2022-04-24 17:55:16
2722
原创 Git patch的使用方法和场景
Git补丁在同步不同分支的代码时应用较多,且比较灵活,比如修复了基线的一个bug,同步到各个版本的发布分支。本文介绍两种生成和应用补丁的方案。
2022-04-01 17:13:45
51095
原创 flutter解决方案:支持动态多语言资源
通常对于一个flutter组件来说,其多语言支持有两种情况:一是仅支持中文不支持多语言,二是多语言仅支持英文。当涉及到组件需要提供给海外业务使用时,就不能满足需求了,但我们在编码时就在组件提供所有语言资源是不现实的,理想情况是像原生一样支持在打包时通过添加多语言资源文件的方式,在不修改组件代码的前提下增加多更多语种的支持。本文提供了一种实现方案,介绍如下。
2022-03-29 11:48:35
4334
原创 github项目下载单个文件夹的办法
GitHub上有的个别项目过大,但只需要下载其中一个文件夹,下载整个项目要很久而且没必要。下面介绍使用SVN实现部分文件夹的下载。
2022-03-22 21:53:02
2355
原创 Gitlab CI/CD:入门指南
Web端登录Gitlab仓库后,如果有用户有相应权限,可以在左侧边栏看到CI/CD菜单,包含:Pipelines, Jobs, Schedules三个选项。下面对这些菜单的功能和使用方法进行介绍。
2022-02-15 20:58:36
6088
原创 Android性能测试手段和工具
关于性能监控和测试是安卓开发中技术进阶的重要内容,对于基建开发更是必备技能。所谓工欲善其事必先利其器,首先应该掌握安卓官方的提供的各种工具的使用,进一步的,通过探究其原理来开发我们自己的性能检测工具。
2022-01-25 00:06:35
4014
原创 Android自绘控件要点梳理
本文所有内容来自网络,通过本人梳理编撰成文。文章仅对知识要点做罗列整理,相当于知识目录,预期读者为具备相关开发经验的研发,不建议初学者阅读。如果需要进一步探究,可以查看参考资料查看原文。UI基础坐标系屏幕坐标系:移动设备的坐标系一般定义屏幕的左上角为坐标原点,向右为X轴增大方向,向下为Y轴增大方向;View坐标系:控件的坐标系是相对于父控件而言的,当然也可以通过getLocationOnScreen获取全局坐标;事件坐标系:触摸事件的坐标提供了上述两个坐标系,即一个相对于整个手机屏幕的坐标,.
2022-01-17 23:11:38
1609
原创 flutter解决方案:软键盘可见性问题
flutter键盘是否可见这个问题可以说是老大难了,尝试过MediaQuery.of(context).viewInsets.bottom获取键盘高度,此方式要求Scaffold(resizeToAvoidBottomInset: false),否则获取的高度永远是0,但是一旦resizeToAvoidBottomInset: false键盘弹出时页面布局就不能被键盘顶起,导致页面底部的输入框被遮盖,这是不能接受的。从网上找到了解决方案,并简单封装了一下。代码资料:Get keyboard he.
2022-01-07 15:12:28
2952
原创 各平台系统包管理工具
在查看gradle文档时意外发现了其中有段介绍各个平台系统包管理工具的介绍,这里记录和分享一下,后续如果有机会使用会进一步补充一些使用方法介绍。目录WindowsScoopChocolateymacOSHomebrewMacPortsLinuxUnixSDKMAN!参考资料WindowsScoopScoop is a command-line installer for Windows inspired by Homebrew.scoop install gradleChocolatey.
2021-12-24 17:28:10
822
原创 Android SDK工具链清单
目录构建工具aapt/aapt2apksignerzipalignd8aidljetifierbundletool命令行工具apkanalyzeravdmanagerlintsdkmanager平台工具adbetc1toolfastbootlogcatdmtracedumpsystraceperfetto其他开发端工具emulatormksdcardjobbretrace终端工具dumpsysbmgr为了对安卓开发编译过程有更清晰、具体的认知,有必要对Android SDK中提供的工具链有所有了解,以应对
2021-12-16 16:12:28
3073
原创 AS接入三方任务管理系统之Gitlab
Android Studio借助Task Manager插件可以支持在IDE中直接接入三方任务管理系统(Manage tasks and contexts),在三方管理系统中创建需求(create issue)并指派解决人后,相关人员可以在AS中直接打开任务,一键创建feture分支进行开发和提交,从而形成一套完整的工作流。下面以常用的gitlab为例介绍下如何使用该功能。在体验完此功能后的感受就跟AS内置的Git插件一样,可以帮助我们在IDE内以GUI操作形式完成很多日常开发流程工作,但是也应该因人而
2021-12-15 15:13:01
956
原创 Android热修复核心原理介绍
对网络上热修复方案和原理的文章和三方框架进行了二次整理,让读者对热修复方案和原理有个整体的认知。总的来说热修复不是简单的一项技术,更贴切的说是一种解决方案,不仅涉及到APP端的补丁生成和生效技术,还涉及系统兼容性、开发过程代码管理、补丁管理系统等。除非有足够的人力物力支持,否则在生产环境中引入热修复还是推荐使用阿里、腾讯等大厂的现成方案,不推荐自己造轮子。
2021-12-08 16:24:51
2197
原创 Android无处不在的Binder
今天看到一篇文章被其变体吸引:《Android 11系统服务的添加(java 层)》,难道应用层可以这么玩了吗?看完发现原来是framework开发的文章。虽然没有接触过framework开发,但是整篇看完一点都不陌生,跟APP开发中的aidl开发流程基本相同,只是多了系统服务注册这一步。我们知道aidl也是基于Binder实现的,看来Binder实在太重要了,本篇总结一下Binder相关原理。...
2021-12-06 21:41:21
1844
原创 编码规范:依据和实施办法
工作中不知道你是否遇到过这种问题:你维护了一个基础库,在迭代过程中由于业务变化或代码优化,不得不对一些接口进行重构,这个过程中就可能会产生少量废弃接口。虽然你出于谨慎将这些接口标记为@Deprecated,但是仍然会有开发者不注意,使用被废弃的接口,造成后期维护上的一些问题。我们可以通过编码规范来处理此类问题,本文主要来谈谈编码规范及其实施办法。有法可依谈到编码规范,首先要解决的是有法可依的问题。代码改怎么写才算规范,这个问题在任何大厂都是有丰富的实践经验和血泪教训的,在网上找到了一份《Google.
2021-11-30 21:33:58
701
原创 Android内存优化理论基础及相关工具
内存问题表现内存抖动:短时间内有大量对象创建与销毁,它伴随着频繁的GC,造成卡顿。比如字符串用“+”拼接,onDraw等方法中创建对象等。除了避免上述操作,灵活使用对象池也是一种改良手段。内存泄漏长生命周期对象持有短生命周期对象强引用,导致短生命周期对象无法被回收,软弱虚引用则不会泄漏。常见的内存泄漏场景有:静态成员变量/单例/订阅未注销,Closable等资源没释放,异步任务回调内存溢出著名的OOM,当内存不足与创建大对象或创建新线程时会抛出GC机制LMK机制AKA,低内存杀手机制
2021-11-28 18:09:55
325
原创 Java并发技术要点梳理
写在前面:Java并发这块内容无论是在工作中还是面试中都是常见而且实用的重点,推荐将本文一些关键代码自己运行一遍,以查看实际效果,这里推荐一个在线运行Java代码的网站基本概念CPU线程数是同一时刻设备能并行执行的程序个数,线程数 = cpu个数 * 核数;Java多线程Java线程数可以大于CPU线程数,操作系统使用时间片机制,采用线程调度算法,频繁的进行线程切换。在同一时刻,JAVA进程中不同的线程可能会在不同的核上并行运行。进程调度机制时间片轮转法(Round-Robin,RR).
2021-11-25 02:01:58
756
原创 Android如何设计一个H5容器
APP端使用WebView的场景主要是加载H5页面、富文本展示和编辑、图表库(echart)等。当业务对APP动态化有相应需求时,H5作为一个老牌跨平台技术,是最常用的动态化技术之一。本文对WebView的技术需求和使用场景进行了整理,其中大部分是本人工作中遇到过的,部分是在查阅资料过程中发现的,希望对今后的开发有所帮助。先来谈一谈H5容器的设计目标:良好的js与原生通讯支持:支持自定义通讯接口;性能尽可能好,加载速度尽量快:H5本地模版和webview缓存;可配置,扩展性好:默认配置合理,满足多
2021-11-13 23:55:00
3060
原创 数据结构与算法基本概念
四大逻辑结构集合/线性/树形/图形结构单链表结构的线性表物理结构硬盘:文件结构;内存:元素的存储结构形式有**顺序存储**和**链式存储**;一般我们说存储结构只关注内存,即顺序结构和链式结构。顺序结构的特点是读查快O(1),而插删慢O(n),需要连续的内存空间,长度固定;链式结构的特点是读取慢O(n),而插删快O(1),可以充分利用零散的内存空间,长度不定。表 1 物理结构的使用场合顺序结构 链式结构用户个人信息,一次生成,以后都是读取 算法的设计要求:正确/可读/健壮算法效率
2021-11-10 02:44:17
917
原创 bat脚本案例:每天凌晨2点自动构建flutter apk
需求flutter开发过程中不断有测试和同事询问开发进度或者缺陷修复情况,每次都需要临时打包,影响手头开发工作,如果电脑配置不高编译速度慢这个打断效果更甚。此时一个比较好的解决方案是在每天在一个电脑空闲的时间自动出包,安装包需要带有日期信息以便区分。这样每次有人来询问直接给包就行了。技术点gradle打包配置,自定义生成apk名称;flutter打android apk的命令行实现;Windows系统设置定制任务;gradle核心配置android { applicationVar
2021-11-09 11:40:28
1558
原创 Nginx使用介绍
1. Nginx基本概念1.1 常见服务器对比1.2 Nginx功能特性1.3 Nginx常用功能2. 安装准备2.1 下载地址2.2 源码安装2.3 yam安装2.4 Nginx服务启停控制3. 第一个Nginx项目3.1 项目目录结构3.2 配置文件结构4 基础配置介绍4.1 nginx.conf5. 典型应用场景5.2 静态资源部署静态资源包括:静态资源配置语法:静态资源压缩浏览器缓存静态资源跨域静态资源防盗链5.3 后端服务器组的配置指令5个常用指令5
2021-11-02 12:52:55
1886
原创 【NDK系列】ndk-build使用说明
ndk-build是上一代android ndk开发编译工具,尽管现在官方推荐使用CMake,AS默认的工具也切换成了后者,但是仍有必要对ndk-build有一定了解,以求:知道ndk-build如何使用;知道如何从ndk-build项目切换到CMake;还是先回顾一下NDK开发的步骤:在java类文件中编写native接口;借助AS代码提示自动生成或者使用javah命令生成.h头文件;新建c/cpp文件引入头文件并实现接口函数;配置编译选项编译成so文件(ndk-build或CMake
2021-10-25 21:00:35
2212
原创 Android试玩OpenCV
OpenCV目前在移动端的主要使用场景是人脸识别、车牌识别、图像处理等,可以说其发挥作用的场景是越来越多的,本文主要介绍OpenCV在安卓端的集成方法和简单用法,方便后续进一步研究。OpenCV下载OpenCV官网地址:https://opencv.org/下载地址:https://sourceforge.net/projects/opencvlibrary/files/sourceforge国内的下载速度及其缓慢,可以考虑使用VPN进行加速,或者用迅雷等专业的下载器来提高下载速度。...
2021-10-20 21:16:17
2312
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人