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 にインストール -設定: [エコー] プロジェクト名: コルドバ [gettype] プロジェクト タイプ: Android ライブラリ -ビルドセットアップ: [getbuildtools] 最新のビルド ツールの使用: 18.0.1 [エコー] Cordova のビルド ターゲットを解決しています... [gettarget] プロジェクト ターゲット: Android 4.3 [gettarget] API レベル: 18 [エコー] - - - - - [echo] 必要に応じて出力ディレクトリを作成しています... [エコー] - - - - - [エコー] Cordova の依存関係を解決しています... [依存関係] ライブラリの依存関係: [依存関係] ライブラリなし [エコー] - - - - - [echo] '${build.target}' でライブラリをビルドしています... [subant] 反復するサブビルドはありません -コード生成: [mergemanifest] AndroidManifest ファイルに変更はありません。 [echo] aidl ファイルの処理... [aidl] コンパイルする AIDL ファイルがありません。 [エコー] - - - - - [echo] RenderScript ファイルの処理... [renderscript] コンパイルする RenderScript ファイルがありません。 [エコー] - - - - - [echo] リソースの処理... [aapt] 変更されたリソースはありません。R.java と Manifest.java はそのままです。 [エコー] - - - - - [エコー] 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() throws IOException { [javac] ^
また、上記のようなエラーが 40 個あり@override
ます。
Google でわかることから、これは jdk 1.6 以降で @override アノテーションが変更されたためです。(またはそのようなもの): @Overrideアノテーションでjavacが失敗するのはなぜですか
では、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
エラーを取り除くことができました。ただし、最後のエラーが 1 つ発生します。
-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
2番目のエラーが何であるかを知っています。ここで言及されています:https ://developer.motorolasolutions.com/thread/3640
Cordova 2.9.0 は Android SDK 18 と互換性がありません。Cordova 3.0.0 を Android SDK 18 で使用する必要があります (または、逆に Android SDK を 17 にダウングレードします)。