我试图通过编辑androidmanifest.xml
文件来更改我的default / main / startup(无论您叫什么)活动。我所做的就是改变android:name
财产。但是,这完全破坏了整个应用程序。当我尝试安装时失败并读取。
安装错误:INSTALL_PARSE_FAILED_NO_CERTIFICATES
当我尝试将其更改回其先前的状态时,它仍然给我相同的错误...我做了什么?
我试图通过编辑androidmanifest.xml
文件来更改我的default / main / startup(无论您叫什么)活动。我所做的就是改变android:name
财产。但是,这完全破坏了整个应用程序。当我尝试安装时失败并读取。
安装错误:INSTALL_PARSE_FAILED_NO_CERTIFICATES
当我尝试将其更改回其先前的状态时,它仍然给我相同的错误...我做了什么?
Answers:
您是否AndroidManifest.xml
直接在.apk
文件中编辑了?如果是这样,那将行不通。
.apk
即使不是要通过Market安装,每个Android都需要签名才能安装在手机上。开发工具通过使用开发证书进行签名来解决此问题,但.apk
仍在签名。
这样做的一种用途是使设备可以知道an .apk
对已安装的应用程序是否有效升级,因为如果是,则证书将相同。
因此,如果您对应用程序进行了任何更改,则都需要重新构建该应用程序,.apk
以便正确签名。
flutter clean
再次运行并运行/调试!此操作与上面的解决方案相似,因为它会清理构建文件夹并在运行/调试时再次重建构建文件!
我发现使用错误的签名配置时现在也可能发生此错误。如上所述这里的Android 7.0引入了一个新的签名方案,V2。V2方案对整个APK进行签名,而不是仅签署JAR,就像在V1方案中所做的那样。如果仅使用V2进行签名,并尝试安装在7.0之前的目标上,则将收到此错误,因为JAR本身未签名并且7.0之前的PackageManager无法检测到V2 APK签名的存在。
为了与所有目标系统兼容,请在Android Studio的“ 生成签名的APK”对话框中选中两个签名版本框,以确保使用两种方案对APK进行签名,如下所示:
如果仅预期7.0个目标,则无需包括V1签名。
我发现这是由我的JDK版本引起的。
我在使用'ant'时遇到了这个问题,这是由于文档中提到的CAUTION:
http://developer.android.com/guide/publishing/app-signing.html#signapp
注意:从JDK 7开始,默认的签名算法已更改,要求您在签名APK时指定签名并摘要算法(-sigalg和-digestalg)。
我有JDK7。在我的Ant日志中,我用-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上运行的Tablet上,构建工作正常。因此,我生成了带有V1 Jar签名的内部版本,并且在两个设备上都能正常工作。
结论:如果您支持android OS 7.0以下的设备。使用V1 jar签名生成生成。
就我而言,我可以构建并运行发行版,但是得到了 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
出现提示时,输入以下值:
这是因为先前生成的内部版本和当前版本在v1(jar签名)和v2(完整APK签名)之间的签名版本中存在冲突,
要在“生成签名的APK”对话框中修复刻度正确的签名版本
最近,我在升级到Android Studio 4.0时遇到此错误。原因是该项目在中的签名配置中禁用了V2签名build.gradle
。
解决方案是删除v2SigningEnabled false
或将其显式设置为true
,这是默认值。
android {
signingConfigs {
dev {
v2SigningEnabled true
}
}
}
在较新的Android Studio 3.2+版本中,如果您尝试运行release
安装,并且尚未定义任何签名配置,则它将显示错误提示,并且安装将失败。您需要做的是运行debug
构建或正确设置签名配置(V1或V2)。
大多数答案是正确的。发生的其他一些原因是
►您的最小SDK小于设备SDK。
►您的设备中的旧应用程序具有相同的软件包名称
我的Eclipse控制台出现此错误。原来,我有两个内容相同但名称不同的罐子,它们彼此冲突。我只是删除了其中之一,并设法在设备上安装了该应用程序。
首先,只需尝试这样做:
INSTALL_PARSE_FAILED_NO_CERTIFICATES
是-103
可以通过adb log
(src)获取/查看的错误,例如。D/PackageInstaller(21320): Installation error code: -103