androidmanifest.xml
파일 을 편집하여 기본 / 기본 / 시작 (당신이 무엇이든간에) 활동을 변경하려고했습니다 . 내가 한 것은 android:name
재산 을 바꾸는 것이었다 . 그러나 이것은 전체 앱을 완전히 파괴했습니다. 설치하려고하면 실패하고 읽습니다.
설치 오류 : INSTALL_PARSE_FAILED_NO_CERTIFICATES
이전 상태로 되돌리려 고했지만 여전히 같은 오류가 발생했습니다. 어떻게해야합니까?
androidmanifest.xml
파일 을 편집하여 기본 / 기본 / 시작 (당신이 무엇이든간에) 활동을 변경하려고했습니다 . 내가 한 것은 android:name
재산 을 바꾸는 것이었다 . 그러나 이것은 전체 앱을 완전히 파괴했습니다. 설치하려고하면 실패하고 읽습니다.
설치 오류 : INSTALL_PARSE_FAILED_NO_CERTIFICATES
이전 상태로 되돌리려 고했지만 여전히 같은 오류가 발생했습니다. 어떻게해야합니까?
답변:
파일 에서 AndroidManifest.xml
직접 편집 했습니까 .apk
? 그렇다면 작동하지 않습니다.
.apk
마켓을 통해 설치하지 않더라도 휴대 전화에 설치하려는 경우 모든 Android에 서명해야합니다 . 개발 도구는 개발 인증서로 서명하여이 문제를 해결하지만 .apk
여전히 서명되어 있습니다.
이를 사용 .apk
하면 인증서가 동일 하므로 장치가 설치된 응용 프로그램의 유효한 업그레이드 인지 알 수 있습니다 .
따라서 앱을 전혀 변경하지 않으면 다시 .apk
서명 해야 앱 이 올바르게 서명됩니다.
flutter clean
다시 실행 하고 디버그하십시오! 이 작업은 빌드 폴더를 정리하고 실행 / 디버그에서 빌드 파일을 다시 빌드하기 때문에 위의 솔루션과 유사합니다!
잘못된 서명 구성을 사용할 때이 오류가 발생할 수도 있음을 알았습니다. 여기 에 설명 된대로 Android 7.0에는 새로운 서명 체계 V2가 도입되었습니다 . V2 체계는 V1 체계에서와 같이 JAR이 아닌 전체 APK에 서명합니다. V2만으로 서명하고 7.0 이전 대상에 설치하려고하면 JAR 자체가 서명되지 않고 7.0 이전 PackageManager 가 V2 APK 서명이 있는지 감지 할 수 없으므로이 오류가 발생 합니다.
모든 대상 시스템과 호환되도록 다음과 같이 Android Studio의 서명 된 APK 생성 대화 상자에서 두 서명 버전 상자를 모두 확인하여 APK가 두 구성표로 서명되어 있는지 확인 하십시오.
7.0 대상 만 예상되는 경우 V1 서명을 포함 할 필요가 없습니다.
내 JDK 버전으로 인한 것입니다.
'ant'에 대해이 문제가 발생했으며 설명서에 언급 된주의 때문에 발생했습니다.
http://developer.android.com/guide/publishing/app-signing.html#signapp
주의 : JDK 7부터 기본 서명 알고리즘이 변경되었으므로 APK에 서명 할 때 서명 및 다이제스트 알고리즘 (-sigalg 및 -digestalg)을 지정해야합니다.
JDK 7이 있습니다. Ant 로그에서 상세 -v를 -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]
JAR에 수동으로 서명하고 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)
이제 서명 할 때 해당 옵션을 사용하도록 build.xml 만 수정하면됩니다!
여기에 C : \ Program Files \ 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
해결책은
나는 또한 같은 문제에 직면했다. 먼저 V2를 사용하여 빌드를 생성하고 OS 5.1에서 실행되는 모바일 장치에 설치했으며 동일한 문제가 발생했습니다. 그러나 OS 7.0에서 실행되는 태블릿에서는 빌드가 제대로 작동했습니다. 그래서 V1 Jar 서명으로 빌드를 생성했으며 두 장치에서 모두 잘 작동했습니다.
결론 : Android OS 7.0 이하의 장치를 지원하는 경우 V1 jar 서명을 사용하여 빌드를 생성하십시오.
필자의 경우 릴리스 빌드를 빌드하고 실행할 수 있지만 INSTALL_PARSE_FAILED_NO_CERTIFICATES
디버그 빌드를 수행하려고 할 때 오류가 발생했습니다.
해결책은 내 debug.keystore
파일 을 삭제 하고 ADT가 다시 만들도록하는 것입니다. 분명히 만료되었습니다.
보다 장기적인 해결책은 debug.keystore
ADT가 작성하지 않고 1 년 후에 만료되지 않는 것을 명시 적으로 작성하는 것입니다. 이를 수행하는 명령은 다음과 같습니다.
keytool -genkey -v -keystore debug.keystore -alias androiddebugkey -storepass android -keypass android -keyalg RSA -validity 14000
프롬프트가 표시되면 다음 값을 입력하십시오.
이것은 추악하지만 빠른 솔루션입니다. 7 대신 JDK 6을 사용하십시오.
Chloe의 답변을 읽은 후 JDK 7을 제거하고 (현재는 필요하지 않음) JDK 6을 설치했습니다. 더 나은 해결책은 개미가 JDK 6을 사용하도록 만들 것입니다 (7을 제거하지 않고). 이 속성을 변경 / 설정할 수 있습니다.
java.library.path
local.properties 파일에서. 프로젝트 디렉토리 (루트)에 있습니다.
안드로이드는 어쨌든 JDK 7에서 작동하지 않으므로 (6 또는 5 만) 개미 스크립트가 JDK 6 또는 5를 사용하도록하십시오. 아마도 좋은 해결책입니다.
최근에 Android Studio 4.0으로 업그레이드하는 동안이 오류가 발생했습니다. 의 서명 구성에서 프로젝트의 V2 서명이 비활성화 되었기 때문입니다 build.gradle
.
해결책은 그것을 제거 v2SigningEnabled false
하거나 명시 적으로 설정 true
하는 것입니다. 이것이 기본값입니다.
android {
signingConfigs {
dev {
v2SigningEnabled true
}
}
}
대부분의 답변은 사실입니다. 발생하는 또 다른 이유는
► 최소 SDK는 장치 SDK보다 작습니다.
► 장치에 동일한 패키지 이름을 가진 이전 응용 프로그램이 있습니다.
Eclipse Console에서이 오류가 발생했습니다. 내용이 같지만 이름이 다른 두 개의 항아리가 있고 서로 충돌하는 것으로 나타났습니다. 방금 그들 중 하나를 삭제하고 장치에 앱을 설치할 수있었습니다.
이 오류를 얻는 또 다른 방법은 ant
macOS 에서 빌드 Icon\r
하고 앱의 소스 트리에 Finder 아이콘 파일 ( )을 두는 것 입니다. 이 나타납니다 jarsigner
당신이 경우 서명이 유효한 주장 하겠지만, 파일 이름에 캐리지 리턴 대처할 수없고, -verify
APK는, 항상 장치에 설치 실 거예요 APK를 초래한다. 아이러니하게도 Google Drive Finder 플러그인은 Finder 아이콘 파일의 훌륭한 소스입니다.
해결책은 다음과 같이 지정자를 사용하여 문제가되는 파일 (Apk에서 쓸모없는 파일)을 제외시키는 것입니다 fileset
.
<exclude name="**/Icon " />
먼저 그 일을 시도하십시오.
INSTALL_PARSE_FAILED_NO_CERTIFICATES
오류-103
입니다 .adb log
D/PackageInstaller(21320): Installation error code: -103