2011-08-19 4 views
13

Как я могу переписать андроид apk. Я сослался на этот ответ Can I re-sign an .apk with a different certificate than what it came with?Повторно подписать Android Apk

но застрял в ошибке Android Manifest.xml.

+0

на каком этапе? также, вы уверены, что манифест все еще находится в apk? – njzk2

+0

Похоже, вы удалили AndroidManifest.xml из корня файла APK, а не только META-INF. Как и в оригинальном вопросе. – Blundell

+1

Возможный дубликат [Могу ли я отказаться от .apk с другим сертификатом, чем то, с чем он пришел?] (Http://stackoverflow.com/questions/3267216/can-i-resign-an-apk-with-a-different -certificate-than-what-it-come-with) – Blundell

ответ

25

Друзья Я нашел работу вокруг этого. Откажитесь от Android Apk, используя debug.keystore по умолчанию для Android.

  1. ** Откройте apk в браузере winzip, а не распакуйте его в папку.

  2. Удалить META-INF папку .zipping снова не требуется. **

  3. Jarsigner -verbose -keystore debug.keystore yourapk.apk aliasname

    **Example** `-Jarsigner –verbose –keystore debug.keystore androiddebugkey.` 
    
  4. jarsigner -verify yourapk.apk

  5. zipalign -v 4 yourapk.apk signedapk.apk

Шаг 1 и 2 был местом, где я делал неправильно, что дало мне ошибку androidmanifest xml missing.

+0

После шага 3 я получаю сообщение «jar verified». и Предупреждение: В этой банке содержатся записи, цепочка сертификатов которых не проверена. Как преодолеть это предупреждение ??? – EnthuDeveloper

+0

jarsinger утверждает о самоподписанных сертификатах. Вы можете избежать этого предупреждения, если используете сертификат, полученный от Verisign, GoDaddy или любого другого центра сертификации. –

+0

Пароль по умолчанию для alias androiddebugkey - это «android» –

5

Перейти к JDK 1.6.0_43 решила проблему.

Чтобы подписать APK-с использованием JDK 1.7 приходится использовать эти ключевые слова «-sigalg MD5withRSA -digestalg SHA1»

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

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

+0

, почему вы можете использовать «jarsigner -verbose -sigalg MD5withRSA -digestalg SHA1 -keystore [keystorefile] [originalapk] alias_name'? –

+0

FYI md5 был полностью отключен Oracle и больше не поддерживается https://blogs.oracle.com/java-platform-group/oracle-jre-will-no-longer-trust-md5-signed-code-by- по умолчанию – Gi0rgi0s

Смежные вопросы