三,按F12,配置項目NDK路徑:
四,在MainActivity中添加以下代碼:
static {
System.loadLibrary("MyJni");//導入生成的連接庫文件
}
public native String getStringFromNative();//本地方法
public native String getString_From_c();
紅色代碼是本地方法!不知是否Android studio對ndk支持不太好所致,但不影響開發JNI程序!
在最新的Android Studio2.2 能很好的支持ndk了,再也不出現紅色!
五,Make Project一下,生成class文件!
使用Android studio2.2 就是這錘子圖標!
六,經過class文件生成頭文件!
輸入javah -d jni -classpath ../../build/intermediates/classes/debug com.it5.ndkdemo
(注意先後有英文的;號隔開的哈)!
注:../後面的就是class文件的目錄!!
你們看了,是否是有點暈圈啊,雖然能夠複製路徑,但若是每次都這樣就太不方便了!!
另能夠在工具中配置命令的快捷鍵,來完成!
(2)Settings -> External tools中配置javah,ndk-build快捷方式!!
javah(生成頭文件),ndk-build(編譯)
打開External Tools 點加號添加javah:以下圖:
參數配置:
Program: $JDKPath$\bin\javah.exe
Parameters: -classpath . -jni -o $ModuleFileDir$/src/main/jni/$Prompt$ $FileClass$
Working directory: $ModuleFileDir$\src\main\Java
Parameters的另一種寫法 -classpath . -jni -d $ModuleFileDir$/src/main/jni $FileClass$
按上圖依次填好,就行了!!
Program: D:\Android_NDK\android-ndk-r11b\ndk-build.cmd
Working directory: $ProjectFileDir$\app\src\main
這樣配置後,之後只要把須要運行的類上右鍵 --> External Tools-->javah/ndk-build!
就可完成頭文件及編譯的工做!
哈哈!! 爽歪歪!
(3)用命令生成頭文件!!
選中須要執行javah命令的類,而後右擊,按照下圖選擇命令便可。
注:生成 .h頭文件,因此通常是在含有 native字樣的本地方法的類!
本地方法寫在MainActivity.java 中,就右擊該類生成!
這樣就會在main文件下建立jni文件夾並生成 .h頭文件成功!
如今ok了,快捷就是爽啊!!!
接下來,就是編寫C/C++的代碼了!
七,在jni目錄編寫C代碼!
注:
項目結構切換成 Android狀態時,jni文件夾顯示成 cpp名字!
當切換成project時就顯示成jni文件夾!!
以下圖:
添加以下代碼:
八,Gradle文件添加配置!
(1)在module中的build.gradle中defaultConfig{}標誌裏添加!
ndk{
moduleName "MyJni"
ldLibs "log"
abiFilters "armeabi","armeabi-v7a","x86"
}
編譯會根據配置生成不一樣的目錄來存放 .so文件!
參數配置:
在defaultConfig中添加一個ndk{}
ndk{}可添加的屬性以下:
moduleName "xxx" : 編譯後so庫的名字
ldLibs "xxx" "xxx" : 鏈接的庫,能夠有多個
abiFilters "xxx" "xxx" :
so庫運行的cpu架構,有armeabi armeabi-v7a arm64-v8a x86 x86_64 mips mips64這些,經常使用的是armeabi和armeabi-v7a
stl "xxx" : C++ runtime support library,共有九種
cFlags "xxx" "xxx" : 編譯選項
例如 :
要使工具自動識別C++提示只要以下語句:
stl "gnustl_shared"
cFlags "-IE:/Android_NDK/android-ndk-r11b/sources/cxx-stl/gnu-libstdc++/4.9/include"
注:Android.mk文件 Android Studio會自動生成!與Eclipse不一樣!
如圖:
注:
把Android.mk文件拷貝到 main/jni文件夾下
右鍵--->External Tools -->ndk-build 生成 .so文件!!
如作以下配置 .so 就會生成在指定的目錄下:
sourceSets.main{
(2)在項目的gradle.properties 文件中添加
android.useDeprecatedNdk=true
如圖:
最後,運行成功OK!
這是以前的配置方法,有個不方便的地方就是沒法DEBUG jni,要另添加插件,對寫C/C++代碼提示功能也不盡人意!
不過本篇是以Android Studio 2.2來配置滴!!在2.2版本,對NDK支持也愈來愈完善了,能夠在
SDK Tool 中添加 CMake,LLDB來建立ndk項目並支持調試,自動編譯,對C/C++的代碼提示功能也加強了!