Что установить, разобрать не удалось, никаких ошибок сертификатов?


Я пытался изменить свою активность по умолчанию/main/startup (как бы Вы ее ни называли), отредактировав . Все, что я сделал, это изменить android:name собственность. однако это полностью сломало все приложение. когда я пытаюсь установить его не удается, и читает.

ошибка установки: INSTALL_PARSE_FAILED_NO_CERTIFICATES

когда я попытался изменить его обратно в предыдущее состояние, он все еще давал мне ту же ошибку... Что я наделал?

15 102

15 ответов:

вы редактировали AndroidManifest.xml непосредственно в ? Если так, то это не сработает.

Каждый Android .apk должен быть подписан, если он будет установлен на телефоне, даже если вы не устанавливаете через рынок. Средства разработки работают вокруг этого, подписывая сертификат разработки, но .apk все-таки подписан.

одно использование этого так устройство может сказать, если .apk является допустимым обновлением для установленного приложения, так как если это сертификаты будут одинаковыми.

поэтому, если вы внесете какие-либо изменения в свое приложение, вам нужно будет перестроить .apk таким образом, он получает подпись правильно.

Я обнаружил, что эта ошибка теперь также может возникать при использовании неправильной конфигурации подписи. Как описано здесь, Android 7.0 вводит новую схему подписи, V2. Схема V2 подписывает весь APK, а не только банку, как это делается в схеме V1. Если вы подписываете только V2 и пытаетесь установить на цель pre-7.0, вы получите эту ошибку, так как сами банки не подписаны, а pre-7.0 PackageManager не удается обнаружить наличие V2 APK подпись.

чтобы быть совместимым со всеми целевыми системами, убедитесь, что APK подписан с обеими схемами, проверив оба поля версии подписи в Android Studio создать подписанный APK диалоговое окно как показано ниже:

enter image description here

Если ожидаются только цели 7.0, то нет необходимости включать подпись V1.

я обнаружил, что это было вызвано моей версией JDK.

у меня была эта проблема с 'ant' , и это было связано с этим предостережением, упомянутым в документации:

http://developer.android.com/guide/publishing/app-signing.html#signapp

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

у меня есть JDK 7. В моем муравьином журнале я использовал -v для многословия, и он показал

$ ant -Dadb.device.arg=-d -v release install
[signjar] Executing 'C:\Program Files\Java\jdk1.7.0_03\bin\jarsigner.exe' with arguments:
[signjar] '-keystore'
[signjar] 'C:\cygwin\home\Chloe\pairfinder\release.keystore'
[signjar] '-signedjar'
[signjar] 'C:\cygwin\home\Chloe\pairfinder\bin\PairFinder-release-unaligned.apk'
[signjar] 'C:\cygwin\home\Chloe\pairfinder\bin\PairFinder-release-unsigned.apk'
[signjar] 'mykey'
 [exec]     pkg: /data/local/tmp/PairFinder-release.apk
 [exec] Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES]

Я подписал банку вручную и zipaligned его, но он дал немного другую ошибку:

$ "$JAVA_HOME"/bin/jarsigner -sigalg MD5withRSA -digestalg SHA1 -keystore release.keystore -signedjar bin/PairFinder-release-unaligned.apk bin/PairFinder-release-unsigned.apk mykey
$ zipalign -v -f 4 bin/PairFinder-release-unaligned.apk bin/PairFinder-release.apk
$ adb -d install -r bin/PairFinder-release.apk
        pkg: /data/local/tmp/PairFinder-release.apk
Failure [INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES]
641 KB/s (52620 bytes in 0.080s)

Я нашел, что ответил Здесь.

как работать с INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES без деинсталляции

мне нужно было только удалить его, а затем он работал!

$ adb -d uninstall com.kizbit.pairfinder
Success
$ adb -d install -r bin/PairFinder-release.apk
        pkg: /data/local/tmp/PairFinder-release.apk
Success
641 KB/s (52620 bytes in 0.080s)

