Android动态部署一:Google原生Split APK浅析

在分析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,并且使用相同的包名。 
Split APK 结构图

在实际开发中如何应用

Android源码中的例子:http://androidxref.com/6.0.1_r10/xref/frameworks/base/tests/FeatureSplit/

  1. 对于源码开发者: 
    如上链接中,可以在Android.mk中修改: 
    通过LOCAL_AAPT_FLAGS的–feature-of 以及—feature-after来设置Split APK的继承顺序 
    AndroidManifest.xml中修改:
 
  1. <manifest xmlns:android="http://schemas.android.com/apk/res/android"

  2. package="com.android.test.split.feature"

  3. featureName="feature1">

  • 1
  • 2
  • 3

按顺序分别编译每个独立的APK即可 
2. 对于app开发者:

 
  1. <manifest xmlns:android="http://schemas.android.com/apk/res/android"

  2. package="com.android.test.split.feature"

  3. featureName="feature1" split="split1">

  • 1
  • 2
  • 3

如何安装

  1. 一次安装 
    Base APK和Split APK同时安装到手机上:
 
  1. a. adb shell pm install-create 创建一个session(1237281889)

  2. Success:created install session [1237281889]

  3. b. adb shell pm install-write session(1237281889) baseapk (base.apk) apk_path

  4. (/data/local/tmp/FeatureSplitBase.apk)

  5. c. adb shell pm install-write session(1237281889) splitapk (base1.apk) apk_path

  6. (/data/local/tmp/FeatureSplit1.apk)

  7. d. adb shell pm install-commit session(1237281889)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  1. 模块安装 
    Base APK必须已经安装到手机中:
 
  1. a. adb shell pm install-create -r –p installed_packagename(com.android.test.split.feature)

  2. b. adb shell pm install-write session splitapk (base1.apk) apk_path

  3. (/data/local/tmp/FeatureSplit1.apk)

  4. c. adb shell pm install-commit session

  • 1
  • 2
  • 3
  • 4

Example:

 
  1. 1. adb shell pm install-create

  2. Success:created install session [1237281889]

  3. 2. adb shell pm install-write 1237281889 base.apk /data/local/tmp/FeatureSplitBase.apk

  4. 3. adb shell pm install-write 1237281889 base1.apk /data/local/tmp/FeatureSplit1.apk

  5. 4. adb shell pm install-write 1237281889 base2.apk /data/local/tmp/FeatureSplit2.apk

  6. 5. adb shell pm install-commit 1237281889

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

SplitApk解析时序图

这里简单画了一下Split APK的解析时序图,后续文章会给出详细的APK文件解析说明 
Split APK解析

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值