Моя сборка приложения Ionic 3 больше не принимается в игровом магазине. Я уверен, что с сертификатом и процессом подписи все в порядке. Ранее я выпустил несколько релизов, последний из которых был в июле 2018 года.
$ ionic info
cli packages: (/usr/lib/node_modules)
@ionic/cli-utils : 1.19.2
ionic (Ionic CLI) : 3.20.0
global packages:
cordova (Cordova CLI) : 8.0.0
local packages:
@ionic/app-scripts : 3.1.8
Cordova Platforms : android 6.3.0
Ionic Framework : ionic-angular 3.9.2
System:
Android SDK Tools : 26.1.1
Node : v8.11.3
npm : 5.6.0
OS : Linux 4.15
Environment Variables:
ANDROID_HOME : /home/sebinbenjamin/Android/Sdk
Misc:
backend : pro
Я строю с помощью этой команды
$ ionic cordova build --prod --release android
Неподписанный выпуск APK создается по адресу
/home/.../app/platforms/android/build/outputs/apk/android-release-unsigned.apk
Я подписываюсь следующими командами
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore ~/app.keystore ./platforms/android/build/outputs/apk/android-release-unsigned.apk aliasname
а затем сделайте zipalign
zipalign -v 4 ./app/platforms/android/build/outputs/apk/android-release-unsigned.apk android-signed-release.apk
Этот процесс работал до недавнего времени. Теперь я получаю эту ошибку из магазина Play.
"You uploaded an APK or Android App Bundle that was signed in debug mode."
Я уверен, что подписал, и что apk находится в режиме выпуска (как указано в имени файла android-release-unsigned.apk). Пожалуйста помоги.
Я удалил все apk в выводе сборки, и это правильный, который подписывается. Я использую правильное хранилище ключей, псевдоним и пароль. Это совершенно странно.
Это действительно странно. К сожалению, когда я гуглил, у этой ошибки было очень мало результатов. Вы пробовали связаться с их службой поддержки (Play Store)?
Нет. Думаю, мне придется попробовать это.
Вместо того, чтобы делать сборку вручную, чтобы выпустить продакшн. Так можно поступить.
Создайте новый файл с именем «release-signing.properties
» и вставьте следующие строки (замените своим storePassword, keyPassword, keyAlias)
target=android-26
android.library.reference.1=CordovaLib
storePassword=yourstorePassword
keyPassword=yourkeyPassword
keyAlias=yourkeyAlias
storeFile=../../resources/keystore.jks
Поместите файл хранилища ключей по следующему пути
/YourProject/resources/keystore.jks
Поместите свой файл «release-signing.properties» по следующему пути
/YourProject/platforms/android/release-signing.properties
Запустить:
ionic cordova build android
А потом:
ionic cordova build android --prod --release
вы можете получить производственную сборку по следующему пути (вы можете использовать эту сборку в магазине Google Play)
/YourProject/platforms/android/build/outputs/apk/android-release.apk
Я делал это раньше, но где-то напортачил и забросил. Теперь я делаю команды вручную, чтобы все было просто и безопасно. Но сейчас я не думаю, что это связано с проблемой.
app / platform / android / release-signing.properties удаляется каждый раз, когда я запускаю ionic cordova build --prod --release android
для меня он работает нормально. Вышеупомянутые шаги, которые я выполняю, чтобы получить производственную сборку, все еще
Проверки в магазине Play в последнее время стали немного жестче.
Чтобы проверить наличие сертификатов отладки, Play Store просматривает ваш сертификат и проверяет, есть ли в нем "CN=Android Debug"
.
Вы можете проверить это сами, используя такую команду:
keytool -list -v -keystore keystore.jks
Да, у меня CN = Android Debug. Я должен был позаботиться о правильном создании сертификатов. Теперь я думаю, что мне нужно отправить новый для подписи приложения.
Новые сертификаты с правильным CN и другими полями работают. Срок действия сертификата должен быть не менее 25 лет. Спасибо
Когда вы генерируете
android-release-unsigned.apk
(в процессе сборки) иandroid-signed-release.apk
(в процессе подписания), убедитесь, что даты создания обоих файлов являются недавними (чтобы подтвердить, что они были сгенерированы в командах, которые вы только что запустили, иначе вы можете использовать какой-то старый APK, созданный в другой сборке). Кроме того, хранилище ключей - это тот же файл, который вы использовали при создании APK в последний раз (при успешной загрузке в Play Store)? Вы используете тот же псевдоним / пароль?