美文网首页
Android JNI手册——Java/Kotlin与Nativ

Android JNI手册——Java/Kotlin与Nativ

作者: _好好学习 | 来源:发表于2023-12-07 10:31 被阅读0次

Java声明native方法与生成对应的文件头

可以通过javah命令给java文件中声明的native方法生成对应的jni方法,如javah -classpath . 包名.类名

Kotlin声明native方法与生成对应的文件头

如果想通过javah命令给kt文件中声明的external方法生成对应的jni方法,需要先将该kt进行解释得到.class文件。
如图,kt解释后得到的.class文件位于projectRoot/app/build/tmp/kotlin-classes/debug中,通过javah 包名.类名即可生成头文件,头文件中会含有对应的jni方法。

如果执行javah命令时碰到报错提示找不到对应的类文件可以先将报错对应的这部分代码注释掉,毕竟我们想要的是生成头文件,生成头文件后还原即可。


image.png

传递基本数据类型

传递数组与字符串

传递对象

Java Thread & Native Thread

定位native crash

● 拿到crash的地址符号
● 拿到对应的so
● 还原native堆栈调用行:在/Users/darrenyuan/Library/Android/sdk/ndk/android-ndk-r12b/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64/bin 目录下执行 arm-linux-androideabi-addr2line –e XXXX.so pc地址1 pc地址2 … 如 arm-linux-androideabi-addr2line -e /Users/darrenyuan/Desktop/6月技术版/lib/arm64-v8a/libaudiobase.so 000000000001a768
● 除使用addr命令外还可以使用IDA还原native crash中的堆栈

相关文章

网友评论

      本文标题:Android JNI手册——Java/Kotlin与Nativ

      本文链接:https://www.haomeiwen.com/subject/vyusgdtx.html