#java #android #android-studio #apk #root
#Ява #Android #android-студия #апк #корень
Вопрос:
Я пишу приложение в kotlin
и java
и только на корневых TV-Box
эс. Я добавил функцию загрузки apk-файла с моего собственного сервера, его установки и повторного запуска после установки:
Log.d(TAG, "doInBackground: writeByte install"); cs.writeBytes(String.format("cat %s | pm install -S %dn", strings[0], length)); Log.d(TAG, "doInBackground: writeByte start activity"); cs.writeBytes(("am start -n com.exam.ple.views/com.exam.ple.views.SplashActivity" " --ez update truen"));
Проблема в том, что этот код отлично работает, если подписанный apk-файл находится в режиме отладки. Но когда он находится в режиме выпуска, он работает неправильно, что означает, что приложение успешно устанавливается, но не запускает действие (и только тогда, когда оно подписано как APK-файл выпуска). Я проверил am start ...
терминал ( Termux
), и он отлично работает при любых обстоятельствах.
Есть идеи, что может вызвать эту проблему?
Комментарии:
1. Используете ли вы одну и ту же подпись для приложений отладки и выпуска? Если вы устанавливаете приложение, вы также можете устанавливать в него обновления, подписанные точно таким же закрытым ключом/сертификатом.
2. Подпись приложений отладки и выпуска различна, но я не думаю, что это имеет значение, поскольку мы пытаемся обновить версию отладки с помощью приложений отладки и версии выпуска с использованием приложений выпуска.
3. Вполне возможно, что proguard изменит название
com.exam.ple.views/com.exam.ple.views.SplashActivity
. вы могли бы попробовать что-то вродеSplashActivity.class.getCanonicalName()
вместоcom.exam.ple.views.SplashActivity
.4. Как мы можем быть уверены, произойдет это или нет?
5. Вы можете настроить поведение proguard (
proguard-rules.pro
) , да