【问题标题】:phonegap 3.0 wants android 17, but I want android 18phonegap 3.0 想要 android 17,但我想要 android 18
【发布时间】:2013-09-18 07:56:20
【问题描述】:

虽然熟悉 phonegap 和 xcode,但我是 android 新手。 我已经安装了 phonegap 3.0 ...

npm install phonegap
phonegap --version
3.0.0-0.14.3

我已经安装了 adt-bundle-mac-x86_64-20130729。命令行工具(例如:android)似乎工作正常。 当我尝试将 android 添加为平台时..

phonegap local build android

我明白了……

[error] Please install Android target 17 (the Android 4.2 SDK). Make sure you have the latest Android tools installed as well. Run `android` from your command-line to install/update any missing SDKs or tools.

我看到类似的问题仍未得到解答... Phonegap 3.0 CLI issue android target number in build app

当我安装 android-17 时,它运行良好,这很酷,但我需要使用 android-18 才能使用 BLE。

我看到 Fil Maj 显然在 7 月 31 日解决了这个问题...https://git-wip-us.apache.org/repos/asf?p=cordova-android.git;a=commitdiff;h=c2c5f710

.. 但我下载的 phonegap 版本中似乎没有该修复程序。我想也许它只是在科尔多瓦,所以我也安装了它,但遇到了同样的问题。

我尝试破解 npm 目录中直接包含检查的四个 js 文件,但没有成功(即:错误仍然存​​在)。

任何人都可以建议...

1) 如何下载修复了问题的 phonegap/cordova 版本,或

2) 如何告诉 phonegap/cordova 我要定位哪个版本的 android

非常感谢...

【问题讨论】:

  • 我正在尝试以 19 为目标,但我遇到了同样的错误。有什么解决办法吗?

标签: android cordova android-4.3-jelly-bean cordova-3


【解决方案1】:

只需打开您的 AndroidManifest.xml 文件并设置最小和目标版本。在你的情况下 18. 问题Phonegap 3.0 CLI issue android target number in build app.AndroidManifest.xml 的相同答案位于:YOURPROJECT\platforms\android。如果您需要更多帮助,请询问,会尽力帮助您。 发布您的 AndroidManifest.xml 文件,以便我检查。

【讨论】:

  • 我在一个简单的 HelloWorld 应用程序中遇到了同样的错误,但是您指定的文件夹中没有文件,并且我的电脑上不同位置的多个 AndroidManifest.xml 文件。知道我应该改变哪一个(mmaster)吗?
  • Yourprojectdir\platforms 中有没有 android 目录。如果是,则在该目录中。如果你没有它,你实际上错过了创建应用程序的第一步。您必须在您的 Phonegap 应用程序目录中搜索它,而不是在 Android SDK 中。
  • 是的,这就是您将如何更改 cordova/phonegap 应用程序的目标 SDK,但这不是 OP 的问题。
  • 当您创建 phonegap 应用程序时,platforms 目录保持为空,直到您开始向其中添加平台,不是吗?无论如何,这似乎是我的经验。由于调用命令:“phonegap build android”失败,首先没有创建任何 android 工件,所以我看不到您的解决方案将如何工作(我遇到与 OP 相同的问题)
【解决方案2】:

我认为你的 Phonegap 版本有误,我说的是0.3.0-0.15.0。我认为 Fil 的修复肯定会进入最终版本,所以我认为您在安装 Phonegap 时一定做了一些愚蠢的事情。这就是我所做的:

npm install cordova -g(或者我猜你的情况是Phonegap而不是cordova。)这将全局安装cordova(或phonegap),这样你就可以使用'cordova'命令在任何地方访问它。 如果您已经安装了它,请尝试使用 npm update 而不是 npm install

导航到工作区位置,例如C:\workspace

键入cordova create MyApp,这将在C:\workspace\MyApp 创建一个Cordova 项目。工作区将包含以下文件夹:

/www/ - 放置所有 HTML 和 JavaScript 的地方

/platforms/ - 这将包含 android、ios 和您添加的任何其他平台的文件夹。您来自 /www/ 的内容将被复制到每个平台的正确位置。您可以在此处编辑特定于平台的文件,例如,要更改目标 SDK,您要编辑 /platforms/android/AndroidManifest.xml

/plugins/ - 当您执行cordova plugin add {link} 时,所有插件代码都将位于此处。我想不出你为什么应该编辑这个文件夹中的任何东西(但可能有一些好的。)

/merges/ - 这里的任何文件都将与/www/ 中的相应文件合并并推送到/platforms/,参见documentation.

运行create命令后,需要添加平台:

cd MyApp

cordova platform add android -d - -d 为我们提供调试信息

cordova build android - 这将构建 android 应用程序,您将看到 /www/ 复制到 /platforms/android/assets/www 的内容。

