mtm*_*ock 138 installation android apk android-install-apk
我试图通过编辑androidmanifest.xml文件来更改我的默认/主/启动(无论你怎么称呼)活动.我所做的只是改变了android:name财产.然而,这完全打破了整个应用程序.当我尝试安装它失败并读取.
安装错误:INSTALL_PARSE_FAILED_NO_CERTIFICATES
当我试图将它改回以前的状态时,它仍然给我同样的错误......我做了什么?
Pau*_*zzi 165
我发现使用错误的签名配置时现在也会发生此错误.如上所述这里的Android 7.0引入了一个新的签名方案,V2.V2方案对整个APK进行签名而不仅仅是JAR,就像在V1方案中所做的那样.如果您只使用V2进行签名,并尝试在7.0之前的目标上安装,那么您将收到此错误,因为JAR本身未签名且7.0之前的PackageManager无法检测到V2 APK签名的存在.
要与所有目标系统兼容,请通过检查Android Studio的Generate Signed APK对话框中的两个签名版本框,确保APK已使用这两种方案进行签名,如下所示:
如果预计只有7.0目标,则不需要包含V1签名.
Chl*_*loe 52
我发现这是由我的JDK版本引起的.
我遇到了'ant'这个问题,这是由于文档中提到的这个注意事项:
http://developer.android.com/guide/publishing/app-signing.html#signapp
警告:从JDK 7开始,默认签名算法已更改,要求您在签署APK时指定签名和摘要算法(-sigalg和-digestalg).
我有JDK 7.在我的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]
Run Code Online (Sandbox Code Playgroud)
我手动签署了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)
Run Code Online (Sandbox Code Playgroud)
我发现这里回答了.
如何在不卸载的情况下处理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)
Run Code Online (Sandbox Code Playgroud)
现在我只需要在签名时修改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}" />
Run Code Online (Sandbox Code Playgroud)
Dav*_*ebb 50
你AndroidManifest.xml直接在.apk文件中编辑了吗?如果是这样,那将无效.
.apk即使您没有通过电子市场安装,如果要安装在手机上,每个Android都需要签名.开发工具通过使用开发证书进行签名来解决此问题,但.apk仍然已签名.
这样做的一个用途是设备可以判断.apk某个安装的应用程序是否有效升级,因为如果它是相同的证书.
因此,如果您对应用程序进行任何更改,则需要重建,.apk以便正确签名.
Ale*_*der 17
解决(对我来说)在keytool中使用args
-sigalg MD5withRSA -keyalg RSA -keysize 1024
Run Code Online (Sandbox Code Playgroud)
并在jarsigner中使用
-sigalg MD5withRSA -digestalg SHA1
Run Code Online (Sandbox Code Playgroud)
找到的解决方案
Raj*_*jan 11
我也面临同样的问题。首先,我使用 V2 生成构建并将其安装在运行 OS 5.1 的移动设备中,但我遇到了同样的问题。但是构建在 OS 7.0 上运行的平板电脑上运行良好。所以我用 V1 Jar 签名生成了构建,它在两个设备上都运行良好。
结论:如果您支持 android OS 7.0 以下的设备。使用 V1 jar 签名生成构建。
edd*_*dym 11
如果您添加签名配置(创建签名密钥并添加到“项目结构”>“模块”>“签名配置”)但忘记在“项目结构”>“构建变体”>“中指出,则可能会引发此错误构建类型”>“签名配置”。
签名配置字段不应为空!(见下图)否则,你会看到
"INSTALL_PARSE_FAILED_NO_CERTIFICATES...APK signature verification failed."
Run Code Online (Sandbox Code Playgroud)
如果您尝试安装release变体,则会出错。(或具有相同配置错误的另一个变体)
最近我在升级到 Android Studio 4.0 时遇到了这个错误。原因是该项目在build.gradle.
解决方案是将其删除v2SigningEnabled false或显式设置为true,这是默认值。
android {
signingConfigs {
dev {
v2SigningEnabled true
}
}
}
Run Code Online (Sandbox Code Playgroud)
大多数答案都是正确的。发生的其他一些原因是
\n\n\n\n\xe2\x96\xba 你的最小 sdk 小于设备 sdk。
\n
\n \xe2\x96\xba 您的设备中有具有相同软件包名称的旧应用程序
在我的情况下,我可以构建和运行发布版本,但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
Run Code Online (Sandbox Code Playgroud)
出现提示时,输入以下值:
这是一个丑陋但快速的解决方案:使用JDK 6而不是7.
阅读Chloe的回答后,我卸载了我的JDK 7(目前不需要它)并安装了JDK 6.修复了它.一个更好的解决方案是让ant使用JDK 6(不卸载7).也许可以更改/设置此属性:
的java.library.path
在local.properties文件中.它位于项目目录(root)中.
Android无论如何都不能与JDK 7一起使用(只有6或5),因此使ant脚本也使用JDK 6或5可能是一个很好的解决方案.
这是因为之前生成的版本和当前生成的版本在 v1(jar 签名)和 v2(完整 APK 签名)之间存在签名版本冲突,
要修复,请在“生成签名的 APK”对话框中勾选正确的签名版本
在较新的 Android Studio 3.2+ 版本中,如果您尝试运行release安装,并且您尚未定义任何签名配置,则会显示错误提示并且安装将失败。您需要做的是正确运行debug构建或设置签名配置(V1 或 V2)。
就我而言,我正在安装一个项目,MinimumSDK 比我的真实设备的 Android 版本大。我用了另一个设备,它解决了。
我的项目 MinSDK -> 24
我的手机安卓版 -> 21
| 归档时间: |
|
| 查看次数: |
200898 次 |
| 最近记录: |