离子2:安卓设备上的APK输出损坏



我开发了一个带有Ionic 2的应用程序,并想在Android手机上进行测试。因此,在我的 bash CLI 中,我尝试运行几个命令来构建 APK,例如:

ionic cordova build android --release
ionic cordova build --release android
ionic cordova build android --release --prod
ionic cordova build android --prod

最后,生成了APK文件,但是当我在Android手机上传输它时,它说该应用程序已损坏并且无法运行。 任何想法如何解决我的问题?谢谢。

编辑:我还尝试通过USB插入手机。adb devices返回一个列表,显示我的设备确实已连接。然后我跑ionic cordova run android,但我得到一个错误:Your Android platform does not have api.js

ionic info输出:

global packages:
@ionic/cli-utils : 1.4.0
Cordova CLI      : 7.0.0
Ionic CLI        : 3.4.0
local packages:
@ionic/app-scripts              : 1.3.7
@ionic/cli-plugin-cordova       : 1.4.0
@ionic/cli-plugin-ionic-angular : 1.3.1
Cordova Platforms               : browser broken ios 4.4.0
Ionic Framework                 : ionic-angular 3.1.1
System:
Node       : v6.10.3
OS         : Windows 10
Xcode      : not installed
ios-deploy : not installed
ios-sim    : not installed
npm        : 3.10.10

我遇到了同样的问题,经过长时间的研发,我发现了这个问题。据我了解,问题不在于Android版本,而在于您在移动设备上运行的生成的未签名APK。事实是,系统将不允许安装未签名的应用程序,它将显示损坏的消息。因此,无论您是否要将应用程序上传到Google商店,都必须对应用程序进行签名,以便系统至少允许该应用程序安装到移动设备中。

请参考以下步骤生成签名的APK

步骤1:打开命令提示符并转到JDK路径的bin文件夹

第 2 步:现在我们需要创建一个新的证书/密钥库,以使用 JDK 附带的 keytool 命令生成您的私钥。

keytool -genkey -v -keystore my-release-key.jks -keyalg RSA -keysize 2048 -有效期 10000 -别名 my-alias

或者,您可以指定要在其中生成密钥库文件的特定驱动器/文件夹

keytool -genkey -v -keystore D:\my-release-key.jks -keyalg RSA -密钥大小 2048 -有效期 10000 -别名 my-alias

系统将首先提示您为密钥库创建密码。然后,回答其余不错的工具的问题,当一切都完成后,你应该在当前或指定的目录中创建一个名为my-release-key.jks的文件。

注意:请务必将此文件保存在安全的地方,如果您丢失了它,您将无法向应用程序提交更新!

第 3 步:要对未签名的 APK 进行签名,请运行 jarsigner 工具,该工具也包含在 JDK 中:

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my-release-key.jks android-release-unsigned.apk my-alias

或者使用下面的一个,不要忘记指定 keystore.jks 和 app-release-unsigned.apk 文件的确切路径

jarsigner -verbose -sigalg SHA1withRSA -d igestalg SHA1 -keystore D:\ionic_apk\my-release-key.jks D:\Ionic...\platforms\android\app\build\outputs\apk\release\app-release-unsigned.apk 我的别名

就是这样,您刚刚构建了一个签名的APK。如果需要,重命名 APK 文件。将其复制到您的移动设备上并安装它。

因此,如果您想优化APK,那么我们需要运行zip对齐工具,该工具可以在/path/to/Android/sdk/build-tools/VERSION/zipalign中找到。例如,在安装了Android Studio的OS X上,zipalign位于~/Library/Android/sdk/build-tools/VERSION/zipalign中:

zipalign -v 4 android-release-unsigned.apk HelloWorld.apk

要验证您的 APK 是否已签名,请运行 apksigner。apksigner 也可以在与 zipalign 工具相同的路径中找到:

apksigner verify HelloWorld.apk

请使用本指南:https://developer.android.com/studio/publish/app-signing#signapp

正如@Prashob Thekkyal正确猜测的那样,您必须在Android Nougat安装该应用程序之前对其进行签名。话虽如此,jarsigner拒绝签署apk文件。您必须使用android构建工具中存在的apksigner实用程序。

>Cordova Platforms应该在您的情况下android x.x.x

检查它应该root/platforms/platform.json

{
"android": "x.x.x"
}

确保您的android文件夹位于正确的位置(root directory/platforms/android(。

请尝试删除并再次添加平台。

相关内容

  • 没有找到相关文章

最新更新