2016-07-26 1 views
2

J'essaye de mettre en place un projet NDK utilisant le nouveau externalNativeBuild avec un Android.mk, mais j'obtiens des résultats différents quand je compile sur la ligne de commande par rapport à Android Studio. J'essaie de confirmer quel toolchain Android Studio utilise, mais je n'arrive pas à comprendre comment le spécifier avec la nouvelle syntaxe.Android NDK: clang toolchain avec Android Studio 2.2, gradle, et externalNativeBuild + Android.mk

Jusqu'à présent, je l'ai ajouté à mon NDK_TOOLCHAIN_VERSION := clang Application.mk

Si je renomme app/src/main/cpp -> app/src/main/JNI et exécutez-NDK sur la ligne construis de commande, mon Les bibliothèques statiques et les bibliothèques partagées sont compilées comme prévu.

Cependant, avec NDK_TOOLCHAIN_VERSION spécifié ici, ma vue de projet dans Android Studio affiche un fichier objet pour chaque fichier source dans les bibliothèques statiques.

Je suis actuellement sur Windows 10 Android Studio 2.2 Aperçu 6.

Dois-je lui de spécifier ce ailleurs?

+0

vous pouvez essayer un des échantillons ici pour voir si vous obtenez la même chose: https://github.com/googlesamples/android-ndk/tree/master/other-builds/ndkbuild? aussi après avoir construit sur la ligne de commande, avant de reconstruire avec android studio, exécutez rmdir/S/Q votre-proj/app/.externalNativeBuild pour supprimer toutes les valeurs en cache là. Si votre application.mk et android.mk sont dans le même répertoire, ils seront utilisés par défaut – Gerry

Répondre

0

Je crois qu'il devrait être spécifié dans build.gradle car les drapeaux dans Application.mk sont apparemment ignorés (au moins à ce moment).

defaultConfig { 
    externalNativeBuild { 
     ndkBuild { 
      arguments "-DNDK_TOOLCHAIN_VERSION=clang" 
     } 
    } 
} 
+0

dans Application.mk est utilisé tant qu'il se trouve dans le même répertoire que Android.mk; sinon, vous devez spécifier le chemin d'accès à votre ligne Application.mk sur les arguments dans le module build.gradle – Gerry