Обновление BlackBerry Ported Android-приложений
Недавно мы представили обновление для портированного приложения BB (Android), которое уже есть в мире ежевики. На этот раз мы добавили еще несколько разрешений в манифест приложения Android, и приложение BB было подписано с другого компьютера. Когда пользователи пытались выполнить обновление, они видят экран разрешений (перечисляет все права доступа, необходимые для приложения) с опцией принять / отклонить. Когда сообщение будет принято, появится сообщение "Инициализация, пожалуйста, подождите..", а затем просто закроет приложение. Приложение работает нормально, когда пользователи выполняют новую установку. Я попытался выполнить обновление в моем симуляторе, и это не удалось с кодом ошибки -104(который я Предположим, по этой ссылке"INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES"). Это проблема, если мы подписываем приложение с разных компьютеров? Я также наткнулся на эту ссылку, которая говорит, что это может быть ошибка.
Мы не можем позволить себе выполнить переустановку, так как пользователи могут потерять некоторые важные данные. Пожалуйста, помогите мне решить эту проблему.
4 ответа
Вы можете проверить, есть ли неподдерживаемые библиотеки, используя инструмент apkbarVerifier. Мое приложение использовало пакет com.google.android.maps. Итак, я отредактировал файл манифеста Android
< uses-library android:name="com.google.android.maps" android:required="false" />
После этого я смог развернуть свое приложение. Можете ли вы проверить, вызывались ли какие-либо такие неподдерживаемые библиотеки случайно?
Это для BB10 или Playbook? Если BB10, то первое, что я хотел бы сделать, это удалить этот выпуск из App World, изменив разрешенные устройства только на модель Porsche Design.
Затем, если вы можете подписать его снова с того же компьютера, как и раньше, и поставить эту новую версию в черновом режиме для модели, которая у вас есть. Затем вы можете протестировать его, сначала установив исходный выпуск, а затем новую версию в черновом режиме, чтобы убедиться, что она работает правильно.
Вот способ тестирования приложений перед их выпуском: https://developer.blackberry.com/blackberryworld/testing_apps_with_a_sandbox_user_account.html (вам нужно подождать несколько часов после загрузки сборки, прежде чем пытаться установить сборку в черновом режиме).
Если вы опалили ваше приложение двумя разными сертификатами, то оно не позволит вам обновить ваше текущее приложение. Вы должны сделать новое обновление или найти этот старый сертификат и попробовать то же самое.
Это не проблема, чтобы подписаться на разных компьютерах. Это проблема, если вы подписываетесь с другим сертификатом в режиме выпуска. После того, как вы подписали сертификат выпуска, вы не можете выбрать другой сертификат при помещении приложения в магазин. Это из соображений безопасности. (Вот почему очень важно создать сертификат с датой истечения в будущем.)
Источник: http://developer.android.com/tools/publishing/app-signing.html
Предупреждение. Храните файл хранилища ключей, созданный с помощью Keytool, в надежном и безопасном месте. Вы должны использовать тот же ключ, чтобы подписать будущие версии вашего приложения. Если вы повторно опубликуете свое приложение с новым ключом, Google Play сочтет его новым приложением. Дополнительную информацию о настройках, которые должны оставаться неизменными в течение всего срока службы вашего приложения, см. В блоге разработчика Android.
Поскольку весь процесс проверки сертификата является частью самого Android, логично, что вы видите это также на устройстве BlackBerry с поддержкой Android.
Когда дело доходит до подписи отладки (локально разработанные приложения, установленные на устройстве разработчика), вы можете просто удалить старое приложение (подписанное другим сертификатом) и установить новое приложение, подписанное новым сертификатом.
Возможно, вы также можете сделать это с выпуском приложений (удалить и переустановить), но я еще не пробовал.
[edit] Как уже упоминалось в комментариях, также возможно, что приложение было подписано с помощью ключа отладки (из /.android/debug.keystore), который отличается для каждого разработчика.