Android环境下的JNI 编写及所遇到的坑
因为客户的特殊要求,需要输出一个so文件&jar文件,so文件是调jar内部的一些函数,客户再用so调用我们公司的so,完整的调用关系是:
客户APP<——>客户so<——>我司so<—–>我司jar<—->我司后台,其中最头疼的是so<—->so,动态加载怎么没能成功,因为时间紧迫,放弃了这一步,直接客户APP<—>我司so,先按着这个去实现了!熬了两宿,现在做此记录,做了N年的伸手党难免惭愧,写在这里,希望能帮到大家!在此希望明年加薪,能把房子事情落实下来!不说了,都是泪啊!
首先说最坑莫过于,定位不了BUG,尤其是在C中的错,因为公司老板和大神编写C,NotePad++纯手打,然后在Android环境下进行编译,我赶鸭子上架的看了些jni博客,然后是错误百出,找不到问题所在,打不出Log.
首先是在AndroidStudio编译器下:
在项目的buildg.gradle android 标签下的defaultConfig 标签下
ndk {
moduleName "you's libname"
ldLibs "log", "z", "m"// 加载log
}
然后在c文件中去
#include <android/log.h>
#define LOG_TAG "n