web-dev-qa-db-ja.com

Gradleが「メソッドJava.io.File#<init>のあいまいなメソッドオーバーロード」で失敗する

いつ gradle building私のプロジェクト、私はこのエラーを得ています:

失敗:ビルドは例外で失敗しました。

  • どこ:
    ビルドファイル 'App/build.gradle'行:45

  • 何が悪かったのか:
    プロジェクト「:App」の評価中に問題が発生しました。
    メソッドJava.io.File#のあいまいなメソッドオーバーロード
    プロトタイプが重複しているため、[null、class Java.lang.String]に対して呼び出すメソッドを解決できません:
    [クラスJava.lang.String、クラスJava.lang.String]
    [クラスJava.io.File、クラスJava.lang.String]

上記の行は最初のproguardFileルールです:

buildTypes {
    release {
        debuggable false
        jniDebugBuild false
        signingConfig signingConfigs.(System.getenv("SIGNING_CONFIG") ?: "release")
        runProguard true
        proguardFile getDefaultProguardFile('proguard-Android-optimize.txt')
        proguardFile 'proguard-rules.txt'
    }
}

持っていませんlocal.propertiesファイル、またはAndroid Studio。

私のプロジェクトの何が問題になっていますか?このエラーを修正するにはどうすればよいですか?

29
Léo Lam

2014年9月にエラーメッセージが変更されました。 明確になり、GradleがSDKを見つけられないことが問題であることを明示的に指摘しました。残りの答えは、Gradleプラグインの古いバージョン(<0.13)にも適用されます。


これは、GradleがSDKの場所を見つけることができず、デフォルトのProguardファイルの場所を取得するなど、Android SDKを必要とする何かを実行すると失敗するためです。

実際、その行を一時的にコメントアウトすると、Gradleはこのことを通知します。

SDKの場所が見つかりません。 local.propertiesファイルのsdk.dirまたはAndroid_HOME環境変数を使用して場所を定義します。

あなたはそれを修正することができます:

  • local.propertiesでSDKの場所を定義することにより、そのファイルにsdk.dir=/path/to/sdkを追加するだけです。

  • SDKの場所を環境変数Android_HOMEに設定することにより、gradleの前にAndroid_HOME=/path/to/sdkを追加して、環境変数を設定する必要があります。

    例:Android_HOME=/path/to/sdk gradle build

バージョン管理システムを使用する場合、Gradleを使用する必要があるたびに手動で環境変数を設定するのは煩わしいので、自分のlocal.propertiesでローカルに場所を設定しても問題ありません。リポジトリにチェックインしないでください。

54
Léo Lam

私は毎日これを行っており、次のコマンドを発行してlocal.propertiesを作成しています(-pはマニフェストファイルへのパス、-tは現在のターゲットです)。

Android project update -p . -t Android-19

Gradleビルドの場合:

Android project update .p ./YourApp/src/main/ -t Android-19
cp ./YourApp/src/main/local.properties ./local.properties # or ln if you feel so
0
igraczech

私の場合、Android NDKとSDKの場所をAndroid Studioプロジェクトのモジュール設定で設定しました。

0
teh.fonsi