我开发了一个带有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
(。
请尝试删除并再次添加平台。