Я пытаюсь использовать 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
Он показал, что банк был проверен, и каждый файл подписан и часть манифеста.
Я запустил zipalign -v 4 temp\HelloWorld2.apk temp\HelloWorld3.apk
, который закончил без ошибки.
Затем используется adb install -r temp\HelloWorld3.apk
.
Я видел несколько связанных потоков и статей, предлагающих эти указания, но я озадачен тем, почему он не работает вручную, используя Eclipse для создания подписанного пакета. Я даже взял пакет, созданный из Eclipse, и смог использовать adb.exe для его установки, поэтому я сузил его до подписания пакета. Я пробовал хранилища ключей, которые я создал из keytool, но они не работали, поэтому я попробовал debug.keystore.
Я был бы признателен за любые советы, если они заметили что-то не так с моим кодом jarsigner.