4

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の専門家ではないので、ここで何が起こっているのかわかりません。

createOSX で 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.motorolaso​​lutions.com/thread/3640

Cordova 2.9.0 は Android SDK 18 と互換性がありません。Cordova 3.0.0 を Android SDK 18 で使用する必要があります (または、逆に Android SDK を 17 にダウングレードします)。

4

2 に答える 2

4

Ubuntu 10.4 64 ビットを実行しています。Oracle JDK 1.7.0_25-b15; エクリプス ケプラー; Android SDK 4.3; フォンギャップ 3.0。

CLIを使用した場合とまったく同じ問題がありました。プロジェクトを Eclipse にロードするとうまくいきました (~/.cordova/lib/android/cordova/3.0.0/framework/.project)。Eclipse は独自の内部 Java コンパイラを使用しているため、使用していた Oracle インストールに問題があると考えました。

一部のアプリケーションが、以前の JRE から Java ext フォルダーに (特に) tools.jar のバージョンをインストールしたことが判明しました。javac が独自の lib フォルダー内の jar の前にここから依存 jar をロードするのは奇妙に思えますが、それが優先順位のようです。とにかく、ext フォルダーからすべてのファイルを削除したところ、すべてが正常に機能しました。

  • JDK の場所: /usr/lib/jvm/java-7-oracle/
  • Ext の場所: /usr/java/packages/lib/ext/

場所を確認するための Mac を持っていませんが、/Library/Java/Extensions または ~/Library/Java/Extensions を試してください。

他の変更を加える必要はありませんでした。ただし、実験中に、プロジェクトの ant.properties ファイルで次のプロパティを設定しようとしました。1.5、1.6、1.7 はすべて動作します。

  • java.target=1.5
  • java.source=1.5
于 2013-08-11T05:14:25.280 に答える
0

実際、ここでの問題は、Java バージョンと Cordova のコンパイル済み jar との間の非互換性にあるようです。迅速な修正を行うには、Java 1.5 をインストールして開発に使用することをお勧めします。build.xml の変更を 1.5 に復元することを忘れないでください。

于 2013-08-10T14:05:44.303 に答える