深圳建网站的,鄂州网吧暂停营业,郑州网站建设一汉狮网络,包装设计公司名字Android8以后版本
一、指纹服务不能自动 指纹服务fingerprintd(biometrics fingerprintservice)#xff0c;可以手动起来#xff0c;但是在init.rc中无法启动。
解决办法#xff1a;
1.抓取开机时kernel log #xff0c;确认我们的启动指纹服务的init.rc 文件有被init.c…Android8以后版本
一、指纹服务不能自动 指纹服务fingerprintd(biometrics fingerprintservice)可以手动起来但是在init.rc中无法启动。
解决办法
1.抓取开机时kernel log 确认我们的启动指纹服务的init.rc 文件有被init.cpp加载进来如图所示 注 push 进去的init.rc 要跟目录里面的其他权限保持一致指纹的init.rc 文件在系统目录:vendor/etc/init
2.不论SELinux策略是否关闭你都需要写好你的te文件。
3.请用adb shell ls -lZ 查看你的 service 文件看下文件类型是不是同你在te文件file_contexts里面注册的文件类型一样,如图所示 二、指纹服务不能回调给framework framework调用IBiometricsFingerprint接口enumedate方法时指纹服务fingerprintd 的enumedate方法能够被调用 但是我们回调notify(message) 时候framework中的回调函数onEnumerate()不能执行。
解决办法
在你的biometrics fingerprint service te 文件里面用vndbinder_use(xx) 代替 binder_use(xx)如下图所示
xx指你的biometrics fingerprint service
三、enroll时候报错 在hal层成功加载之后进入到enroll界面。发现还没有录入就自动退出enroll界面。 framework 在enroll 之前会调用 enumedate(),cancel(),pre_enroll() 等函数如果这些函数没执行成功或者return 一个错误的值。 就enroll 不了。
解决方法
实现上述的函数按照要求返回或者回调相关的值。
四、enumedate()函数策略问题 此函数是枚举 所有的指纹模板。需要你一个一个回调给framework
1.指纹id为0时候需要gid 0fid 0;remaining_templates 0
2.当指纹id不为0的时候需要把gid fid,remaining_templates 报上去 当时最后一个模板的时候remaining_templates要为0
五、SELinux android 8.0 SELinux 发生了比较大的变化目前SELinux 编译出来,会生成在两个目录
1.system/etc/sepolicy 2.vendor/etc/sepolicy
编译SELinux 不能像以前那样只编译bootimage.目前编译bootimage 是生成不了Selinux 文件的 暂时只能想到全部编译的方法。
检验SeLinux 是否编译到的办法
1.android 8.0之前可以看下这out/project/obj/sepolicy_interdaiates/policy.conf这个文件里面有没有 自己书写的selinux 规则
2.android 8.0之后看下system/etc/sepolicy或者vendor/etc/sepolicy 有没有自己书写的selinux 规则
六、从源码中关闭SELinux安全策略 代码位置/system/core/init/init.cpp
修改selinux_is_enforcing() 函数为下面
static bool selinux_is_enforcing(void){ return false; //force set selinux permissive. if (ALLOW_PERMISSIVE_SELINUX) { return selinux_status_from_cmdline() SELINUX_ENFORCING; } return true; } 七、app加载jni编译出来的.so报错问题 如果你app是在系统编译然后你install安装的很容易出现此问题
1.报错大概具体如下:
java.lang.UnsatisfiedLinkError: dlopen failed: library xx.so (/system/lib/xx.so) needed or dlopened by /system/lib/libnativeloader.so is not accessible for the namespace classloader-namespaceat java.lang.Runtime.loadLibrary0(Runtime.java:977) at java.lang.System.loadLibrary(System.java:1602) 原因android 7.0发生一些行为变更app不能调用系统的私有.so 文件。只能调用系统的公有.so
解决方案
把自己jni生成的.so 放在/system/etc/public.libraries.txt 或者/vendor/etc/public.libraries.txt中去。
然后把public.libraries.txt push 进去
八、CST 指纹测试失败
九、SPI通信失败 十、识别率低
十一、唤醒慢
十二、指纹无法工作