web-dev-qa-db-fra.com

Comment utiliser correctement NDK-Build dans Android Studio 2.2 Preview 1

Android Studio 2.2 Preview 1 dispose d'une nouvelle fonctionnalité de génération de ndk externe, mais l'extrait de code app/build.gradle figurant dans l'article officiel de blog ne précise pas comment définir des paramètres de construction de ndk supplémentaires que le fichier Application.mk contient généralement  enter image description here

Je peux définir le fichier de construction Android.mk ndk via externalNativeBuild, mais comment définir les variables Application.mk requises?

Mon Application.mk contient:

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 avec le plugin Gradle mis à jour ajoute le support pour des arguments supplémentaires. Vous pouvez définir Application.mk et une configuration supplémentaire comme ceci:

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

Si possible, je recommanderais de migrer vers le système de construction CMake, en raison de la qualité de l'éditeur de code C++ et de l'intégration du débogage dans Android Studio. Vous trouverez plus d’informations sur la configuration du plugin Gradle ici: https://sites.google.com/a/Android.com/tools/tech-docs/external-c-builds .

Edit: Dans Android Studio 2.2 Preview 5, vous devez insérer les groupes cmake et ndkBuild dans le groupe 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"
    } 
  }
}

Edit 2: Il semble qu'emballer ndkBuild sous le groupe externalNativeBuild ne fonctionne pas à cause d'un bogue dans les outils de construction. 

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: Si vous souhaitez lier Gradle à un projet ndk-build existant, utilisez le bloc ndkBuild {} au lieu de cmake {} et indiquez un chemin relatif à votre fichier Android.mk. Gradle inclut également le fichier Application.mk s'il se trouve dans le même répertoire que votre fichier Android.mk.

0
KunMing Xie