Android Studio NDK初步開發總結

參考:
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這個地方按“ALT+Enter”(eclipse 快捷鍵),出現

xx

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


jni目錄

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


C

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

5、在app gradle中的defaultConfig節點中加入:

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

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

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

這樣的話就會在指定的庫架構生成.so文件。
庫結構參考

6、然后點擊


重構gradle

完成后發現.c文件中的#include <jni.h>的jni.h為紅色即可。

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

xx

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

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、運行apk,打印NdkJniUtils的stringIv方法的返回值即為“返回值”。

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

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 本人為初學者,文章寫得不好,如有錯誤,請大力懟我 或者看這里 如何使用jni進行開發 本文主要針對Android環...
    AlbertHumbert閱讀 4,710評論 2 12
  • 相信很多人對于NDK 開發都是懵逼的,比如都知道把加密的邏輯以及密鑰放在so文件中,但是你知道怎么生成so文件嗎?...
    MiBoy閱讀 752評論 1 4
  • demo鏈接在文末。 在Android Studio中有3種方法生成so文件。 最初的時候,我曾經使用過Visua...
    梧葉已秋聲閱讀 33,959評論 5 26
  • 一、NDK產生的背景 Android平臺從誕生起,就已經支持C、C++開發。眾所周知,Android的SDK基于J...
    Ten_Minutes閱讀 3,554評論 1 27
  • 1.in your eyes 2.完美的世界 3.海角七號 4.重返十七歲 5.這個男人來自地球 6.荒島余生 7...
    城思晨風閱讀 240評論 0 0