1.导入so文件
将so文件拷贝到项目中,路径自己定吧,只要配置的时候不出错就行,我是这样的拷贝到jniLibs文件夹中的。jniLibs下的子文件夹表示的是cpu类型,你可以少建些,但不可以不建,so文件就放在这些文件夹下,每个cpu类型都放。 一般放入app/libs/目录下arm64-v8a、armeabi-v7a、x86、x86_64 ABI架构。build/gradle app 引入
sourceSets {
main {
jni.srcDirs = []
jniLibs.srcDirs = ['libs']
}
}
引入的项目包名必须与.so库实现方法的包名一致。
比如我的so文件中实现了“Java_com_example_win7_jnitest_util_JniUtil_stringFromSelf”方法,
“com_example_win7_jnitest_util”表示的是包名,
“JniUtil”表示的是方法所在类,“stringFromSelf”表示的是方法名。
因此,我在“com.example.win7.jnitest.util”包下新建了JniUtil类来声名方法
(注:so文件实现了哪些方法可以在.h头文件中看到)
JniUtil.java:
public class JniUtil {static { System.loadLibrary("test-lib"); }public static native StringstringFromSelf(String str); //这里虽然是红字,但可以跑起来}
// Example of a call to a native method TextView tv = (TextView) findViewById(R.id.sample_text); tv.setText(JniUtil.stringFromSelf("jack"));
网友评论