Почему сборка apk Ionic 3 с '--prod --release android' выдает ошибку Google PlayStore, что apk был подписан в режиме отладки?

Моя сборка приложения 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). Пожалуйста помоги.

Когда вы генерируете android-release-unsigned.apk (в процессе сборки) и android-signed-release.apk (в процессе подписания), убедитесь, что даты создания обоих файлов являются недавними (чтобы подтвердить, что они были сгенерированы в командах, которые вы только что запустили, иначе вы можете использовать какой-то старый APK, созданный в другой сборке). Кроме того, хранилище ключей - это тот же файл, который вы использовали при создании APK в последний раз (при успешной загрузке в Play Store)? Вы используете тот же псевдоним / пароль?

Lucas Basquerotto 09.08.2018 23:25

Я удалил все apk в выводе сборки, и это правильный, который подписывается. Я использую правильное хранилище ключей, псевдоним и пароль. Это совершенно странно.

Sebin Benjamin 09.08.2018 23:30

Это действительно странно. К сожалению, когда я гуглил, у этой ошибки было очень мало результатов. Вы пробовали связаться с их службой поддержки (Play Store)?

Lucas Basquerotto 09.08.2018 23:43

Нет. Думаю, мне придется попробовать это.

Sebin Benjamin 10.08.2018 08:11
2
4
2 337
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вместо того, чтобы делать сборку вручную, чтобы выпустить продакшн. Так можно поступить.

  1. Создайте новый файл с именем «release-signing.properties» и вставьте следующие строки (замените своим storePassword, keyPassword, keyAlias)

    target=android-26
    android.library.reference.1=CordovaLib
    storePassword=yourstorePassword
    keyPassword=yourkeyPassword
    keyAlias=yourkeyAlias
    storeFile=../../resources/keystore.jks
    
  2. Поместите файл хранилища ключей по следующему пути

    /YourProject/resources/keystore.jks
    
  3. Поместите свой файл «release-signing.properties» по следующему пути

    /YourProject/platforms/android/release-signing.properties
    
  4. Запустить:

    ionic cordova build android
    
  5. А потом:

    ionic cordova build android --prod --release
    

вы можете получить производственную сборку по следующему пути (вы можете использовать эту сборку в магазине Google Play)

/YourProject/platforms/android/build/outputs/apk/android-release.apk

Я делал это раньше, но где-то напортачил и забросил. Теперь я делаю команды вручную, чтобы все было просто и безопасно. Но сейчас я не думаю, что это связано с проблемой.

Sebin Benjamin 09.08.2018 19:43

app / platform / android / release-signing.properties удаляется каждый раз, когда я запускаю ionic cordova build --prod --release android

Sebin Benjamin 16.08.2018 09:30

для меня он работает нормально. Вышеупомянутые шаги, которые я выполняю, чтобы получить производственную сборку, все еще

Anandh Sp 16.08.2018 09:46
Ответ принят как подходящий

Проверки в магазине Play в последнее время стали немного жестче. Чтобы проверить наличие сертификатов отладки, Play Store просматривает ваш сертификат и проверяет, есть ли в нем "CN=Android Debug". Вы можете проверить это сами, используя такую ​​команду:

keytool -list -v -keystore keystore.jks

Да, у меня CN = Android Debug. Я должен был позаботиться о правильном создании сертификатов. Теперь я думаю, что мне нужно отправить новый для подписи приложения.

Sebin Benjamin 10.08.2018 11:24

Новые сертификаты с правильным CN и другими полями работают. Срок действия сертификата должен быть не менее 25 лет. Спасибо

Sebin Benjamin 16.08.2018 09:11

Другие вопросы по теме