PM 新的options
install-create [-lrtsfdg] [-i PACKAGE] [--user USER_ID|all|current]
[-p INHERIT_PACKAGE] [--install-location 0/1/2]
[--install-reason 0/1/2/3/4] [--originating-uri URI]
[--referrer URI] [--abi ABI_NAME] [--force-sdk]
[--preload] [--instantapp] [--full] [--dont-kill]
[--force-uuid internal|UUID] [--pkg PACKAGE] [--apex] [-S BYTES]
[--multi-package] [--staged]
Like "install", but starts an install session. Use "install-write"
to push data into the session, and "install-commit" to finish.
这次我们来看看–multi-package
命令行实验开始:
generic_x86:/sdcard $ ls -l one.apk two.apk three.apk
-rw-rw---- 1 root sdcard_rw 1856359 2020-07-01 11:44 one.apk
-rw-rw---- 1 root sdcard_rw 1856371 2020-07-01 11:32 three.apk
-rw-rw---- 1 root sdcard_rw 1856355 2020-07-01 11:30 two.apk
generic_x86:/sdcard $ pm install-create -S 5569085 --multi-package
Success: created install session [1661895576]
generic_x86:/sdcard $ pm install-create -S 1856359
Success: created install session [107246474]
generic_x86:/sdcard $ cat one.apk | pm install-write -S 1856359 107246474 -
Success: streamed 1856359 bytes
generic_x86:/sdcard $ pm install-create -S 1856355
Success: created install session [191754603]
generic_x86:/sdcard $ cat two.apk | pm install-write -S 1856355 191754603 -
Success: streamed 1856355 bytes
generic_x86:/sdcard $ pm install-create -S 1856371
Success: created install session [74602662]
generic_x86:/sdcard $ cat three.apk | pm install-write -S 1856371 74602662 -
Success: streamed 1856371 bytes
generic_x86:/sdcard $ pm install-add-session 1661895576 107246474 191754603 74602662
Success
generic_x86:/sdcard $ pm install-commit 1661895576
Success
查看结果:
假装非常惊讶,三个apk都装上了,神奇啊!!
multi-package 安装具备原子性,这是代码注释上说的,不是我瞎说的。