java層和native層交互
Native層:一些本地服務和鏈接庫,通過C和C++語言實現(加密/加速)
JNI(java native interface),Java代碼和其它語言寫的代碼進行交互
jni實現流程
1. 編寫Java類代碼
2. 編譯成字節碼.class (javac)
3. 產生頭文件.h (javah)
4. 編寫JNI代碼.cpp
5. 編譯成鏈接庫文字.so (ndk-build)
NDK
native develop kit,開發C++代碼的工具
下載: http://developer.android.com/tools/sdk/ndk/index.html
文件:
1. samples:demo
2. platforms:平臺
3. toolchains:交叉編譯工具
4. docs:文檔
配置NDK環境
ndk目錄配置:SDK Location —> Android NDK location
在gradle.properties中添加android.useDeprecatedNdk=true
動態庫
Android支持的CPU架構:armv5/armv7(2010)/x86(2011)/mips(2012)/armv8,mips64,x86_64,arm64-v8a(2014)
只編譯指定平臺的so:在gradle中添加:abiFilters “x86”,否則默認生成所有平臺的so
so存放目錄:在build/intermediates/ndk/debug/lib
Android.mk目錄:在build/intermediates/ndk/debug/obj/Android.mk