我正在尝试使用 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)