Что установить, разобрать не удалось, никаких ошибок сертификатов?
Я пытался изменить свою активность по умолчанию/main/startup (как бы Вы ее ни называли), отредактировав . Все, что я сделал, это изменить android:name
собственность. однако это полностью сломало все приложение. когда я пытаюсь установить его не удается, и читает.
ошибка установки: INSTALL_PARSE_FAILED_NO_CERTIFICATES
когда я попытался изменить его обратно в предыдущее состояние, он все еще давал мне ту же ошибку... Что я наделал?
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 диалоговое окно как показано ниже:
Если ожидаются только цели 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
решение найдено в
большую часть времени решение этой ошибки очень просто:
- удалите apk
- очистите свой Android-проект
- создайте свой Android-проект
- установить / запустить 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
- название организации: неизвестный
- город: неизвестный
- штат или провинция:неизвестный
- код страны: нас
Это может произойти, если вы попытаетесь включить
.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 " />