Intereting Posts
Проверить, чтобы приложение Twitter было зарегистрировано на Android Клавиатура перекрывает EditText при нажатии Как назвать мой пакет android, если у меня нет сайта Правильный способ конвертировать между Bitmap и Mat в OpenCV на Android? Android: макет с закругленной тенью Какова концепция ожидающего намерения? Почему и когда мы используем Ожидание намерения? Удержание браузера и возврат к правильной активности (закрытие открытой вкладки) Когда необходимо выполнить invalidate () в представлении? Именованные атрибуты в attrs.xml для пользовательского представления WearableListenerService, onDataChanged () не вызывается Android WebView Воспроизведение видео HTML5 / h.264 / mp4, как попасть в MediaPlayer Анализатор SAX получает атрибут от endelement Явное обращение к намерению к динамически широковещательному приемнику Как группировать элементы из базы данных и отображать их – Android Устаревшая альтернатива BitmapDrawable

Могу ли я повторно подписать .apk с другим сертификатом, чем то, с чем он пришел?

Если у меня есть apk, я могу удалить текущую подпись, а некоторые – как переписать ее с другим файлом .keystore и все еще установить приложение?

Обновление : мне удалось заставить его работать с решением Jorgesys и где я перепутал раньше, так это то, что я распаковал файл .apk, а затем перекрестил его после удаления папки META-INF и изменил расширение файла обратно на .apk. Я должен был просто открыть его с помощью winzip и удалить папку внутри winzip.

Solutions Collecting From Web of "Могу ли я повторно подписать .apk с другим сертификатом, чем то, с чем он пришел?"

попробуй это

1) Измените расширение вашего .apk на .zip

2) Откройте и удалите папку META-INF

3) Измените расширение на .apk

4) Используйте jarsigner и zipalign с вашим новым хранилищем ключей.

Надеюсь, поможет

Если вы ищете быстрое решение, вы можете использовать скрипт apk-resigner с открытым исходным кодом

https://github.com/onbiron/apk-resigner

Все, что вам нужно сделать, это загрузить скрипт и просто ввести:

 ./signapk.sh application.apk keystore key-pass alias 

Кроме того, вы можете использовать apksigner командной строки apksigner Google, который доступен в версии 24.0.3 и выше.

 apksigner sign --ks release.jks application.apk 

Дополнительную информацию об инструменте apksigner вы можете найти в https://developer.android.com/studio/command-line/apksigner.html.

Подписание для выпуска: $ 1.apk -> $ 1_release.apk «GeneralMills & GoogleApps # 2012» Шаг 1: Удаление любого предыдущего подписания Изменение расширения вашего .apk на .zip Открытие и удаление папки META-INF Изменение расширения на .apk или Command : • zip [originalapk] Пример: • zip «$ 1» .apk -d

Шаг 2. Подписание с помощью release.keystore .. Команда: • jarsigner -verbose -keystore [keystorefile] -signedjar [unalignedapk] [originalapk] alias_name Пример: • C: \ Program Files \ Java \ jdk1.6.0_43 \ bin> jarsigner – Verbose -keystore release.keystore -signedjar "$ 1" _unaligned.apk "$ 1" .apk release

Шаг 3: Выравнивание команды: • zipalign -f 4 [unalignedapk] [releaseapk] Пример: • C: \ Users \ G535940 \ Downloads \ adt-bundle-windows-x86 \ adt-bundle-windows-x86 \ sdk \ too ls> Zipalign -f 4 "$ 1" _unaligned.apk "$ 1" _release.apk

Шаг 4: Очистка команды: • rm 4 [unalignedapk] Пример: • rm "$ 1" _unaligned.apk

Дополнительные команды могут помочь:

  1. Чтобы создать новый ключ с keytool keytool -genkey -alias -keystore

  2. Список ключей keytool -list -keystore

Команда для генерации keyhash для функций Facebook

Команда: • keytool -exportcert -alias alias_name -keystore [keystorefile] | Openssl sha1 -binary | Openssl base64

Пример: • C: \ Program Files \ Java \ jdk1.6.0_43 \ bin> keytool -exportcert -alias release -keyst ore release.keystore | открывает l sha1 -binary | Openssl base64

Примечание. Чтобы подписать наши апки, мы понизили рейтинг JDK с 1,7 до 1,6,04.

Причина: с JDK 7 алгоритм подписывания по умолчанию изменился, и вам нужно указать алгоритмы подписи и дайджеста (-sigalg и -digestalg), когда вы подписываете APK.

Команда: jarsigner -verbose -sigalg MD5withRSA -digestalg SHA1 -keystore [keystorefile] [originalapk] alias_name

 zip -d my_application.apk META-INF/\* keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000 jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my-release-key.keystore my_application.apk alias_name zipalign -v 4 your_project_name-unaligned.apk your_project_name.apk 

Обратите внимание, что если вы используете схему подписи v2 (которая будет автоматически, если вы используете инструменты сборки 24.0.3+ в AS), вы не можете просто удалить папку META-INF из APK, так как v2 добавляет свои данные подписи в мета-блок zip.

Новый apksigner от Google, представленный в сборке инструментов 24.03 (Android 7), однако может отказаться от APK. Вы можете просто повторить команду подписи для подписания с новым хранилищем ключей / сертификатом (старые будут удалены).

 apksigner sign --ks keystore.jks signed_app.apk 

Бесстыдный штепсель: если вам нужен более простой инструмент, который может подписать несколько apks и лучше использовать выходные данные журнала: https://github.com/patrickfav/uber-apk-signer (использует apksigner.jar Google в фоновом режиме)

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

Некоторые из файлов внутри .apk должны оставаться сохраненными (сжатие 0%). Это связано с тем, что Android будет использовать сопоставление памяти (mmap) для чтения содержимого без распаковки в память. Такими файлами являются .ogg и некоторые значки.

Предполагая, что ваши ключи хранятся в keys.keystore , вы можете запустить:

 $ keytool -list -keystore keys.keystore Your keystore contains 1 entry your_key_alias, Jan 3, 2013, PrivateKeyEntry, Certificate fingerprint (SHA1): 8C:C3:6A:DC:7E:B6:12:F1:4C:D5:EE:F1:AE:17:FB:90:89:73:50:53 

Для определения псевдонима вашего ключа. Затем запустите:

 zip -d your_app.apk "META-INF/*" jarsigner -verbose -keystore keys.keystore \ -sigalg MD5withRSA -digestalg SHA1 -sigfile CERT \ your_app.apk your_key_alias 

Для повторной подписи your_app.apk с ключом с именем your_key_alias .

-sigfile CERT параметр -sigfile CERT дополнительных -sigfile CERT кажется необходимым с JDK 8.