創(chuàng)建項(xiàng)目,創(chuàng)建項(xiàng)目所依賴的mudulelib
在lib中創(chuàng)建java文件 :如JniUtil
編寫(xiě)文件,這個(gè)圈出來(lái)的就是你要引入的so庫(kù)名將來(lái)就生成它
在文件tack中右鍵open in terminal打開(kāi)sudio中終端,默認(rèn)在當(dāng)前文件下
生成“.h”文件,輸入 javac Test.java -h? ../../../../jni? ? 將生成文件在src/main/jni目錄下,和java文件同級(jí)
文件將包名和類名拼接而成生成.h文件,默認(rèn)引入了<jni.h>,方法名會(huì)和JniUtil.java中相對(duì)應(yīng)
編寫(xiě)c或者c++代碼JniUtil.c,倒入.h文件方法對(duì)應(yīng)生成的.h文件
編寫(xiě)Android.mk和Application.mk文件,主要改動(dòng)兩個(gè),其他就默認(rèn)吧~然后右鍵jni打開(kāi)終端
ndk-build
(可能沒(méi)有ndk的環(huán)境變量,如果不會(huì)配置環(huán)境就去死吧~)
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := native-lib //將要生成的文件名
LOCAL_SRC_FILES := JniUtil.c //生成so的c文件
include $(BUILD_SHARED_LIBRARY)
生成所有類型的so這個(gè)會(huì)缺少armeabi的so,直接從v7a中考一份就行了
生成的so在src/main/lib文件下,和jni目錄同級(jí)
生成倆,不知道為啥,反正用libs里的就ok,默認(rèn)如果so不是以lib開(kāi)頭默認(rèn)拼接了,不用管他,
如果要生成aar的話就刪掉沒(méi)用的,編輯gradle文件將lib引進(jìn)去,然后
生成的aar在這里
拿去用就可以了java文件不刪除,直接通過(guò)它就可以調(diào)用了