Программно установить несколько фрагментов APK с флагом -t с PackageInstaller - PullRequest
0 голосов
/ 25 сентября 2019

Я пытаюсь установить некоторые APK, которые имеют android: testOnly = "true" в AndroidManifest.xml

Но я не уверен, как это сделать программно через PackageManager / PackageInstaller.

Мои APK разделены на несколько APK:

base.apk, 
split_lib_dependencies_apk.apk, 
split_lib_resources_apk.apk, 
split_lib_slice_0_apk.apk, 
split_lib_slice_1_apk.apk, 
split_lib_slice_2_apk.apk, 
split_lib_slice_3_apk.apk, 
split_lib_slice_4_apk.apk, 
split_lib_slice_5_apk.apk, 
split_lib_slice_6_apk.apk, 
split_lib_slice_7_apk.apk, 
split_lib_slice_8_apk.apk, 
split_lib_slice_9_apk.apk

base.apk - это файл, содержащий AndroidManifest.xml с android: testOnly = "true"

InЕсли вам интересно, откуда я взял эти APK, я нажимаю кнопку «Выполнить» в Android Studio 3.4.2 и захожу в / data / app /, чтобы получить эти apk-файлы после установки приложения (яна рутированном устройстве).

Я также попытался установить через менеджер пакетов, где я использую pm для создания сеанса установки.(обратите внимание, что я включаю флаг -t)

adb shell
pm install-create -t -S <total apk size> 
pm install-write -S <SIZE OF BASE.APK> <SESSIONID> 1_split_base.apk base.apk
keep performing pm install-write for all the split apks and then perform pm install-commit <SESSIONID> 

Сейчас я пытаюсь повторить вышеприведенное с помощью кода, но не могу вставить флаг -t.

Я следовал приведенному здесь коду (https://github.com/nkalra0123/splitapkinstall/blob/master/app/src/main/java/com/faith/apkinstaller/MainActivity.java), чтобы установить несколько apks, но проблема в том, что я хочу, чтобы на моем APK был установлен флажок testOnly как true в AndroidManifest.xml

У меня также естьпосмотрел исходный код Pm: https://github.com/commaai/android_frameworks_base/blob/master/cmds/pm/src/com/android/commands/pm/Pm.java

Это показывает, что они меняют installFlag в

final SessionParams params = new SessionParams(SessionParams.MODE_FULL_INSTALL);
params.installFlags |= PackageManager.INSTALL_ALLOW_TEST;

Однако, когда я пытаюсь объявить:

final SessionParams params = new SessionParams(SessionParams.MODE_FULL_INSTALL);

У меня нет опций для изменения installFlags. Есть ли способы вставить флаг установки -t? Спасибо

...