Я пытаюсь установить некоторые 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? Спасибо