web-dev-qa-db-de.com

So verwenden Sie NDK-Build richtig in Android Studio 2.2 Preview 1

Android Studio 2.2 Preview 1 hat ein neues externes ndk-Build-Feature, aber aus app/build.gradle-Ausschnitt im offiziellen Blogpost ist es überhaupt nicht klar, wie zusätzliche ndk-Build-Parameter festgelegt werden, die Application.mk-Datei normalerweise enthält enter image description here

Ich kann Android.mk ndk-Build-Datei über externalNativeBuild einstellen, aber wie kann ich die erforderlichen Application.mk-Variablen einstellen?

Mein Application.mk enthält:

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

Android Studio 2.2 Preview 3 mit aktualisiertem Gradle-Plugin fügte Unterstützung für zusätzliche Argumente hinzu. Sie können Application.mk und zusätzliche Konfiguration wie folgt festlegen:

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"
  } 
}

Wenn möglich, würde ich empfehlen, auf CMake Build System zu migrieren, da der C++ - Code-Editor verbessert und die Debugging-Integration in Android Studio verbessert wurde. Weitere Informationen zur Konfiguration des Gradle-Plugins finden Sie hier: https://sites.google.com/a/Android.com/tools/tech-docs/external-c-builds .

Edit: In Android Studio 2.2 Preview 5 müssen Sie die Gruppen cmake und ndkBuild in die Gruppe externalNativeBuild einschließen:

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"
    } 
  }
}

Edit 2: Es scheint, dass das Umschließen von ndkBuild in der externalNativeBuild-Gruppe aufgrund eines Fehlers in Build-Tools nicht funktioniert. 

8
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"
    }
  }
}

Note: Wenn Sie Gradle mit einem vorhandenen ndk-build-Projekt verknüpfen möchten, verwenden Sie den Block ndkBuild {anstelle von cmake {} und geben Sie einen relativen Pfad zu Ihrer Android.mk-Datei an. Gradle enthält auch die Application.mk-Datei, wenn sie sich im selben Verzeichnis wie Ihre Android.mk-Datei befindet.

0
KunMing Xie