Google Play APK и Android Studio APK (USB debug) ведут себя по-другому
Я уже задал вопрос: "Конструктор args для класса не существует" , но он выполняет и получил ответ, который работал, когда я тестировал его с помощью USB debug на моем телефоне через Android Studio. Однако, когда я нажал приложение в Google Play, он перестает работать и вызывает ту же ошибку, которую я описал в этом вопросе. Сегодня я повторил тест, и происходит то же самое.
Чтобы уточнить, я тестирую:
- Точный же код
- На одном и том же телефоне
- Запуск той же версии Android
- Использование одного и того же изображения
Есть ли причина, по которой APK Google Play будет отличаться от Android Studio APK? Или я что-то упускаю?
Ответы
Ответ 1
В зависимости от конфигурации build.gradle
версии release
обычно запускаются ProGuard
в вашем коде.
debug
версии обычно не запускают такие инструменты в коде.
Так что могло случиться, что ProGuard
пробежал ваш код, обнаружил, что MwVolleyApi$Page
нигде не используется и удалил его.
Чтобы проверить эту теорию, в build.gradle
отключите minifyEnabled
:
release {
minifyEnabled false
...
}
Затем создайте release-apk и протестируйте его.
Кстати, вы должны всегда тестировать apks на своем устройстве перед загрузкой в Google Play, вы можете установить их через adb install
или скопировать их на SD-карту и установить их из приложения Downloads
на вашем телефоне.
Если это действительно устранило проблему, вы можете добавить правила в свой proguard.cfg
файл, чтобы сохранить класс Page
от удаления, например:
-keep class fr.free.nrw.commons.upload.MwVolleyApi$Page {*;}
Затем вы можете вернуть minifyEnabled
в true и снова проверить
Ответ 2
Попробуйте создать сборку отладки с помощью proguard и посмотреть, не реплицируется ли проблема.
В своем build.gradle сделайте следующее:
buildTypes {
all{
// Place all proguard files
proguardFile 'proguard/proguard-rules.pro'
proguardFile getDefaultProguardFile('proguard-android.txt')
}
}
Ответ 3
Я думаю, что apk, созданный с вашего Android Studio, - это отладочная версия, которая является пользователем для отладки во время разработки.
Apk, опубликованный в Google Play Store, является версией вашего приложения.
Вы также можете создать версию выпуска из Android Studio и посмотреть, что она будет такой же, как и в Play Store.