一个 如果您仍然遇到问题,您是否尝试过输出中所说的内容,即从命令行运行android?这将打开“Android SDK Manager”,确保您安装了最新版本的 SDK以及最新的 Android SDK 工具和 Android SDK 平台工具(我的是 22.0.5和 18.0.1。)

如果您从未创建过 Android 模拟器对象(使用 AVD 管理器),也可能会出现问题,尽管这听起来不太可能。

【讨论】:

  • 如果还是无法获取,在命令行输入adb version会怎样?
【解决方案3】:

转到函数check_requirements中的\cordova\src\metadata\android_parser.js,将第56、57、66行从17改为18。然后就可以了。

【讨论】:

  • 我做了类似的if (output.indexOf('android') == -1) 更灵活。
【解决方案4】:

release notes of version 3.1.0 读取,它说:

  • Android 4.3 API 级别 18 的递增版本检查
  • 将项目升级到 Android 4.3

因此,升级到 Phonegap 3.1.0 应该可以解决问题。

【讨论】:

  • 现在有Android 4.4 API Level 19 所以这对我没有帮助@Dionysios 有最好的答案,包括我的评论:)
【解决方案5】:

在 Windows 中找到文件 android_parser.js,它是 undr 路径:

C:\Users\USER_NAME\AppData\Roaming\npm\node_modules\cordova\src\metadata

文件 android_parse.js 的变化

如果您是从 PhoneGap 而不是 Cordova 进行申请:

C:\Users\USER_NAME\AppData\Roaming\npm\node_modules\phonegap\node_modules\cordova\src\metadata\android_parser.js

转行:57

if (output.indexOf('android-17') == -1) {

并将其更改为:

if (output.indexOf('android') == -1) {

这会让你不用担心未来:)

但是你可能会发生这种情况Error

[Error: An error occured during creation of android sub-project.
]

要修复它,您必须转到此路径:

C:\Users\USER_NAME\.cordova\lib\android\cordova\3.1.0\framework\project.properties

并改变这一行:

target=android-17

到这里:

target=android-19

或者你的 Android SDK 版本是什么

如果你想使用 Android 2.2 怎么办?

只需简单地转到:

Your_Project_Folder/platforms/android/AndroidManifest.xml

然后改变:

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

收件人:

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

之后将您的项目导入您的 IDE

享受:)

【讨论】:

  • 在开发 Cordova 应用程序时,直接编辑 AndroidManifest.xml 不是一个好习惯。有谁知道如何从“JavaScript 端”配置minSdkVersiontargetVersion
  • 它们可以在 config.xml 中设置,我目前正在 PhoneGap Build 中进行试验。
  • @Magnus Smith 我记得(可能是前一阵子错了),在版本 17 中它是硬编码的,并且没有使用设置变量。因此,请在“杀死”您的计算机之前先检查此文件;)
【解决方案6】:

C:\Users\USER_NAME.cordova\lib\android\cordova\3.1.0\framework\

应该在bumerang的anser中

C:\Users\USER_NAME.cordova\lib\android\cordova\3.1.0\framework\project.properties

【讨论】:

    【解决方案7】:

    你们来错地方了

    你应该试试这个:phonegap local build android

    这会将 android 添加到您的平台文件夹...

    【讨论】:

      【解决方案8】:

      如果有人使用 cordova 和/或 chrome 移动应用工具链到达这里。我将platforms/android/project.properties 直接编辑为target=android-19 并构建。

      干杯

      【讨论】:

        【解决方案9】:

        确保您拥有最新版本:

        • PhoneGap:sudo npm update -g phonegap
        • Android SDK:取决于您的安装方式,如果您是通过 brew 安装的:brew update android-sdk

        然后运行android,并下载最新的API。

        那么PhoneGap在运行phonegap build android时会默认使用最新的API。

        如果您需要更新当前项目,请在项目文件夹中运行:

        phonegap platform update android
        

        现在如果你再次运行build,它应该使用最新版本。

        【讨论】:

          【解决方案10】:

          我已经通过 npm 安装了cordova,因此为了使其正常工作,我修改了target in ~/.cordova/lib/npm_cache/cordova-android/3.6.3/package/framework/project.properties

          【讨论】:

            【解决方案11】:

            PhoneGap Build 现在支持设置 Android SDK 版本的选项。它记录在 here 但基本上你在 config.xml 中需要的是:

              <preference name="android-targetSdkVersion" value="18" />
            

            然后它将在 AndroidManifest.xml 中正确设置属性。

            注意:这据说只适用于 PhoneGap 构建,但我使用的是 Ionic 命令行工具(在 Cordova 5.1.1 上),它似乎对我也很好。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2015-07-13
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2018-02-21
              • 1970-01-01
              相关资源
              最近更新 更多