
android
文章平均质量分 85
csfchh
硕士毕业于浙江大学,本科毕业于武汉理工大学,毕业至今就从事安卓开发,熟悉Java、kotlin、dart等语言,对安卓原生开发和flutter混合开发技术开发有一定研究。热爱技术,每天不断学习和进步。
展开
-
【NDK系列】使用ndk-build构建可在Android设备运行的ELF可执行文件
介绍如何使用NDK开发一个最简单的可在Android设备运行的可执行程序原创 2024-03-02 23:49:20 · 904 阅读 · 0 评论 -
【NDK系列】Android tombstone文件分析
Android native crash分析方法及工具使用介绍原创 2024-03-02 22:20:42 · 3494 阅读 · 0 评论 -
Android开发中的服务发现技术
可以根据是否使用反射把这类技术分为有反射和无反射两大类(或动态和静态)原创 2022-12-10 20:23:05 · 1066 阅读 · 0 评论 -
Shell脚本案例:Android多模块构建和发布
在安卓模块化和组件化开发的趋势下,一个构建物往往依赖会依赖其他构建物进行进行编译,而构建物也可能发布到多个不同的仓库,此时采用手动构建和发布的方式就会非常影响开发效率,我们期望构建和发布可以自动化和批量化...原创 2022-07-07 18:45:09 · 660 阅读 · 0 评论 -
Android如何设计一个flutter容器
Android端flutter页面容器实现思路原创 2022-05-12 15:44:23 · 1254 阅读 · 0 评论 -
Android原生图表库调研
曾经由于项目需要使用过一些开源的安卓原生图表库,但是没有系统整理过,最近又遇到这个需求,遂整理一下省得日后重蹈覆辙。原创 2022-05-05 23:55:43 · 1293 阅读 · 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 · 2706 阅读 · 0 评论 -
Android自绘控件要点梳理
本文所有内容来自网络,通过本人梳理编撰成文。文章仅对知识要点做罗列整理,相当于知识目录,预期读者为具备相关开发经验的研发,不建议初学者阅读。如果需要进一步探究,可以查看参考资料查看原文。UI基础坐标系屏幕坐标系:移动设备的坐标系一般定义屏幕的左上角为坐标原点,向右为X轴增大方向,向下为Y轴增大方向;View坐标系:控件的坐标系是相对于父控件而言的,当然也可以通过getLocationOnScreen获取全局坐标;事件坐标系:触摸事件的坐标提供了上述两个坐标系,即一个相对于整个手机屏幕的坐标,.原创 2022-01-17 23:11:38 · 1606 阅读 · 0 评论 -
Android SDK工具链清单
目录构建工具aapt/aapt2apksignerzipalignd8aidljetifierbundletool命令行工具apkanalyzeravdmanagerlintsdkmanager平台工具adbetc1toolfastbootlogcatdmtracedumpsystraceperfetto其他开发端工具emulatormksdcardjobbretrace终端工具dumpsysbmgr为了对安卓开发编译过程有更清晰、具体的认知,有必要对Android SDK中提供的工具链有所有了解,以应对原创 2021-12-16 16:12:28 · 3040 阅读 · 0 评论 -
Android热修复核心原理介绍
对网络上热修复方案和原理的文章和三方框架进行了二次整理,让读者对热修复方案和原理有个整体的认知。总的来说热修复不是简单的一项技术,更贴切的说是一种解决方案,不仅涉及到APP端的补丁生成和生效技术,还涉及系统兼容性、开发过程代码管理、补丁管理系统等。除非有足够的人力物力支持,否则在生产环境中引入热修复还是推荐使用阿里、腾讯等大厂的现成方案,不推荐自己造轮子。原创 2021-12-08 16:24:51 · 2176 阅读 · 0 评论 -
Android无处不在的Binder
今天看到一篇文章被其变体吸引:《Android 11系统服务的添加(java 层)》,难道应用层可以这么玩了吗?看完发现原来是framework开发的文章。虽然没有接触过framework开发,但是整篇看完一点都不陌生,跟APP开发中的aidl开发流程基本相同,只是多了系统服务注册这一步。我们知道aidl也是基于Binder实现的,看来Binder实在太重要了,本篇总结一下Binder相关原理。...原创 2021-12-06 21:41:21 · 1827 阅读 · 0 评论 -
Android内存优化理论基础及相关工具
内存问题表现内存抖动:短时间内有大量对象创建与销毁,它伴随着频繁的GC,造成卡顿。比如字符串用“+”拼接,onDraw等方法中创建对象等。除了避免上述操作,灵活使用对象池也是一种改良手段。内存泄漏长生命周期对象持有短生命周期对象强引用,导致短生命周期对象无法被回收,软弱虚引用则不会泄漏。常见的内存泄漏场景有:静态成员变量/单例/订阅未注销,Closable等资源没释放,异步任务回调内存溢出著名的OOM,当内存不足与创建大对象或创建新线程时会抛出GC机制LMK机制AKA,低内存杀手机制原创 2021-11-28 18:09:55 · 313 阅读 · 0 评论 -
Android利用AS检测内存泄漏
参考资料使用 Android Studio 检测内存泄漏与解决内存泄漏问题原创 2021-11-14 16:51:17 · 2055 阅读 · 0 评论 -
Android如何设计一个H5容器
APP端使用WebView的场景主要是加载H5页面、富文本展示和编辑、图表库(echart)等。当业务对APP动态化有相应需求时,H5作为一个老牌跨平台技术,是最常用的动态化技术之一。本文对WebView的技术需求和使用场景进行了整理,其中大部分是本人工作中遇到过的,部分是在查阅资料过程中发现的,希望对今后的开发有所帮助。先来谈一谈H5容器的设计目标:良好的js与原生通讯支持:支持自定义通讯接口;性能尽可能好,加载速度尽量快:H5本地模版和webview缓存;可配置,扩展性好:默认配置合理,满足多原创 2021-11-13 23:55:00 · 3041 阅读 · 0 评论 -
bat脚本案例:每天凌晨2点自动构建flutter apk
需求flutter开发过程中不断有测试和同事询问开发进度或者缺陷修复情况,每次都需要临时打包,影响手头开发工作,如果电脑配置不高编译速度慢这个打断效果更甚。此时一个比较好的解决方案是在每天在一个电脑空闲的时间自动出包,安装包需要带有日期信息以便区分。这样每次有人来询问直接给包就行了。技术点gradle打包配置,自定义生成apk名称;flutter打android apk的命令行实现;Windows系统设置定制任务;gradle核心配置android { applicationVar原创 2021-11-09 11:40:28 · 1547 阅读 · 0 评论 -
【NDK系列】AS项目添加C/C++代码
参考资料NDK 使用入门原创 2021-10-26 13:55:19 · 917 阅读 · 0 评论 -
【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 · 2187 阅读 · 0 评论 -
Android试玩OpenCV
OpenCV目前在移动端的主要使用场景是人脸识别、车牌识别、图像处理等,可以说其发挥作用的场景是越来越多的,本文主要介绍OpenCV在安卓端的集成方法和简单用法,方便后续进一步研究。OpenCV下载OpenCV官网地址:https://opencv.org/下载地址:https://sourceforge.net/projects/opencvlibrary/files/sourceforge国内的下载速度及其缓慢,可以考虑使用VPN进行加速,或者用迅雷等专业的下载器来提高下载速度。...原创 2021-10-20 21:16:17 · 2298 阅读 · 0 评论 -
Android Studio:配置备忘录
控制台中文乱码修改studio配置文件:userhome.AndroidStudio4.0\config\studio64.exe.vmoptions添加:# custom Android Studio VM options, see https://developer.android.com/studio/intro/studio-config.html-Dfile.encoding=UTF-8原创 2021-06-18 23:11:12 · 2350 阅读 · 1 评论 -
Android进阶:实用ADB命令
主要介绍一些工作中可能用到的实用adb命令和安卓终端命令原创 2021-06-18 23:01:46 · 6294 阅读 · 0 评论 -
Gradle:启用R8混淆后post请求的body变为null的问题分析及解决办法
近期在项目打包时遇到一个奇怪的问题:一个业务组件在一个老项目中集成没问题,在新创建的项目中打release包就有问题,post请求(retrofit 2.7.1 )的body一直为null,debug包没问题。很明显这是个混淆造成的问题,但为什么同样的组件、同样的proguard-rules.pro打出来的包却一个没问题,一个有问题呢?查询相关资料后,发现是代码压缩器不同的缘故。新项目的gradle创建版本:classpath 'com.android.tools.build:gradle:4.0.2原创 2021-06-08 17:18:29 · 900 阅读 · 1 评论 -
gradle快速入门
1. gradle语法2. 自定义gradle插件原创 2021-06-04 11:44:16 · 2443 阅读 · 1 评论 -
gradle脚本实战
Gradle实战开发技巧,超级实用!原创 2021-05-10 20:19:14 · 1756 阅读 · 0 评论 -
PowerShell案例:修改AndroidManifest.xml解决flutter插件example代码编译失败的问题
学习powershell的初衷是因为在编写flutter工程模版脚本的过程中遇到一个极不起眼却很棘手的问题:batch脚本无法满足复杂的xml文件修改需求。这是由于xml文件中大量存在<和>,这与batch的重定向符是相同的,导致在echo每行xml内容时出现各种莫名其妙的问题。第一时间想到的是flutter SDK是如何处理AndroidManifest.xml的呢?遂开始翻阅flutter SDK中的bat文件(在FLUTTER_HOME的bin文件夹下),发现SDK中涉及到复杂的操作都交给原创 2021-04-13 22:23:21 · 1086 阅读 · 0 评论 -
Android富文本展示
1. 内容概要HTML富文本因其优良的阅读体验和丰富的内容形式,在移动端得到了广泛的应用。项目中,通知公告功能发布的内容即为富文本,在APP端需要有良好的展示效果。本文总结了安卓端常用的富文本展示技术,并给出了具体的实现,希望对读者有所启发。2. 需求及实现社区项目中公告内容主要是图文和链接形式,推送给客户端后需要在APP内进行展示,如果以传统的textview和imageview展示这些内容,需要在内容解析上花费大量精力,并且可支持的内容形式也比较有限,预研和总结了移动端富文本的实现技术后大致分原创 2021-03-30 00:43:56 · 2309 阅读 · 0 评论 -
Android常用库整理
安基础库名称GAV官网简介eventbusorg.greenrobot:eventbust:3.1.1事件总线utilcodecom.blankj:utilcode:1.23.7SDK封装fastjsoncom.alibaba:fastjson:1.2.49json解析小众功能库名称GAV官网简介eventbusorg.greenrobot:eventbust:3.1.1事件总线控件库名称GAV官原创 2021-03-24 16:11:01 · 2714 阅读 · 0 评论