Я пытался использовать jarsigner.exe и adb.exe, чтобы вручную подписать пакет Android и установить его в эмуляторе API V8. Я создал простой проект HelloAndroid, и он сгенерирует подписанный HelloAndroid.apk, используя debug.keystore, расположенный в каталоге .android пользователя. При запуске из Eclipse он без проблем собирает и устанавливает apk на эмулятор.
Я использовал инструменты Android для экспорта неподписанного пакета приложения в отдельный каталог. Я подписал пакет и zipAligned и использовал adb для его установки, но получил сообщение об ошибке:
Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES]
Я использовал следующую команду, чтобы подписать его.
jarsigner -verbose -keystore c:\users\jhwong\.android\debug.keystore
-storepass android -keypass android -digestalg SHA-1 -sigalg SHA1withRSA
-sigfile CERT -signedjar temp\HelloWorld2.apk
temp\HelloWorld.unsigned.apk androiddebugkey
adding: META-INF/MANIFEST.MF
adding: META-INF/CERT.SF
adding: META-INF/CERT.RSA
signing: res/layout/main.xml
signing: AndroidManifest.xml
signing: resources.arsc
signing: res/drawable-hdpi/icon.png
signing: res/drawable-ldpi/icon.png
signing: res/drawable-mdpi/icon.png
signing: classes.dex
Это не дало мне никаких ошибок и просто чтобы убедиться, что я запустил:
jarsigner -verify -verbose temp\HelloWorld2.apk
Он показал, что jar был проверен, и каждый файл подписан и является частью манифеста.
Затем использовал adb install -r temp \ HelloWorld3.apk
.
Я видел несколько связанных тем и статей, предлагающих эти направления, но меня озадачивает, почему он не работает вручную, стихи с использованием Eclipse для сборки подписанного пакета. Я даже взял пакет, созданный из Eclipse, и смог использовать adb.exe для его установки, поэтому я сузил его до подписания пакета. Я пробовал хранилища ключей, которые я создал с помощью keytool, но они тоже не работали, поэтому я попробовал debug.keystore.
Буду признателен за любой совет, если они заметят что-нибудь не так с моим кодом jarsigner.