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。
他に何か忘れていることがありますか?
以前に同様の問題に遭遇した人はいますか?
アドバイスをいただければ幸いです=)
自分でこのエラーが発生しました。ルートでbuild.gradle
、gradleが少なくともバージョン2.2.0に設定されていることを確認します。
したがって、buildscript {...}
dependencies {
classpath 'com.Android.tools.build:gradle:2.2.0'
}
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'
}
}
}
Android {
defaultConfig {
externalNativeBuild {
cmake {
arguments '-DANDROID_TOOLCHAIN=clang'
}
}
}