2017-02-01 3 views
1

私はいくつかの既存のAndroid.mkベースのネイティブコードを新しいAndroidスタジオアプリにプッシュしようとしています。 「エラー:エラー:リンカーコマンドが終了コード1で失敗しました(呼び出しを見るために-vを使用します)」というメッセージを表示するリンクエラーがいくつかあります。 CMakeを使うときは、変数CMAKE_VERBOSE_MAKEFILEを設定してこれをデフォルトの動作にすることができます。 ndk-buildで同様のことをする方法はありますか? Android Studioのコンテキストでnvk-buildをコマンドラインから-vまたはV = 1(最適なものがわからない)で実行しようとするのは難しいようです。Android Studioでは、ndk-buildでCMAKE_VERBOSE_MAKEFILEに相当するものは何ですか?

編集:以下の応答で述べたように

、これは「引数」キーワードを使用してのGradleから可能でなければなりません。アプリのbuild.gradleファイル:

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 24 
    buildToolsVersion "25.0.2" 
    defaultConfig { 
     applicationId "com.adth.jwc.testproj4" 
     minSdkVersion 16 
     targetSdkVersion 24 
     versionCode 1 
     versionName "1.0" 
     testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 
     externalNativeBuild { 
      cmake { 
       cppFlags "" 
      } 
     } 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
    externalNativeBuild { 
     ndkBuild { 
      path "$projectDir/jni/Android.mk" 
      arguments "V=1" 
     } 
    } 
} 

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { 
     exclude group: 'com.android.support', module: 'support-annotations' 
    }) 
    compile 'com.android.support:appcompat-v7:24.2.1' 
    testCompile 'junit:junit:4.12' 
} 

これはエラーメッセージを生成し、「エラー:この私の解釈はモジュールのこのバージョンである(0〜16)の方法を見つけることができませんでした引数のndkBuild()[build_95llvy1tc979yxena3spokoe8 $ _run_closure1 $ _closure3 @ 34646897]をタイプorg.gradle.api.Projectのルートプロジェクト 'TestProj4'に追加します。 "

私はまたいくつかのバリエーションを試しましたが、これらのバリエーションはすべて本質的に同じエラーを生成します。 build.gradleファイルの "arguments"キーワードの正しい配置は何ですか?

答えて

2

あなたが製品の風味にexernalNativeBuildブロックを置くか、引数を追加するタイプのブロックを構築し、その

defaultConfig { 
    applicationId "com.adth.jwc.testproj4" 
    minSdkVersion 16 
    targetSdkVersion 24 
    versionCode 1 
    versionName "1.0" 
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 
    externalNativeBuild { 
     ndkBuild { 
      arguments "V=1" 
     } 
    } 
} 

が動作するはずする必要があるように、それが見えます。戸外では、BaseExtensionandroidブロック)はexternalNativeBuildブロックを持つこともできますが、そのndkBuildプロパティはNdkBuildOptionsオブジェクトです。このオブジェクトはpathプロパティのみです。フレーバーとビルドタイプのndkBuildブロックは、argumentsなどのExternalNativeNdkBuildOptionsオブジェクトです。

0

ndkBuild { arguments "V=1" }をbuild.gradleに入れて、--info(設定 - >ビルド、実行、展開 - >コンパイラ - >コマンドラインオプション)でgradleを実行します。

コマンドラインndk-buildの使用方法については、ndk-build V=1を実行してください。 DSL referenceから

https://developer.android.com/studio/projects/add-native-code.html#link-gradle

+0

この解釈はうまくいかないようです。上記の編集された質問をご覧ください。 – JackOfAllTrades

+0

私の答えを更新しました。私は、ndk-buildが印刷している情報を抑止するために、--infoでgradleを実行する必要があると考えています。 –

+0

--infoは実際にGradleに多くの情報をダンプさせますが、上記の引数エラーは処理しません。 – JackOfAllTrades

関連する問題