在android studio中配置ndk开发环境
環(huán)境:android studio 1.5
? ? ? ? ? android-ndk-r10b
?
1、下載android-ndk-r10b,解壓。
2、android studio創(chuàng)建新項(xiàng)目, 配置ndk環(huán)境
打開(kāi)file->project structure選擇你所下載的ndk環(huán)境路徑
?
3、修改 gradle.properties文件
在gradle.properties文件末尾添加android.useDeprecatedNdk=true
如果未添加這個(gè)build時(shí)就會(huì)報(bào)錯(cuò),如下:
Error: NDK integration is deprecated in the current plugin. Consider trying the new experimental plugin. For details, see?http://tools.android.com/tech-docs/new-build-system/gradle-experimental. Set "android.useDeprecatedNdk=true" in gradle.properties to continue using the current NDK integration.?
4、修改build.gradle文件
在build.gradle中添加ndk相關(guān)配置,如下:
android {defaultConfig {applicationId "com.test.ndktest"versionCode 1versionName "1.0"ndk{moduleName "JniTest"abiFilters "armeabi" , "armeabi-v7a" , "x86"}} }ndk{moduleName "JniTest"abiFilters "armeabi" , "armeabi-v7a" , "x86"}} }如果報(bào)錯(cuò)gradle dsl method not found ndk(),檢查上面紅色代碼是否放錯(cuò)了位置,一定要放到defaultconfig里面,而不是同一級(jí)。
5、創(chuàng)建.h文件
通過(guò)上面4步,基本上ndk的環(huán)境就完成了,下面就是創(chuàng)建文件了。通過(guò)一個(gè)簡(jiǎn)單的例子來(lái)演示ndk的使用。
首先創(chuàng)建一個(gè)native方法,如下
public class NativeUtils {public static native String getHelloString() ; }通過(guò)build->make project來(lái)編譯項(xiàng)目,這時(shí)會(huì)在app(或其他模塊名)\build\intermediates\classes\debug下生產(chǎn)class文件。
打開(kāi)view->tool windows->terminal,在終端中運(yùn)行javah命令來(lái)生產(chǎn).h文件。
進(jìn)入到app\src\main目錄下
運(yùn)行javah命令 ?javah -d <jni目錄> -classpath <android.jar目錄>;<class文件目錄> <類名>
如下:
javah -d jni -classpath E:\android_sdk\sdk\platforms\android-21\android.jar;..\..\build\intermediates\classes\debug com.test.ndktest.NativeUtils
生產(chǎn)的.h文件在app(或其他模塊名)\src\main\jni目錄下。.h文件內(nèi)容
6、創(chuàng)建.c文件
在jni目錄上右鍵->new->C/C++ Source File,打開(kāi)彈窗如下
將type選擇為.c / .h這個(gè),然后將create associated header取消(因?yàn)槲覀円呀?jīng)創(chuàng)建了.h文件,如果未創(chuàng)建就選中可以一起創(chuàng)建),然后填寫name,注意和.h文件名字一樣。
這樣就創(chuàng)建了.c文件,在文件中實(shí)現(xiàn).h文件的方法即可,如下:
#include "com_test_ndktest_NativeUtils.h" jstring JNICALL Java_com_test_ndktest_NativeUtils_getHelloString( JNIEnv *env, jclass jclass1) {return (*env) -> NewStringUTF(env , "hello native!") ; }7、程序加載so文件
static?{System.loadLibrary("JniTest"); }so文件的名字就是之前配置的moduleName。
然后使用getHelloString獲取字符串展示。
rebuild project然后運(yùn)行即可
8、
編譯時(shí)如果出現(xiàn)錯(cuò)誤如下:
No rule to make target 'xxxx.c', needed by 'xxxx.o'
這是ndk的一個(gè)bug,在jni目錄下只有一個(gè).c文件是會(huì)出現(xiàn)這個(gè)錯(cuò)誤,解決方法是添加一個(gè)空文件
以第6步的方式一起創(chuàng)建empty.c和empty.h文件,再rebuild運(yùn)行即可。
國(guó)外解決此錯(cuò)誤的原文如下:
Android Studio, gradle and NDK integration – ph0b's總結(jié)
以上是生活随笔為你收集整理的在android studio中配置ndk开发环境的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: android studio中创建、切换
- 下一篇: 在jenkins上配置Android项目