Android Studio中NDK開發
更新(2015.07.24):本文說的方法是針對Android Studio 1.3 之前的版本,從 AS 1.3 開始,官方支援了 NDK 的開發,可以參考。
之前有人問到怎麼使用Android Studio進行NDK開發,經過網上搜尋,自己也嘗試了一下,用Android Studio進行NDK開發比Eclipse更加靈活方便。
以下是翻譯自這篇文章。
在ADT中進行NDK開發非常簡單,在Android Studio進行NDK開發也同樣的容易。NDK開發主要有兩中情況:一種是使用已經編譯好的.so動態庫;一種是使用c/c++原始碼開發。下面分別介紹。
使用預編譯好的.so動態庫
你可以先用ndk-build工具先編譯好.so,然後在Android Studio中引用。 這種情況比較件簡單,只要把的.so檔案放到相應的目錄即可。如下所示:
[module_name]
[src]
[main]
[jniLibs]
[armeabi]
[armeabi-v7a]
[x86]
[mips]
注意jniLibs
目錄是放在module
下面,在Android Studio中效果如下:
現在就可以在程式碼中直接載入此庫了,如下:
String libName = "helloNDK"; // 庫名, 注意沒有字首lib和字尾.so System.loadLibrary( libName );
如果你不想把.so放在上面的預設路徑,可以在buid.gradle中進行如下配置:
android { // .. android settings .. sourceSets.main { jniLibs.srcDir 'src/main/myCppLibraries' //在Android Studio編譯C/C++原始碼
如果你不想像上面那樣,在終端中用ndk-build編譯.so,然後回到Android Studio中寫Java程式碼。可以直接讓Android Studio幫你編譯。配置方法如下:
1.配置ndk.dir
在
local.properties
新增如下配置:sdk.dir=/path/to/android-sdk ndk.dir=/path/to/android-ndk2.Gradle配置NDK模組
android { compileSdkVersion 19 buildToolsVersion "20.0.0" defaultConfig { applicationId "com.example.ndksample" minSdkVersion 9 targetSdkVersion 19 versionCode 1 versionName "1.0" ndk { moduleName "helloNDK" //
ndk
還可以配置更多選項,如下:ndk { moduleName "myEpicGameCode" cFlags "-DANDROID_NDK -D_DEBUG DNULL=0" // Define some macros ldLibs "EGL", "GLESv3", "dl", "log" // Link with these libraries! stl "stlport_shared" // Use shared stlport library}3.新增C/C++原始碼
預設情況下,你需要把C/C++原始碼放在
[module]/src/main/jni/
路徑下。效果如下圖所示:當然,你也可以自定義原始碼路徑:
android { // .. android settings .. sourceSets.main { jni.srcDirs 'src/main/source' }}4.分平臺配置編譯(可選)
這一步不是必須的,你可以根據需要,對各個平臺進行不同的編譯配置,可以設定覆蓋前面的編譯選項(例如
cFlags
)。例如你只想編譯指定平臺的.so,而不是所有的平臺。如下:android { // .. android settings .. productFlavors { x86 { ndk { abiFilter "x86" } } arm { ndk { abiFilter "armeabi-v7a" } } mips { ndk { abiFilter "mips" } } }} // android
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4301/viewspace-2814836/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- android studio配置ndk開發Android
- Android Studio搭建ndk開發流程Android
- Android Studio NDK開發-環境配置Android
- Android Studio NDK開發:自定義庫Android
- Android Studio NDK開發:環境配置Android
- Android Studio NDK開發-JNI呼叫Java方法AndroidJava
- Android Studio3.0 NDK配置與開發Android
- Mac之Android Studio開發NDK入門MacAndroid
- Android Studio ndk-Jni開發詳解Android
- Andorid Studio NDK開發-使用NDK庫
- Android Studio NDK開發:JNI呼叫Java函式AndroidJava函式
- Andorid Studio NDK 開發 – NDK 開發利器 gradle-experimentalGradle
- Andorid Studio NDK 開發 - NDK 開發利器 gradle-experimentalGradle
- Android NDK開發之旅15 NDK Eclipse下NDK開發流程AndroidEclipse
- Andorid Studio NDK開發-Hello World
- Andorid Studio NDK 開發 - Hello World
- Andorid Studio NDK開發:Experimental PluginPlugin
- Andorid Studio NDK開發:使用庫
- Andorid Studio NDK開發:Hello World
- Ndk 初步開發 In AndroidAndroid
- Android NDK開發(二) 使用ndk-build構建工具進行NDK開發AndroidUI
- Andorid Studio NDK開發-LLDB除錯LLDB除錯
- Andorid Studio NDK開發:LLDB除錯LLDB除錯
- Android Studio ndk-Jni開發詳細入門,Aes加密demoAndroid加密
- Android -- NDK開發入門Android
- Android Studio NDK:三、打包SOAndroid
- [Android開發]Mac下NDK開發(JNI)AndroidMac
- Android NDK開發之旅29 NDK FFmpeg視訊播放Android
- android 開發淺談(JDK && NDK)AndroidJDK
- Android Studio 已有專案新增NDK支援(mac/ndk-build)AndroidMacUI
- Andorid Studio NDK 開發 – 編譯 OpenSSL 類庫編譯
- Andorid Studio NDK開發-編譯OpenSSL類庫編譯
- Android NDK開發之JNI基礎Android
- Android NDK開發Crash錯誤定位Android
- Android NDK學習(2)Windows下NDK開發環境配置AndroidWindows開發環境
- Android NDK開發之旅26 C++ STLAndroidC++
- Android NDK開發之旅21 C++ 類AndroidC++
- Android Studio NDK:二、JNI 返回JAVA 實體AndroidJava