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

Dev*_*Zot 36 cordova cordova-3.5

这是一个phonegap 3.5/cordova 3 android应用程序.在www/config.xml中我有:

<preference name="android-minSdkVersion" value="19">
<preference name="android-targetSdkVersion" value="19">
Run Code Online (Sandbox Code Playgroud)

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

<uses-sdk android:minSdkVersion="10" android:targetSdkVersion="19" />
Run Code Online (Sandbox Code Playgroud)

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

Qui*_*Fix 57

使用旧版本的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>
Run Code Online (Sandbox Code Playgroud)

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

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


Fer*_*ÇER 35

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

<platform name="android">
    <preference name="android-minSdkVersion" value="14" />
    <preference name="android-targetSdkVersion" value="19" />
</platform>
Run Code Online (Sandbox Code Playgroud)

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

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

<uses-sdk android:minSdkVersion="14" android:targetSdkVersion="19" />
Run Code Online (Sandbox Code Playgroud)

一切正常 :)

  • 我使用过cordova 7.1,不需要步骤2 + 3.(AndroidManifest.xml在构建后更新) (3认同)

vdj*_*j4y 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)
Run Code Online (Sandbox Code Playgroud)

要查看APILevel及其AndroidPlatform的完整比较,请点击此处


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

 <preference name="android-targetSdkVersion" value="17"/> //android 4.2
Run Code Online (Sandbox Code Playgroud)

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


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

 <preference name="android-minSdkVersion" value="11"/> //android 3.0
Run Code Online (Sandbox Code Playgroud)

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


最后,当一起使用时:

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

 <preference name="android-targetSdkVersion" value="17"/> //android 4.2
Run Code Online (Sandbox Code Playgroud)

这句话意味着这个应用程序针对android4.2进行了优化,最低要求是android 3.0


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