Android 热修复,插件式开发---基本知识
来源:互联网 发布:红蜘蛛软件官网 编辑:程序博客网 时间:2024/05/19 16:36
Android插件技术已经出来很久了,从 包建强 的那篇《Android插件化:从入门到放弃》出来以后,插件化技术的场景也明朗了。
app插件牵涉到很多基础
1.app的启动流程
过程分析,首先从launcher上面点击app图标,然后到activity的OnResume。
在AMS里面调用startProcessLocked,首先开启一个新的进程,同步一个主线程。
上图是启动默认activity的流程。
1.1launcher->AMS(system_server) launcher 首先发送启动activity的请求
1.2AMS判断该请求为新的app创建请求,该流程非常复杂,最终会走到startProcessLocked, 创建process:
Process.ProcessStartResult startResult = Process.start(entryPoint, app.processName, uid, uid, gids, debugFlags, mountExternal, app.info.targetSdkVersion, app.info.seinfo, requiredAbi, instructionSet, app.info.dataDir, refreshTheme, entryPointArgs);
1.3 调用Zygote启动新的进程,其实就是fork一个标准的进程。
1.4 启动activityThread.main方法,获取name之类的参数,绑定到zygote启动的新进程。
1.5 把新进程bind 到AMS。
1.6 AMS启动新进程里面的activity。
2.apk打包流程&自动打包技术。
第一步:打包资源文件,生成R.java。
首先看aapt的源码:Resource.cpp 里面关键函数buildResources
buildResource里面,检测AndroidManifest.xml的合法性,然后开始makeFileReource,把res下的资源文件
加入到ResourceTable中。
调用compileResourceFiles,把value-xml文件解析,然后加入到resource.arsc 文件。
compileResourceFiles最终会调用parseAndAddEntry, 把资源写入到R.java中。
然后是调用compileXmlFiles,处理其他的drawable,anim,layout等xml文件。
resource.arsc 就是ResouceTable。
关于这个文件的解析:http://www.cnblogs.com/feng9exe/p/5676802.html
最终aapt会把assect里面的files,resource.arsc,AndroidManifest.xml等统一打包为“*.ap_”文件。
第二步:AIDL编译 生成对应的.java文件。AIDL的编译过程其实就是把AIDL文件自动生成java文件,生成后放在bin\classes下面。
第三步:编译工程源代码,生成class文件。编译所有src下面的代码,生成对应的class文件。假设一般情况下,只是使用Android SDK开发而已。
第四步:把class文件编程成dex文件。dx工具主要作用就是把claass转化为dalvik使用的dex文件。消除冗余信息,压缩常量池等。
第五步:打包生成APK文件,打包工具为apkbuilder.主要是把,resource.ap_,dex文件 打包成APK文件,但是没有签名。这里在class文件到dex中 还有一个过程proguard。class+progroud->dex
第六步:签名,目前有2中方式,jarsinger工具,或者signapk工具。
第七步:签名后,字节需要对齐,zipalign工具就是干这个事情的。
至此,整个打包过程就结束了。
- Android 热修复,插件式开发---基本知识
- Android插件化,热修复,模块化开发
- android插件化,热修复,热更新。
- android热插件,热更新,热修复,模块化
- android热插件,热更新,热修复,模块化
- Android 热修复插件之AndFix
- Android插件化与热修复
- 插件化开发,插件化开发和热修复
- 关于 Android中的插件化开发,dex分包,热修复(Tinker)的思考(一)
- 关于 Android中的插件化开发,dex分包,热修复(Tinker)的思考(二)
- Android开发之nuwa热修复
- Android 热修复使用Gradle Plugin1.5改造Nuwa插件
- Android 热修复使用Gradle Plugin1.5改造Nuwa插件
- Android插件化和热修复的区别和联系
- Android动态加载之热修复与插件化
- Android 热修复方案Tinker(六) Gradle插件实现
- Android热修复 — Nuwa Gradle 插件核心源码分析
- Android插件化 热修复热门框架简析
- Spring国际化
- 矩阵相乘法(稀疏矩阵)
- 第16天新手SEO基础计划之:站外引流
- BootStrap页面框架模板
- ListView工作原理、卡顿及OOM--android
- Android 热修复,插件式开发---基本知识
- 第17天新手SEO基础计划之:遭遇搜索引擎沙盒及排名不稳定,如何进行处理
- 202. Happy Number
- ARCEngine 开发,CAD数据操作
- android 友盟统计的集成问题
- IOS的SQLITE数据库基本操作
- suricata 3.1 源码分析22 (数据包处理2)
- 变形--缩放 scale()
- [未能将网站 xxxxxxx配置为使用 ASP.NET 4.0。为了使此网站正确运行,您必须将它手动配置为使用 ASP.NET 4.0] 问题的解决办法