Android Studio NDK初步開發(fā)總結(jié)

參考:
http://yanbober.github.io/2015/02/14/android_studio_jni_1/
http://billhoo.blog.51cto.com/2337751/1125559

1、在local.properties文件中加入NDK路徑,如:

ndk.dir=E\:\\as_ndk\\android-ndk-r11b

2、在gradle.properties加入:

android.useDeprecatedNdk=true

3、新建NdkJniUtils:

public class NdkJniUtils {
    public native String stringIv();
    static {
        System.loadLibrary("MyTest");    //defaultConfig.ndk.moduleName
    }
}

4、在stringIv這個(gè)地方按“ALT+Enter”(eclipse 快捷鍵),出現(xiàn)

xx

后回車,會(huì)發(fā)現(xiàn)在main下多了jni目錄和一個(gè)“MyTest.c”(與so文件名相同)文件。
當(dāng)然,也可以右鍵main選擇建立jni目錄,


jni目錄

然后在jni下建立建立MyTest.c文件:


C

并在C文件中加入“#include <jni.h>”

5、在app gradle中的defaultConfig節(jié)點(diǎn)中加入:

defaultConfig {
    ...
    ndk {
        moduleName = "MyTest"
        abiFilters "armeabi"
    }
}

其中JniTest為.so文件的名字,abiFilters "armeabi"指的是在lib下會(huì)建立armeabi文件,設(shè)置支持的 SO 庫構(gòu)架,加多個(gè)的話:

abiFilters "armeabi", "armeabi-v7a", "x86"

這樣的話就會(huì)在指定的庫架構(gòu)生成.so文件。
庫結(jié)構(gòu)參考

6、然后點(diǎn)擊


重構(gòu)gradle

完成后發(fā)現(xiàn).c文件中的#include <jni.h>的jni.h為紅色即可。

7、再在NdkJniUtils 中stringIv這個(gè)地方按“ALT+Enter”(eclipse 快捷鍵),出現(xiàn)

xx

后回車,然后在.c文件中就出現(xiàn)了這些代碼:

JNIEXPORT jstringJNICALL
Java_com_ccddy_jnitest_NdkJniUtils_stringIv(JNIEnv
*env,
jobject instance
)
{
// TODO
return (*env)->
NewStringUTF(env, returnValue
);
}

8、把上面的代碼改成這樣:

#include <jni.h>
#include <string.h>

jstring
Java_com_ccddy_jnitest_NdkJniUtils_stringIv(JNIEnv
*env,
jobject instance
)
{
// TODO
return (*env)->
NewStringUTF(env, "返回值"
);
}

9、運(yùn)行apk,打印NdkJniUtils的stringIv方法的返回值即為“返回值”。

注意:如果ALT+ENTER無效,則可以使用gradle Sync Now導(dǎo)致gradle重建即可。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 本人為初學(xué)者,文章寫得不好,如有錯(cuò)誤,請(qǐng)大力懟我 或者看這里 如何使用jni進(jìn)行開發(fā) 本文主要針對(duì)Android環(huán)...
    AlbertHumbert閱讀 4,834評(píng)論 2 12
  • 相信很多人對(duì)于NDK 開發(fā)都是懵逼的,比如都知道把加密的邏輯以及密鑰放在so文件中,但是你知道怎么生成so文件嗎?...
    MiBoy閱讀 795評(píng)論 1 4
  • demo鏈接在文末。 在Android Studio中有3種方法生成so文件。 最初的時(shí)候,我曾經(jīng)使用過Visua...
    梧葉已秋聲閱讀 34,220評(píng)論 5 26
  • 一、NDK產(chǎn)生的背景 Android平臺(tái)從誕生起,就已經(jīng)支持C、C++開發(fā)。眾所周知,Android的SDK基于J...
    Ten_Minutes閱讀 3,719評(píng)論 1 27
  • 1.in your eyes 2.完美的世界 3.海角七號(hào) 4.重返十七歲 5.這個(gè)男人來自地球 6.荒島余生 7...
    城思晨風(fēng)閱讀 258評(píng)論 0 0

友情鏈接更多精彩內(nèi)容