亚行-[INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION]

Sor*_*ren 5 android adb apk ubuntu-14.04

更改提取的APK中的文件时,我将其重新压缩,将扩展名更改为.apk,然后按以下方式安装:

$ adb install CustomAPK.apk 
2831 KB/s (41896599 bytes in 14.450s)
    pkg: /data/local/tmp/CustomAPK.apk
Failure [INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION]
Run Code Online (Sandbox Code Playgroud)

这是怎么回事

Sor*_*ren 5

生成密钥并对 apk 进行签名:Android 开发者网站

手动签署您的应用程序

您不需要 Android Studio 来签署您的应用程序。您可以使用 Android SDK 和 JDK 中的标准工具从命令行对您的应用程序进行签名。要从命令行在发布模式下签署应用程序:

使用 keytool 生成私钥。例如:

$ keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000

此示例提示您输入密钥库和密钥的密码,并提供密钥的专有名称字段。然后,它会将密钥库生成为名为 my-release-key.keystore 的文件。密钥库包含单个密钥,有效期为 10000 天。别名是您稍后在签署应用程序时将使用的名称。

在发布模式下编译您的应用程序以获得未签名的APK。使用 jarsigner 使用您的私钥对您的应用程序进行签名:

$ jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my-release-key.keystore my_application.apk alias_name

此示例提示您输入密钥库和密钥的密码。然后它会就地修改 APK 以对其进行签名。请注意,您可以使用不同的密钥对 APK 进行多次签名。

验证您的 APK 是否已签名。例如:

$ jarsigner -verify -verbose -certs my_application.apk

使用 zipalign 对齐最终的 APK 包。

$ zipalign -v 4 your_project_name-unaligned.apk your_project_name.apk

zipalign 确保所有未压缩数据以相对于文件开头的特定字节对齐方式开始,从而减少应用程序消耗的 RAM 量。