Android动态部署一:Google原生Split APK浅析
Posted ximsfei
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android动态部署一:Google原生Split APK浅析相关的知识,希望对你有一定的参考价值。
转载请注明出处:http://blog.csdn.net/ximsfei/article/details/50884862
在分析android动态部署原理之前,我们先通过以下四点来分析一下Google原生支持的Split APK机制,了解了Split APK机制之后,可能会对大家深入理解Android动态部署原理有一定的帮助。
1. 什么是Split APK
2. 在实际开发中如何应用
3. 如何安装
4. SplitApk解析时序图
什么是Split APK
Split APK是Google为解决65536上限,以及APK安装包越来越大等问题,在Android L中引入的机制。
Split APK可以将一个庞大的APK,按屏幕密度,ABI等形式拆分成多个独立的APK,在应用程序更新时,不必下载整个APK,只需单独下载某个模块即可安装更新。
Split APK将原来一个APK中多个模块共享同一份资源的模型分离成多个APK使用各自的资源,并且可以继承Base APK中的资源,多个APK有相同的data,cache目录,多个dex文件,相同的进程,在Settings.apk中只显示一个APK,并且使用相同的包名。
在实际开发中如何应用
Android源码中的例子:http://androidxref.com/6.0.1_r10/xref/frameworks/base/tests/FeatureSplit/
- 对于源码开发者:
如上链接中,可以在Android.mk中修改:
通过LOCAL_AAPT_FLAGS的–feature-of 以及—feature-after来设置Split APK的继承顺序
AndroidManifest.xml中修改:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.android.test.split.feature"
featureName="feature1">
按顺序分别编译每个独立的APK即可
2. 对于app开发者:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.android.test.split.feature"
featureName="feature1" split="split1">
如何安装
- 一次安装
Base APK和Split APK同时安装到手机上:
a. adb shell pm install-create 创建一个session(1237281889)
Success:created install session [1237281889]
b. adb shell pm install-write session(1237281889) baseapk (base.apk) apk_path
(/data/local/tmp/FeatureSplitBase.apk)
c. adb shell pm install-write session(1237281889) splitapk (base1.apk) apk_path
(/data/local/tmp/FeatureSplit1.apk)
d. adb shell pm install-commit session(1237281889)
- 模块安装
Base APK必须已经安装到手机中:
a. adb shell pm install-create -r –p installed_packagename(com.android.test.split.feature)
b. adb shell pm install-write session splitapk (base1.apk) apk_path
(/data/local/tmp/FeatureSplit1.apk)
c. adb shell pm install-commit session
Example:
1. adb shell pm install-create
Success:created install session [1237281889]
2. adb shell pm install-write 1237281889 base.apk /data/local/tmp/FeatureSplitBase.apk
3. adb shell pm install-write 1237281889 base1.apk /data/local/tmp/FeatureSplit1.apk
4. adb shell pm install-write 1237281889 base2.apk /data/local/tmp/FeatureSplit2.apk
5. adb shell pm install-commit 1237281889
SplitApk解析时序图
这里简单画了一下Split APK的解析时序图,后续文章会给出详细的APK文件解析说明
以上是关于Android动态部署一:Google原生Split APK浅析的主要内容,如果未能解决你的问题,请参考以下文章
Android动态部署五:如何从插件apk中启动Service
Android动态部署五:如何从插件apk中启动Service