теперь мне нужно только изменения.xml для использования этих параметров при подписании!

хорошо вот это: C:\Program файлы\Java\android-sdk\tools\ant\build.xml

            <signjar
                    sigalg="MD5withRSA"
                    digestalg="SHA1"
                    jar="${out.packaged.file}"
                    signedjar="${out.unaligned.file}"
                    keystore="${key.store}"
                    storepass="${key.store.password}"
                    alias="${key.alias}"
                    keypass="${key.alias.password}"
                    verbose="${verbose}" />

решена (для меня) с помощью в keytool args

-sigalg MD5withRSA -keyalg RSA -keysize 1024

и использование в jarsigner

-sigalg MD5withRSA -digestalg SHA1

решение найдено в

какие питфалы существуют для подписания Android APK?

большую часть времени решение этой ошибки очень просто:

  1. удалите apk
  2. очистите свой Android-проект
  3. создайте свой Android-проект
  4. установить / запустить apk

это уродливое, но быстрое решение: используйте JDK 6 вместо 7.

после прочтения ответа Хлои я удалил свой JDK 7 (в настоящее время он не нужен) и установил JDK 6. Это все исправило. Лучшее решение сделало бы ant использует JDK 6 (без удаления 7). Возможно возможное изменение / настройка этого свойства:

java.библиотека.путь

в местный.файл свойств. Он находится в каталоге проекта (root).

Android не работает с JDK 7 в любом случае (только 6 или 5), поэтому сделайте так, чтобы сценарий ant также использовал JDK 6 или 5, вероятно, хорошее решение.

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

решение было удалить мой debug.keystore файл и пусть ADT воссоздать его. Очевидно, срок его действия истек.

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

keytool -genkey -v -keystore debug.keystore -alias androiddebugkey -storepass android -keypass android -keyalg RSA -validity 14000

при появлении запроса введите эти значения:

  • имя и фамилия: Android Debug
  • подразделение: Android
  • название организации: неизвестный
  • город: неизвестный
  • штат или провинция:неизвестный
  • код страны: нас

настройка переменной среды JAVA_HOME в JDK 5 или 6 (вместо JDK 7) Исправлена ошибка.

Это может произойти, если вы попытаетесь включить .jar библиотека, которая содержит .

  • если это чистая Java убедитесь, что вы не включаете его в .экспортировать банку
  • если это не чистая Java (то есть это проект Android), то вы должны включить его в качестве проекта Библиотеки

его, потому что ранее сгенерированная сборка и текущий имеет конфликт в версии подписи между v1(подпись jar) и v2(полная подпись APK),

чтобы исправить галочку правильную версию подписи в разделе создать подписанный диалог APK

через некоторое время и несколько онлайн-потоков по этому вопросу мне удалось исправить мой проект.

Это в основном принимая во внимание последние файлы (может быть изображения или макеты), что вы положили в. Если вы удалите их, это сработает, и вы можете снова построить свой проект.

У меня была такая ошибка в моей консоли Eclipse. Оказывается, у меня было две банки с одинаковым содержанием, но разными именами, и они конфликтовали друг с другом. Я просто удалил один из них и сумел установить приложение на устройство.

Я получаю эту ошибку, потому что я выпустил, что мой ant release не удалось, потому что у меня закончилось место на диске.

Я получил эту ошибку, когда пытался установить проект Xamarin, построенный против Android N preview на телефоне с api v23. Решение не делать этого.

другой способ получить эту ошибку, чтобы построить с помощью ant на macOS и есть файл значка Finder (Icon\r) в исходном дереве приложения. Оказывается jarsigner не может справиться с возвратом каретки в имени файла и, хотя он будет утверждать, что подпись действительна, если вы -verify APK, это всегда приводит к APK, который не будет установлен на устройстве. По иронии судьбы, плагин Google Drive Finder является отличным источником файлов значков Finder.

решение отстранить файлы (которые в любом случае бесполезны в APK) с таким спецификатором в fileset:

    <exclude name="**/Icon&#13;" />