AndroidStudio編寫JNI文件

JNI---Java Native Inerface

1、編寫 .java類

packagecom.vione.utils;

public?class TestUtil?{

static{

System.loadLibrary("testUtil");

}

public native String stringTest(String str);

}

2、根據(jù).java類生產(chǎn).h文件

(1)進入java目錄 cd?D:\AndroidStudioProjects\vione\app\src\main\java

(2)執(zhí)行 javah -d ../jni com.vione.utils.TestUtil

com_vione_utils_TestUtil.h

3.編寫.c文件

com_vione_utils_TestUtil.c

#include

JNIEXPORT?jstring?JNICALL?Java_com_vione_utils_TestUtil_stringTest

(JNIEnv?*env,jobject?obj,jstring?string)?{

return string;

};

4.在jni目錄下添加Android.mk文件(必須是這個名稱Android.mk)文件

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := demo //要生成的so庫的名稱,但實際為libdemo.so

LOCAL_SRC_FILES := demo.c //要使用的文件,剛才編寫的demo.c文件

include $(BUILD_SHARED_LIBRARY)

5.編譯so文件(必須配置ndk環(huán)境變量)

執(zhí)行命令ndk-build

兩個必要設置

1、在local.properties中設置NDK路徑,也可以AndroidStudio中設置,我的NDK示例如下:

2、在app的build.gradle的android節(jié)點下設置:

這兩處必要的地方該修改完畢后就可以調用我們生成的so文件了。

6.使用so文件

(1)可以拷貝到相應的引用文件中

(2)在TestUtil.java 文件loadLibrary方法

7、其他

在gradle.properties中添加 Android.useDeprecatedNdk=true

在build.gradle(app)中添加

sourceSets {

main{

jniLibs.srcDirs= ['libs']

jni.srcDirs= []

}

}

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

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

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