【问题标题】:How can I specify the minimum SDK in phonegap? It is ignoring android-minsdkversion in config.xml如何在 phonegap 中指定最小 SDK?它忽略了 config.xml 中的 android-minsdkversion
【发布时间】:2014-11-25 19:36:21
【问题描述】:

这是一个 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 用户的 1 星评价。

【问题讨论】:

    标签: cordova cordova-3.5


    【解决方案1】:

    使用旧版本的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 中的首选项应该适用于新版本,也许您会看到更新的手册丢失了,就像发生在我身上一样...

    【讨论】:

    • 重新开始使用最新的 Cordova 为我解决了这个问题。
    • 这似乎对我不起作用...我添加了android-minSdkVersion , android-maxSdkVersion, android-targetSdkVersion,其中的值= 22...但是当我添加add platform时,它会为android目标26安装。尽管如此AndroidManifest 和 config.xml 中的所有内容都设置为 22。因此,当我执行 run android --device 时,不再使用 SDK 22,它会下载 SDK 26 并强制我安装它...我是使用离子 2
    • 每个版本的android平台都有一个与之关联的目标sdk,我不认为你可以改变它。并且 android 平台的第 7 版不再兼容比 kit kat 更早的 android 版本,所以也许你的 min sdk 不能低于那个。要获得较低的目标 sdk,您必须安装较旧版本的 cordova android 平台,例如 cordova platform add android@6.2.3 是我与 android-minSdkVersion=16 一起使用的,以使我的应用程序适用于从 jelly bean 开始的所有设备。
    • 不确定为什么要强制使用目标 sdk 22,但要这样做,您应该使用版本 5.1.1 或其他版本。你可以看看这个页面有一个想法:cordova.apache.org/docs/en/latest/guide/platforms/android/…
    【解决方案2】:

    STEP 1) yourapp/config.xml 文件&lt;platform name="android"&gt; 标签添加两个首选项

    <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" />
    

    一切正常:)

    【讨论】:

    • 我用过cordova 7.1,不需要步骤2 + 3。(AndroidManifest.xml在构建后更新)
    • 对于“cordova-android”版本8,在步骤3之后,检查“platforms/android/gradle.properties”中“cdvMinSdkVersion”和“cdvTargetSdkVersion”的值
    • 别忘了在cordova platform rm android之前运行cordova plugin save。
    【解决方案3】:

    编辑和改进答案:

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

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

    要查看 APILevel 及其 AndroidPlatform 的完整比较,请查看here


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

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

    此应用是使用 APILevel 17(即 jellyBean 或 androidPlatform4.2)构建(优化)的


    minSdk 另一方面,限制用户/设备。 minSdk 是用户/设备对 Sdk 的最低要求。任何 APIlevel 低于 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


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

    【讨论】:

      【解决方案4】:

      对于任何来到这里寻找设置特定目标版本的方法的人,我发现了这个: 我只是有同样的问题。我不得不改变目标:

      项目目标。

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

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

      清单也应该更新:

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

      【讨论】:

        【解决方案5】:

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

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

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

        【讨论】:

        • targetSdk 类似于reccomended-sdk(它不强制或限制),minSdk 是Sdk 的最低要求。是的,您需要更改 min-sdk,因为您需要最低要求 Sdk
        • 再三考虑,我建议不要走这条路 - 手动编辑platforms/android/AndroidManifest.xml 导致 Manifest 与散布在周围的其他各种 AndroidManifest.xml 副本不同步平台/android 子目录,这导致了其他问题,导致我进行核弹和重铺。
        【解决方案6】:

        我通过使用 Android Studio 构建而不是使用 Cordova CLI 构建解决了这个问题。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2015-04-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-03-30
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多