如何在phonegap中指定最小SDK?它忽略了config.xml中的android-minsdkversion

时间:2014-11-25 19:36:22

标签: cordova cordova-3.5

这是一款phonegap 3.5 / cordova 3安卓应用。在www / config.xml中我有:

<preference name="android-minSdkVersion" value="19">
<preference name="android-targetSdkVersion" value="19">

但是,当我构建它时,它会创建一个AndroidManifest.xml:

<uses-sdk android:minSdkVersion="10" android:targetSdkVersion="19" />

结果是SDK版本低于19的人可以从商店安装我的应用程序。从哪里获得10,我该如何改变它?由于Viewport的怪异,我的应用程序的行为在4.4以下的操作系统上是可疑的,我已经从4.2.2用户那里得到了一星评价。

6 个答案:

答案 0 :(得分:55)

使用旧版本的cordova CLI,我曾经手动修改AndroidManifest.xml来改变一些设置(启动模式,minsdk ......),就像你在答案中所做的那样。

随着 Cordova 3.5。某些 事情开始出错,每次构建项目时都会丢失一些更改。

现在我在config.xml添加了这些行,设置会自动更新:

<platform name="android">
    <preference name="AndroidLaunchMode" value="singleTop"/>
    <preference name="android-minSdkVersion" value="14" />
    <icon src="res/android/xhdpi.png" />
    <icon src="res/android/ldpi.png" density="ldpi" />
    <icon src="res/android/mdpi.png" density="mdpi" />
    <icon src="res/android/hdpi.png" density="hdpi" />
    <icon src="res/android/xhdpi.png" density="xhdpi" />
</platform>

优点是我现在可以删除android平台并重新创建它而不会丢失任何设置。

由于Phonegap正在更新为与cordova内联,config.xml中的首选项应与新版本一起使用,也许您会看到您的手册更新丢失,就像发生在我身上一样......

答案 1 :(得分:29)

步骤1) yourapp / config.xml文件<platform name="android">标记添加两个首选项

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

第2步) cordova platform rm android运行cmd代码

步骤3) cordova platform add android运行cmd代码 检查您的AndroidManifest.xml文件,如下所示

<uses-sdk android:minSdkVersion="14" android:targetSdkVersion="19" />

每件事都是好的:)

答案 2 :(得分:21)

编辑并改进答案:

要回答这个问题,最好从Build版本或API Level开始。 API Level是一个整数值,用于唯一标识Android平台版本提供的框架API修订版。

API Level 8 == android Platform 2.3(ginger bread)
API Level 17 == android Platform 4.2(jelly bean)

要查看APILevel及其Android平台的完整比较,请检查here


targetSdk 仅供phonegap使用。这告诉phonegap使用某些APILevel来构建这个应用程序。 这并不意味着限制任何用户下载您的应用程序。更像是说,&#34; 该应用针对此APILevel进行了优化&#34;。示例

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

使用API​​Level 17(即jellyBean或androidPlatform4.2)构建(优化)此应用程序


另一方面,

minSdk 限制用户/设备。 minSdk是用户/设备的Sdk的最低要求。任何API等级低于minSdk使用的APILevel的设备都无法下载此应用程序。 例如:

 <preference name="android-minSdkVersion" value="11"/> //android 3.0

下载此应用程序,该设备必须至少运行Android 3.0(APILevel 11)


最后,一起使用时:

<preference name="android-minSdkVersion" value="11"/> //android 3.0

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

此声明表示此应用针对android4.2进行了优化,最低要求为android 3.0


Doc:http://docs.build.phonegap.com/en_US/configuring_preferences.md.html#Preferences

答案 3 :(得分:2)

对于到处寻找设置特定目标版本的方法的人来说,我发现了这个: 我刚遇到同样的问题。我不得不改变目标:

项目目标。

目标=机器人-22 这应该在两个文件中完成:

myApp / platforms / android / project.properties myApp / platforms / android / CordovaLib / project.properties

还应该更新清单:

来自塞巴斯蒂安的回答:Cordova : [Error: Please install Android target: "android-21"

答案 4 :(得分:0)

我能够通过手动编辑platforms / android / AndroidManifest.xml来解决这个问题:

<uses-sdk android:minSdkVersion="19" android:targetSdkVersion="19" />

Phonegap documentation似乎暗示此文件应继承android-minSdkVersion首选项的值,但必须手动更改。就我所知,android-minSdkVersion偏好似乎没有做任何事情。

答案 5 :(得分:0)

我通过使用Android Studio构建而不是使用Cordova CLI构建来解决此问题。