你如何构建和部署到旧版本的android for ionic / cordova

时间:2014-07-02 04:32:11

标签: android cordova ionic-framework

使用Ionic 1.0.0 beta-8

创建新应用后,我构建并将其部署到Nexus 5模拟器,它运行良好。但是当我尝试在我的Android 2.2手机上调试它时,我收到了这个错误:

....
-post-build:
     [move] Moving 1 file to /home/admin/code/projects/myapp/ionic/platforms/android/ant-build
     [move] Moving 1 file to /home/admin/code/projects/myapp/ionic/platforms/android/CordovaLib/ant-build

debug:

BUILD SUCCESSFUL
Total time: 6 seconds
WARNING : No target specified, deploying to device 'I8972b56ddac'.
Using apk: /home/admin/code/projects/myapp/ionic/platforms/android/ant-build/HelloCordova-debug-unaligned.apk
Installing app on device...

/home/admin/code/projects/myapp/ionic/platforms/android/cordova/node_modules/q/q.js:126
                    throw e;
                          ^
ERROR: Failed to launch application on device: ERROR: Failed to install apk to device:  pkg: /data/local/tmp/HelloCordova-debug-unaligned.apk
Failure [INSTALL_FAILED_OLDER_SDK]

Error: /home/admin/code/projects/myapp/ionic/platforms/android/cordova/run: Command failed with exit code 8
    at ChildProcess.whenDone (/usr/local/lib/node_modules/cordova/node_modules/cordova-lib/src/cordova/superspawn.js:131:23)
    at ChildProcess.emit (events.js:98:17)
    at maybeClose (child_process.js:755:16)
    at Process.ChildProcess._handle.onexit (child_process.js:822:5)
ERROR: Unable to run app on platform android. Please see console for more info.
Exiting.

如何让android 4.x.x手机以及Android 2.2手机的ionic / cordova中的构建工作?

5 个答案:

答案 0 :(得分:15)

这个问题与你的问题类似。 stackoverflow

转到AndroidManifest.xml,找到这些来控制你的sdk buildversion。

<preference name="android-minSdkVersion" value="XX"> // value is the API LEVEL
<preference name="android-targetSdkVersion" value="XX">

* targetSdk =告诉phonegap使用哪个android构建版本,
* MinSdk是限制想要下载它的用户。
检查android build here的API LEVEL。

在您的情况下:对于Android 2.2,使用值= 8(API级别8)

    <preference name="android-minSdkVersion" value="8"> //android 2.2
    <preference name="android-targetSdkVersion" value="17"> //android 4.2

注意:我怀疑android 2.2(API级别8)可以运行API级别17(android 4.2)。

答案 1 :(得分:1)

根据Ionic Platform notes,Ionic针对iPhone和Android设备(目前)。它还支持iOS 6+和Android 4.0+(虽然2.3应该可以工作)。但是,由于有许多不同的Android设备,某些可能无法正常工作。 Ionic没有为Android 2.3保证,因此Android 2.2将超出范围。

因此,我认为这就是你遇到挑战的原因。

答案 2 :(得分:1)

仅供参考,谷歌将Honeycomb和后来的Android版本的后端功能转移到“兼容性”库中。您可以安装它并让您的应用程序在旧版Android上运行。您需要更新Android SDK并安装此库。

请参阅Android Support Library文档。

如果你正在使用Ionic,你可以添加一个钩子脚本,当你将Android作为平台添加或开始构建时,它会将库复制到你的项目中。

答案 3 :(得分:0)

更改离子项目"android-minSdkVersion"config.xml的值。它应该如下所示:

<preference name="android-minSdkVersion" value="14"/>

答案 4 :(得分:0)

似乎cdvCompileSdkVersion用于确定构建SDK而不是targetSdkVersion,就像在本机Android应用程序中使用的那样。