web-dev-qa-db-ja.com

引数のメソッドexternalNativeBuild()が見つかりませんでした

c ++デバッグなどを有効にするために、ndkBuild機能を既存のAndroid studioプロジェクト、新しいAndroid studio 2.2を使用して、 Android studio 2.2が提供するndkサンプルプロジェクトの1つを試してみました。これは完全に正常に動作します。ただし、自分のプロジェクトでgradleコマンドを実行しようとすると、このエラーメッセージが表示されます。

エラー:(73、0)引数[build_c6heui1f67l8o1c3ifgpntw6 $ _run_closure2 $ _closure9 @ 4329c1c9]のメソッドorg.gradle.api.Project。

この説明に従うことで http://tools.Android.com/tech-docs/external-c-builds 私は次のコマンドを含むgradleスクリプトになりました:

externalNativeBuild{
    ndkBuild{
        path "$projectDir/jni/Android.mk"
    }
}

externalNativeBuild {
    ndkBuild {
      arguments "NDK_APPLICATION_MK:=$projectDir/jni/Application.mk"
      abiFilters "armeabi-v7a", "armeabi","arm64-v8a","x86"
      cppFlags "-frtti -fexceptions"
    }
}

プロジェクトのセットアップでここで何かを見逃したのでしょうか? Android NDKの場所を適切に設定しました

File-> Project Structure ...-> SDK Location-> Android NDK location

in my Android studio。

他に何か忘れていることがありますか?

以前に同様の問題に遭遇した人はいますか?

アドバイスをいただければ幸いです=)

11
MinionDeveloper

自分でこのエラーが発生しました。ルートでbuild.gradle、gradleが少なくともバージョン2.2.0に設定されていることを確認します。

したがって、buildscript {...}

dependencies {
    classpath 'com.Android.tools.build:gradle:2.2.0'
}
14
Dennis Shtatnov

Kun Ming Xies answerで示唆されたように、迷惑なエラーを取り除くためにcmake部分を2つに分けました:

タイプcom.Android.build.gradle.internal.dsl.CmakeOptionsのオブジェクトの引数[-DREVISION = 1.3.1]のメソッドarguments()が見つかりませんでした。

defaultConfigの最初の部分には構成(CMakeおよびC++フラグのコマンドライン引数)が含まれ、2番目の部分にはCMakeLists.txtへのパスが含まれます。

def revision = "1.3.1"
Android {
  compileSdkVersion 25
  buildToolsVersion "25.0.2"

  defaultConfig {
    versionCode = ...
    versionName "${revision}"
    externalNativeBuild {
      cmake {
        arguments "-DREVISION=${revision}"
        cppFlags '-fexceptions', '-frtti', '-std=c++11'
      }
    }
  }

  buildTypes { }

  lintOptions { }

  externalNativeBuild {
    cmake {
      path 'CMakeLists.txt'
    }
  }
}
2
clemens
Android {
    defaultConfig {
        externalNativeBuild {
            cmake {
                arguments '-DANDROID_TOOLCHAIN=clang'
            }
        }
    }
1
KunMing Xie