java - 安卓应用程序未安装

标签 java android eclipse

我有一个包含一些 JNI 库的项目,该应用程序可以很好地处理未签名的 APK,但是当我使用向导生成签名的 APK 时,该应用程序无法安装并出现错误“应用程序未安装”。

需要明确的是,这不是典型的“卸载带有调试签名的旧 APK”案例,我已经这样做了。难道是eclipse的导出向导出错了?

我正在使用 Eclipse,就像我说的,其中有一些 JNI 库,除此之外,没有什么不常见的,只是一些库项目。

最佳答案

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

使用 keytool 生成私钥。例如:

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

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

在 Release模式下编译您的应用以获得未签名的 APK。

使用 jarsigner 使用私钥对您的应用程序进行签名:

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

此示例提示您输入 keystore 和 key 的密码。然后它会就地修改 APK 以对其进行签名。 请注意,您可以使用不同的 key 对 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 量。

关于java - 安卓应用程序未安装,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30485052/

相关文章:

java - 我的 JFrame 中什么也没有出现

android - 未找到启动器 Activity 。!启动只会同步设备上的应用程序包。!

java - Scala for Android 的性能

Android 12 - 模拟器 (Xamarin.Android)

python:如何调试多进程? (使用eclipse+pydev)

android - Eclipse Android 2.2项目报错但是Android 4.0没有报错

java - getServletConfig()/getServletContext() 返回空值

java - 如何在 Spring Data Rest 中为实体自定义模式

java - 基于 Guava 缓存的 map 类型错误

android - Android Studio 的 Eclipse 快捷方式