本文主要講述瞭如何如何在Android Studio使用新的Gradle構建工具配置NDK環境,如今把相關的步驟整理出來分享給Android程序員兄弟們,但願給他們在配置NDK環境時帶來幫助。android
從Android Studio 1.3 Beta1開始,就支持了NDK。不過使用的是一個全新的實驗性的gradle構建工具。官方地址 http://tools.android.com/tech-docs/new-build-system/gradle-experimental ,英文好的能夠直接看原文。c++
在進行配置前請先將Android Studio更新至最新版本,目前最新版本是2.1.2程序員
而且使用Android Studio內置的SDK管理器下載NDK。windows
因爲google的問題一直下不來。我用了手動下載配置api
Downloading https://dl.google.com/android/repository/android-ndk-r12b-windows-x86_64.zipruby
注意這個NDK安裝好後其目錄在SDK目錄下的ndk-bundle目錄下,與以往的不一樣。app
要修改的文件見下圖工具
首先須要將根目錄下的gradle修改成實驗性的gradlegradle
classpath 'com.android.tools.build:gradle-experimental:0.2.0'
最終是這樣的ui
而且須要gradle 2.5的支持,將gradle/gradle-wrapper.properties中的版本修改成2.5
distributionUrl=https/://services.gradle.org/distributions/gradle-2.5-all.zip
最終是這樣的
而後修改原來的app/build.gradle,注意如今各項配置都是有等號的,而且使用的是 com.android.model.application而再也不是原來的com.android.application,若是是Library,則 是com.android.model.library。而後android外圍包了一層model。原來在android裏面的buildTypes 移到了外面。等等,看下面內容,注意變化。
model { android { compileSdkVersion = 23 buildToolsVersion ="23.0.2" defaultConfig.with { applicationId ="com.qihoo.test" minSdkVersion.apiLevel = 19 // Unable to load class com.android.build.gradle.managed.ProductFlavor_Impl targetSdkVersion.apiLevel = 23 versionCode = 1 versionName ="1.0" } } android.buildTypes { release { minifyEnabled =false proguardFiles += file('proguard-rules.pro') } } compileOptions.with { sourceCompatibility = JavaVersion.VERSION_1_7 targetCompatibility = JavaVersion.VERSION_1_7 } android.ndk { moduleName ="NdkSample" cppFlags +="-std=c++11" cppFlags +="-fexceptions" cppFlags +="-I${file("src/main/jni//include")}".toString() ldLibs += ["android","log"] stl ="gnustl_shared" } android.productFlavors { create("arm7") { ndk.abiFilters.add("armeabi-v7a") } create("arm8") { ndk.abiFilters.add("arm64-v8a") } } } dependencies { compile fileTree(dir:'libs', include: ['*.jar']) compile'com.android.support:appcompat-v7:23.1.0' }
在android.ndk中進行ndk的配置,模塊名字是必須的。而後使用了log,而且支持armeabi,armeabi-v7a,x86三個平臺。
新建一個Test的類,加載jni庫,聲明native方法
記得添加System.loadLibrary("hello-jni")
public class TestJni { static { System.loadLibrary("hello-jni"); } public static native String getString(); }
這時候你會發現getString方法是紅色的
在上面按alt+enter生成c層的方法