-
ndk-stack
查看全部 -
ndk stack
查看全部 -
ndklog
查看全部 -
反编译JNI-crash日志
addr2line //使用较麻烦
ndk-stack
adb logcat | ndk-stack -sym ***/armeabi //so库路径
adb logcat > /tem/foo.txt
ndk-stack -sym ***/armeabi -dump foo.txt
查看全部 -
ndk常见异常思维导图
查看全部 -
找到构造方法 GetMethodID(cls,"<init>", "()V");
NewObject(cls,mtd,参数);
查看全部 -
获取native方法签名
javap -s 全类名
查看全部 -
ABI : 应用程序二进制接口
定义了二进制文件(如so库)如何运行在相应的系统平台(指令集,内存对齐,系统函数库)
指定编译对应平台so
ndk{ abiFilters "x86" }
查看全部 -
NDK环境搭建
配置ndk关联AS ProjectStruct
生成头文件
src/main/java 目录下 javah -d ../jni 全路径类名
jni中右键新建C++ source
cpp中键入自己逻辑
app.gradle /defaultConfig中
ndk{
moduleName "xx"
}
查看全部 -
1.生成头文件:
cd app/src/main/java
javah -d ../jni com.xxx.Hello
2.获取方法签名:
cd app/build/intermediates/classes/debug
javap -s com.xxx.Hello
3.调Java方法
jclass cls_hello=env->FindClass("com/xxx/Hello");
jmethodID mtd_static_method=env->GetMethodID(cls_hello,"staticMethod",方法签名);
env->CallStaticVoidMethod(类,方法ID,入参);
4.每步都要判断NULL,需要include下 stdlib.h stdio.h
5.类与临时string需要释放下,env->DeleteLocalRef(xxxx)
查看全部 -
cpu架构
查看全部 -
配置ndk环境
查看全部 -
//生成指定类的头文件到指定路径 javah -d ../jni com.hello.fmod.Hello // 若报错: 编码GBK的不可映射字符 // 错误原因-->JDK是国际版的,在编译的时候,如果我们没有用-encoding参数指定我们的JAVA源程序的编码格式,则javac.exe首先获得我们操作系统默认采用的编码格式。 // 解决方法:使用-encoding参数指明编码方式 javah -d ../jni -encoding UTF-8 com.dhyz.ndkvoice.Utils
查看全部 -
ndk异常处理
ExceptionCheck()也可以换成ExceptionOccurred()
查看全部 -
ndk-stack
查看全部 -
ndk调试
查看全部 -
修改实例成员变量
查看全部 -
Jni调用java实例方法
查看全部 -
native修改java成员变量
查看全部 -
JNI调用静态方法
查看全部 -
命令行生成头文件
查看全部
举报