2016-05-22 41 views
14

Android Studio 2.2 Anteprima 1 ha una nuova funzione esterna di build ndk, ma dallo snippet app/build.gradle mostrato nel post ufficiale del blog non è chiaro come impostare ulteriore ndk costruire parametri che Application.mk file di solito contiene enter image description hereCome utilizzare correttamente NDK-Build in Android Studio 2.2 Anteprima 1

sono in grado di impostare build file Android.mk NDK via externalNativeBuild, ma come ho potuto impostare le richieste Application.mk variabili?

mio Application.mk contiene:

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

Apparentemente [questo non è possibile] (https://code.google.com/p/android/issues/detail?id=210537) adesso. – Michael

+0

come compromesso temporaneo, puoi modificare $ (NDK_ROOT)/ndk-build per passare il percorso al tuo Application.mk –

risposta

7

Studio Android 2.2 Preview 3 con il plugin Gradle aggiornato aggiunto il supporto per gli argomenti aggiuntivi. È possibile impostare Application.mk e configurazioni aggiuntive come questo:

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

Se possibile mi sento di raccomandare la migrazione a CMake sistema di costruire, a causa di una migliore editor di codice C++ e l'integrazione di debug in Android Studio. Troverai maggiori informazioni sulla configurazione del plugin gradle qui: https://sites.google.com/a/android.com/tools/tech-docs/external-c-builds.

Edit: Da Studio Android 2.2 Preview 5 è necessario avvolgere cmake e ndkBuild gruppi sotto externalNativeBuild gruppo:

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: Sembra che avvolgendo ndkBuild sotto externalNativeBuild gruppo non funziona perché di un bug negli strumenti di compilazione.

+2

Anche se questo potrebbe essere presente nell'anteprima non esiste in 2.2.0 o 2.2.1 di il plugin. –

+0

@Cameron Lowell Palmer esiste, devi solo racchiudere il gruppo ndkbuild nel gruppo externalNativeBuild. Vedi la mia modifica della risposta. – Tadas

+0

@Tadas l'hai effettivamente testato con la versione 2.2.0 o 2.2.1? –

0

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

Nota: Se si desidera collegare Gradle ad un progetto NDK-build esistente, utilizzare il ndkBuild {} bloccare invece di CMake {}, e di fornire un percorso relativo alla il tuo file Android.mk. Gradle include anche il file Application.mk se si trova nella stessa directory del file Android.mk.

Problemi correlati