JNI 笔记

2017-05-25  本文已影响124人  姑娘请别为难小僧
image.png

javac src/com/example/com/enjoy/test/test.java -d ./bin
javah -jni -classpath ./bin -d ./jni com.example.com.enjoy.test.test

image.png

使用ndk-stack 进行定位到行。


image.png

ifdef __cplusplus

extern "C" {

endif

endif

...

ifdef __cplusplus

}
再次尝试,调用成功!

这几个问题  直接用ok机器的
/etc/udev/rules.d/  目录下文件全部替换即可

jni读写文件 open 时候出错 fd 返回-1 文件节点权限是666
刚开始以为是权限问题,chmod 666后发现还是不行使用java 文件流进行读写 发现读是ok的
写时候出现异常 后面公司大神改了下驱动  将模块驱动中映射的open函数直接返回0
还是不行 。
最后自己怀疑是selinux 问题

image.png

我的avc 异常:
[ 138.125449] <6>.(6)[283:logd.auditd]type=1400 audit(1496479197.368:93): avc: denied { read write } for pid=3144 comm="m.enjoy.testjni" name="ttctl" dev="tmpfs" ino=11250 scontext=u:r:system_app:s0 tcontext=u:object_r:ttctl_device:s0 tclass=chr_file permissive=0
修改: 
/alps/device/mediatek/common/sepolicy/system_app.te
+allow system_app ttctl_device:chr_file { read write ioctl open };
还没验证  下周再验证吧。编译实在是太慢了。
周一了周六遗留的问题解决了看log很重要,但是ioctl 返回值-1剩下就要看驱动了。

-在framework PowerManger中添加 接口,update-api 发现mmm但编译之后 一直报方法未重写,但实际已经重写,不明原因,直接根目录下全编一次就好了。

上一篇下一篇

猜你喜欢

热点阅读