【技术分享】使用ADB安装拆分安装包或补充安装包(以Tailscale为例)

  1. 1. APK拆分技术
  2. 2. 安装方法
  3. 3. 补充安装包方法

APK拆分技术

APK拆分技术是一种优化Android应用部署和分发的方法,它允许开发者将一个大的单一APK文件分割成多个独立的功能模块或配置相关的APK文件。这种技术有助于降低应用体积、提升下载效率、节省存储空间,并且可以根据设备的具体特性按需下载相应的模块。

安装方法

Tailscale在play商店安装后可提取出以下5个文件,必须都安装应用才能正常使用(语言包可以只安装一个)。

image-20240614182015232

需要安装此软件可以通过系统的包管理程序进行安装。

首先要将这些安装包发送到手机上,这里选择发送到系统临时文件夹,可在系统清理时自动删除。通过以下命令将文件推送到手机中,记得更换对应的路径,实例中各种安装包的安装路径为:D:\Tailscale-apk-installer请替换为实际需要的路径。

1
2
3
4
5
adb push D:\Tailscale-apk-installer\base.apk /data/local/tmp
adb push D:\Tailscale-apk-installer\split_config.arm64_v8a.apk /data/local/tmp
adb push D:\Tailscale-apk-installer\split_config.en.apk /data/local/tmp
adb push D:\Tailscale-apk-installer\split_config.xxhdpi.apk /data/local/tmp
adb push D:\Tailscale-apk-installer\split_config.zh.apk /data/local/tmp

执行这些命令如图所示。

image-20240614182946947

如果没用报错,那么这些安装包已经发送到手机中了,接下来需要使用adb创建一个包管理安装进程,需要先进入shell模式,可输入下面的命令进入shell模式。

1
adb shell

先创建一个包管理(pm)进程:

1
pm install-create

此时,会创建一个安装进程,返回结果如图所示。

image-20240614185047065

返回结果中有一串数字(session id)后面有用,这是后续控制该安装程序的id。将后续命令的session都换成你实际上返回的。然后分别执行下面命令,写入全部安装包。

1
2
3
4
5
pm install-write 318611258 base.apk /data/local/tmp/base.apk
pm install-write 318611258 split_config.arm64_v8a.apk /data/local/tmp/split_config.arm64_v8a.apk
pm install-write 318611258 split_config.en.apk /data/local/tmp/split_config.en.apk
pm install-write 318611258 split_config.xxhdpi.apk /data/local/tmp/split_config.xxhdpi.apk
pm install-write 318611258 split_config.zh.apk /data/local/tmp/split_config.zh.apk

执行后全部返回内容如图所示。

image-20240614185608573

然后提交安装即可。

1
pm install-commit 318611258

执行完成后完成安装。可能会在手机上弹出是否安装的提示,点击同意安装。这样就完成安装了。

补充安装包方法

如果已经通过adb install安装了主包该怎么办呢?只安装主包通常会闪退,可通过下面方法安装剩余分包。

首先我们需要知道安装软件的包名,如talscale的包名为 com.tailscale.ipn

首先仍需要将安装包文件发送到手机。(此处省略)

然后对该包进行安装,如下命令创建pm进程,同样获取了一个session

1
pm install-create -r -p com.tailscale.ipn

然后输入下面命令将安装包写入此包。

1
2
3
4
pm install-write [session] split_config.arm64_v8a.apk /data/local/tmp/split_config.arm64_v8a.apk
pm install-write [session] split_config.en.apk /data/local/tmp/split_config.en.apk
pm install-write [session] split_config.xxhdpi.apk /data/local/tmp/split_config.xxhdpi.apk
pm install-write [session] split_config.zh.apk /data/local/tmp/split_config.zh.apk

同样提交执行安装即可。

1
pm install-commit [session]

现在就可以正常使用app了。