我正在尝试使用 Cordova/Phonegap 创建一个新的 Android 项目。
我已经下载了 cordova-2.9.0 和 Mac 的 ADT Bundle。
我将 ADT 提取到 ~/Developer/Android,并将其添加到我的 PATH:
export PATH="$HOME/Development/Android/sdk/tools:$PATH"
export PATH="$HOME/Development/Android/sdk/platform-tools:$PATH"
然后我尝试运行cordovacreate脚本,但它失败了:
→ bin sudo ./create ~/Projects/myproject/cordova-android com.mydomain.myproject myproject
Password:
BUILD FAILED
/Users/asgeo1/Development/Android/sdk/tools/ant/build.xml:714: The following error occurred while executing this line:
/Users/asgeo1/Development/Android/sdk/tools/ant/build.xml:728: Compile failed; see the compiler error output for details.
Total time: 1 second
An unexpected error occurred: ant jar > /dev/null exited with 1
Deleting project...
不是很有帮助。所以我编辑了 Cordovacreate脚本,让它输出更多信息。
# COMMENTED OUT piping to /dev/null:
#
# compile cordova.js and cordova.jar
pushd "$BUILD_PATH"/framework # > /dev/null
ant jar #> /dev/null
popd #> /dev/null
然后我重新运行了create脚本:
→ bin sudo ./create ~/Projects/myproject/cordova-android com.mydomain.myproject myproject
~/Downloads/cordova-2.9.0/cordova-android/framework ~/Downloads/cordova-2.9.0/cordova-android/bin
构建文件:/Users/asgeo1/Downloads/cordova-2.9.0/cordova-android/framework/build.xml
-预构建:
-检查环境:
[checkenv] Android SDK 工具修订版 22.0.5
[checkenv] 安装在 /Users/asgeo1/Development/Android/sdk
-设置:
[echo] 项目名称:科尔多瓦
[gettype] 项目类型:Android 库
-构建设置:
[getbuildtools] 使用最新的构建工具:18.0.1
[echo] 正在解决 Cordova 的构建目标...
[gettarget] 项目目标:Android 4.3
[gettarget] API 级别:18
[回声] ----------
[echo] 如果需要,创建输出目录...
[回声] ----------
[echo] 解决 Cordova 的依赖关系...
[依赖] 库依赖:
[依赖] 没有库
[回声] ----------
[echo] 使用 '${build.target}' 构建库...
[subant] 没有要迭代的子构建
-代码生成:
[mergemanifest] AndroidManifest 文件没有变化。
[echo] 处理aidl文件...
[aidl] 没有要编译的 AIDL 文件。
[回声] ----------
[echo] 处理 RenderScript 文件...
[renderscript] 没有要编译的 RenderScript 文件。
[回声] ----------
[回声] 处理资源...
[aapt] 没有更改的资源。R.java 和 Manifest.java 保持不变。
[回声] ----------
[echo] 处理 BuildConfig 类...
[buildconfig] 生成 BuildConfig 类。
-预编译:
-编译:
[javac] 编译104个源文件到/Users/asgeo1/Downloads/cordova-2.9.0/cordova-android/framework/bin/classes
[javac] /Users/asgeo1/Downloads/cordova-2.9.0/cordova-android/framework/src/com/squareup/okhttp/Connection.java:171:方法不会覆盖其超类中的方法
[javac] @Override public void close() 抛出 IOException {
[javac] ^
还有另外 40 个类似上面的错误,关于@override.
根据我在 Google 上的了解,这是因为在 jdk 1.6 及更高版本中,@override 注释发生了变化。(或类似的东西): 为什么 javac 在 @Override 注释上失败
好的,所以我发现 Android SDK 配置ant位于一个名为build.xml. 瞧,它有一些 Java 1.5 的设置:
<property name="java.target" value="1.5" />
<property name="java.source" value="1.5" />
如果我将这些值更改为 1.6 或 1.7,则在重新运行 Cordovacreate脚本时会出现 java 错误:
-compile:
[javac] Compiling 104 source files to /Users/asgeo1/Downloads/cordova-2.9.0/cordova-android/framework/bin/classes
[javac] javac: invalid source release: 1.7
[javac] Usage: javac <options> <source files>
我真的在这里挠头。我不是Java专家,所以我不明白这里发生了什么。
有谁知道如何create在 OSX 上运行 Cordova Android 的脚本?
更新
在遵循以下@cartland 的建议后,我能够摆脱@Override错误。但是仍然遇到最后一个错误:
-compile:
[javac] Compiling 104 source files to /Users/asgeo1/Downloads/cordova-2.9.0/cordova-android/framework/bin/classes
[javac] /Users/asgeo1/Downloads/cordova-2.9.0/cordova-android/framework/src/org/apache/cordova/InAppBrowser.java:523: error: cannot find symbol
[javac] settings.setPluginsEnabled(true);
[javac] ^
[javac] symbol: method setPluginsEnabled(boolean)
[javac] location: variable settings of type WebSettings
[javac] Note: Some input files use or override a deprecated API.
[javac] Note: Recompile with -Xlint:deprecation for details.
[javac] 1 error
我会尝试弄清楚那是什么 - 但如果有人知道,请发布答案:)
更新 2
我知道第二个错误是什么。这里提到:https ://developer.motorolasolutions.com/thread/3640
Cordova 2.9.0 与 Android SDK 18 不兼容。我需要将 Cordova 3.0.0 与 Android SDK 18 一起使用。(或相反将 Android SDK 降级到 17)