Intereting Posts
Как отправлять и получать голосовые потоки с использованием RTP Сначала запустите Android Studio Project – Что следует оставить? MediaPlayer.getCurrentPosition ()> mediaPlayer.getDuration () в конце воспроизведения mp3-файла Разница между задачей и процессом в Android Круглый буфер со звуковым сопровождением для Android Продолжительность жизни электронной почты в Android Маркете Как запускается режим чтения в Firefox? Как отображать как нормальные, так и раздвоенные ActionBar? Android: HorizontalScrollView внутри ScrollView Использование навигационного ящика в старом Android Загрузка файла PDF с помощью BlockingQueue Обработка списков с помощью RxJava и дооснащение в android Android M – проверить разрешение времени выполнения – как определить, проверен ли пользователь «Никогда не спрашивать снова»? PointerIndex вне диапазона Android multitouch Плохое качество изображения после изменения размера / масштабирования растрового изображения

Android: После создания источника платформы, как подписать произвольный APK с ключом платформы?

В качестве эксперимента я хотел бы использовать ключ платформы моей настраиваемой платформы Android для подписи произвольного APK, который построен через NDK. Каков процесс для этого?

Solutions Collecting From Web of "Android: После создания источника платформы, как подписать произвольный APK с ключом платформы?"

Если у вас есть пара ключей / сертификатов платформы (.pk8 + x509.pem). Что можно найти в файле build / target / product / security в pulbic sdk.

Вы можете использовать SignApk.jar из командной строки

Java -jar SignApk.jar platform.x509.pem platform.pk8 Application.apk Application_signed.apk

Чтобы упростить автоматизацию, вы можете импортировать пару ключей / сертификатов в файл хранилища java с ключом keytool-importkeypair и использовать ant makefile или eclipse для подписания.

Keytool-importkeypair -k ~ / .android / debug.keystore -p android -pk8 platform.pk8 -cert platform.x509.pem -alias platform

Файл signapk.jar (все строчные буквы), упомянутый в ответе aprock, можно найти в prebuilts/sdk/tools/lib/signapk.jar (или out/host/linux-x86/framework/signapk.jar ).

Ниже я опишу, как управлять хранилищем ключей, используемым Eclipse и ant release .


Следующая команда принимает ключевой файл platform.pk8 и X509 сертификат platform.x509.pem и выводит расшифрованный ключевой материал в tmp.p12 . Название platformkey используется для

 Openssl pkcs8 -inform DER -nocrypt -in platform.pk8 |  \
     Openssl pkcs12 -export -in platform.x509.pem -inkey / dev / stdin \
     -name platformkey -password pass: -out tmp.p12

Eclipse и ant debug используют хранилище ключей в ~ / .android / debug.keystore, которое заблокировано паролем android . (Вы также можете указать другой файл хранилища ключей, если хотите, например ~/.android/mykeys.keystore .) Следующая команда хранит материал ключа из tmp.p12 в хранилище ключей (без пароля для ключей, если вы хотите Один, изменить -srcstorepass '' ниже):

 Keytool -importkeystore -deststorepass android -srckeystore tmp.p12 \
     -srcstoretype PKCS12 -srcstorepass '' -destkeystore ~ / .android / debug.keystore

На этом этапе вы можете удалить файл tmp.p12, потому что он больше не нужен.

Чтобы проверить, что находится в хранилище ключей, вы можете запустить следующую команду keytool (вывод, который он отображает на следующей строке):

 $ Keytool -list -keystore ~ / .android / debug.keystore -storepass android
 ...
 Platformkey, 23 ноября 2013 г., PrivateKeyEntry, 
 Сертификат отпечатка пальца (SHA1): 12:34:56: (снято): AB: CD: EF

Когда вам больше не нужен ключ, его можно удалить с помощью:

 Keytool -delete -keystore ~ / .android / debug.keystore -storepass android -alias platformkey

В файле local.properties поместите (если вы опустите key.*.password local.properties key.*.password , вам нужно вводить его каждый раз, когда вы подписываете APK):

 key.store=${user.home}/.android/debug.keystore key.alias=platformkey key.store.password=android key.alias.password= 

Теперь вы можете запустить ant release чтобы подписать APK, используя ключ платформы, который вы сохранили в хранилище ключей.