web-dev-qa-db-ja.com

Android Studio 2.2 Preview 1でNDK-Buildを適切に使用する方法

Android Studio 2.2 Preview 1には新しい外部NDKビルド機能がありますが、公式ブログの投稿に示されているapp/build.gradleスニペットからは、どのように明確ではありませんApplication.mkファイルに通常含まれる追加のndkビルドパラメーターを設定するには enter image description here

externalNativeBuild経由でAndroid.mk ndkビルドファイルを設定できますが、必要なApplication.mk変数を設定するにはどうすればよいですか?

私のApplication.mkには以下が含まれます:

NDK_TOOLCHAIN_VERSION := clang
APP_PLATFORM := Android-16
APP_ABI := armeabi
APP_STL := c++_static
APP_CPPFLAGS += -std=c++11
16
Tadas

更新されたgradleプラグインを備えたAndroid Studio 2.2 Preview 3は、追加の引数のサポートを追加しました。 Application.mkおよび追加の構成を次のように設定できます。

defaultConfig {
  ndkBuild {
    arguments "NDK_APPLICATION_MK:=Application.mk"
    cFlags "-DTEST_C_FLAG1"  "-DTEST_C_FLAG2"
    cppFlags "-DTEST_CPP_FLAG2"  "-DTEST_CPP_FLAG2"
    abiFilters "armeabi-v7a", "armeabi"
  } 
}

Android Studio。より良いC++コードエディタとデバッグ統合のために、可能であればCMakeビルドシステムに移行することをお勧めします。gradleプラグイン設定の詳細はこちらにあります: https: //sites.google.com/a/Android.com/tools/tech-docs/external-c-builds

編集:Android Studio 2.2 Preview 5からcmakeおよびndkBuildグループをexternalNativeBuildグループの下にラップする必要があります。

defaultConfig {
  externalNativeBuild {
    ndkBuild {
      targets "target1", "target2"
      arguments "NDK_APPLICATION_MK:=Application.mk"
      cFlags "-DTEST_C_FLAG1", "-DTEST_C_FLAG2"
      cppFlags "-DTEST_CPP_FLAG2", "-DTEST_CPP_FLAG2"
      abiFilters "armeabi-v7a", "armeabi"
    } 
  }
}

編集2:ndkBuildグループの下のexternalNativeBuildのラッピングは、ビルドツールのバグが原因で機能しないようです。

10
Tadas

add-native-code

Android {
  ...
  defaultConfig {...}
  buildTypes {...}

  // Encapsulates your external native build configurations.
  externalNativeBuild {

    // Encapsulates your CMake build configurations.
    cmake {

      // Provides a relative path to your CMake build script.
      path "CMakeLists.txt"
    }
  }
}

:Gradleを既存のndk-buildプロジェクトにリンクする場合は、cmake {}の代わりにndkBuild {}ブロックを使用し、相対的なAndroid.mkファイルへのパス。 Gradleには、Android.mkファイルと同じディレクトリにあるApplication.mkファイルも含まれます

1
KunMing Xie