调试android 指纹遇到的坑
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 = 0;fid = 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-namespace"at 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通信失败

十、识别率低
十一、唤醒慢
十二、指纹无法工作

相关文章:
调试android 指纹遇到的坑
Android8以后版本 一、指纹服务不能自动 指纹服务fingerprintd(biometrics fingerprintservice),可以手动起来,但是在init.rc中无法启动。 解决办法: 1.抓取开机时kernel log ,确认我们的启动指纹服务的init.rc 文件有被init.c…...
剑指offer(专项突破)---字符串
总目录:剑指offer(专项突破)---目录-CSDN博客 1.字符串的基本知识 C语言中: 函数名功能描述strcpy(s1, s2)将字符串s2复制到字符串s1中,包括结束符\0,要求s1有足够空间容纳s2的内容。strncpy(s1, s2, n)…...
【springboot】 多数据源实现
文章目录 1. 引言:多数据源的必要性和应用场景**为什么需要多数据源?****应用场景** 2. Spring Boot中的数据源配置2.1 默认数据源配置简介2.2 如何在Spring Boot中配置多个数据源 3. 整合MyBatis与多数据源**配置MyBatis使用多数据源****Mapper接口的数…...
多模态COGMEN详解
✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨ 🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢,在这里我会分享我的知识和经验。&am…...
django 实战(python 3.x/django 3/sqlite)
要在 Python 3.x 环境中使用 Django 3.2 和 SQLite 创建一个新的 Django 项目,你可以按照以下步骤进行操作。这些步骤假设你已经安装了 Python 3.x 和 pip。 1. 设置虚拟环境 首先,建议为你的 Django 项目创建一个虚拟环境,以便隔离项目的依…...
图数据库 | 12、图数据库架构设计——高性能计算架构
在传统类型的数据库架构设计中,通常不会单独介绍计算架构,一切都围绕存储引擎展开,毕竟存储架构是基础,尤其是在传统的基于磁盘存储的数据库架构设计中。 类似地,在图数据库架构设计中,项目就围绕存储的方…...
Unity 利用Button 组件辅助Scroll View 滚动
实现 创建枚举类ScrollDir 以区分滚动方向。每组两个按钮负责同方向上左右/上下滚动。 Update 中实时获取Scroll View 滚动条当前位置。 if (dir.Equals(ScrollDir.vertical)) {posCurrent scroll.verticalNormalizedPosition; } else if (dir.Equals(ScrollDir.horizontal)…...
Ubuntu 安装Ansible ansible.cfg配置文件生成
安装后的ansible.cfg后的默认内容如下: rootlocalhost:/etc/ansible# cat ansible.cfg # Since Ansible 2.12 (core): # To generate an example config file (a "disabled" one with all default settings, commented out): # $ ansible-…...
使用PaddlePaddle实现线性回归模型
目录 编辑 引言 PaddlePaddle简介 线性回归模型的构建 1. 准备数据 2. 定义模型 3. 准备数据加载器 4. 定义损失函数和优化器 5. 训练模型 6. 评估模型 7. 预测 结论 引言 线性回归是统计学和机器学习中一个经典的算法,用于预测一个因变量࿰…...
MongoDB集群的介绍与搭建
MongoDB集群的介绍与搭建 一.MongoDB集群的介绍 注意:Mongodb是一个比较流行的NoSQL数据库,它的存储方式是文档式存储,并不是Key-Value形式; 1.1集群的优势和特性 MongoDB集群的优势主要体现在以下几个方面: (1)高…...
PhpStorm配置Laravel
本文是2024最新的通过phpstorm创建laravel项目 1.下载phpstorm 2.检查本电脑的环境phpcomposer 显示图标就是安装成功了,不会安装的百度自行安装 3.安装完后,自行创建一个空目录不要有中文,然后运行cmd 输入以下命令,即可创建…...
Solving the Makefile Missing Separator Stop Error in VSCode
1. 打开 Makefile 并转换缩进 步骤 1: 在 VSCode 中打开 Makefile 打开 VSCode。使用文件浏览器或 Ctrl O(在 Mac 上是 Cmd O)打开你的 Makefile。 步骤 2: 打开命令面板 按 Ctrl Shift P(在 Mac 上是 Cmd Shift P)&…...
MySQL大小写敏感、MySQL设置字段大小写敏感
文章目录 一、MySQL大小写敏感规则二、设置数据库及表名大小写敏感 2.1、查询库名及表名是否大小写敏感2.2、修改库名及表名大小写敏感 三、MySQL列名大小写不敏感四、lower_case_table_name与校对规则 4.1、验证校对规则影响大小写敏感4.1、验证校对规则影响排序 五、设置字段…...
项目搭建:guice,jdbc,maven
当然,以下是一个使用Guice、JDBC和Maven实现接口项目的具体例子。这个项目将展示如何创建一个简单的用户管理应用,包括用户信息的增删改查(CRUD)操作。 ### 1. Maven pom.xml 文件 首先确保你的pom.xml文件包含必要的依赖&#…...
第四届新生程序设计竞赛正式赛(C语言)
A: HNUCM的学习达人 SQ同学是HNUCM的学习达人,据说他每七天就能够看完一本书,每天看七分之一本书,而且他喜欢看完一本书之后再看另外一本。 现在请你编写一个程序,统计在指定天数中,SQ同学看完了多少本完整的书&#x…...
【分布式知识】Redis6.x新特性了解
文章目录 Redis6.x新特性1. 多线程I/O处理2. 改进的过期算法3. SSL/TLS支持4. ACL(访问控制列表)5. RESP3协议6. 客户端缓存7. 副本的无盘复制8. 其他改进 Redis配置详解1. 基础配置2. 安全配置3. 持久化配置4. 客户端与连接5. 性能与资源限制6. 其他配置…...
程序员需要具备哪些知识?
程序员需要掌握的知识广泛而深厚,这主要取决于具体从事的领域和技术方向。不过,有些核心知识是共通的,就像建房子的地基一样,下面来讲讲这些关键领域: 1. 编程语言: 无论你是搞前端、后端、移动开发还是嵌…...
实验四:MyBatis 的关联映射
目录: 一 、实验目的: 熟练掌握实体之间的各种映射关系。 二 、预习要求: 预习数据库原理中所讲过的一对一、一对多和多对多关系 三、实验内容: 1. 查询所有订单信息,关联查询下单用户信息(注意:因为一…...
【Leetcode】189.轮转数组
题目链接: 189.轮转数组 题目描述: 解题思路: 要想实现数组元素向右轮转k个位置,可是将数组三次反转来实现 以 nums [1,2,3,4,5,6,7], k 3 为例,最终要得到[5,6,7,1,2,3,4]: 第一次反转:将整个数组反转…...
【JavaSE】常见面试问题
1. 什么是 Java 中的多态? 多态是 Java 中面向对象的核心特性之一,指的是同一操作作用于不同类型的对象时表现出不同的行为。通过方法重载和方法重写实现。方法重载是同一方法名,根据参数不同做不同处理,属于编译时多态ÿ…...
DCIM存内计算技术:原理、挑战与自动化设计实践
1. 存内计算技术演进与DCIM核心挑战在AI计算架构的发展历程中,存内计算(Computing-in-Memory, CIM)技术正在引发一场深刻的范式变革。传统冯诺依曼架构中,数据需要在处理器和存储器之间频繁搬运,这种"内存墙"…...
Agent_Skills_万千应用_第03篇_PPT 生成 Skill:从资料到可演示幻灯片
Agent Skills 万千应用 第03篇 PPT 生成 Skill:从资料到可演示幻灯片01|场景痛点:PPT 最难的不是做,而是“讲清楚” 你有没有遇到过这种情况? 老板临时说:“明天下午做个 10 分钟汇报。” 你手里有一堆资料…...
从关系型到NoSQL:Postgres与Cassandra数据建模终极对比指南
从关系型到NoSQL:Postgres与Cassandra数据建模终极对比指南 【免费下载链接】Udacity-Data-Engineering-Projects Few projects related to Data Engineering including Data Modeling, Infrastructure setup on cloud, Data Warehousing and Data Lake development…...
AI模型的持续优化:从A/B测试到在线学习
AI模型的持续优化:从A/B测试到在线学习 前言 我们的 AI 产品上线后,我以为模型训练一次就能一直用。但现实告诉我:AI 模型需要持续优化,就像养孩子一样,需要不断培养。 从最初的版本到现在,我们的模型经…...
MySQL 8安装指南:Win/Mac/Linux全平台教程,含避坑技巧
一、MySQL 8 版本选择推荐下载 Oracle 官方版,开源、免费、更新最全。 👉 官网下载地址: https://dev.mysql.com/downloads/mysql/🪟 二、Windows 安装步骤✅ 1️⃣ 下载 Installer访问官网链接 → 点击 "MySQL Community (G…...
中兴光猫工厂模式智能解锁:3步获得完全控制权限
中兴光猫工厂模式智能解锁:3步获得完全控制权限 【免费下载链接】zteOnu A tool that can open ZTE onu device factory mode 项目地址: https://gitcode.com/gh_mirrors/zt/zteOnu 你是否曾因中兴光猫的限制而无法进行高级网络配置?是否在需要深…...
如何让老款Mac重获新生:OpenCore Legacy Patcher完全指南
如何让老款Mac重获新生:OpenCore Legacy Patcher完全指南 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 还在为苹果官方停止支持的老款Mac无法升…...
使用TaotokenCLI工具一键配置开发环境与模型密钥
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 使用Taotoken CLI工具一键配置开发环境与模型密钥 在接入大模型进行开发时,手动配置API密钥、Base URL和模型ID是常见的…...
GEO优化的时间窗口期:从流量分发到语义占位的技术范式转移
过去几十年,互联网的信息检索逻辑建立在倒排索引与超链接分析的基础之上:用户输入关键词,搜索引擎通过爬虫抓取并返回链接列表,网站则通过SEO(搜索引擎优化)争夺SERP(搜索结果页)的排…...
CANN-ATB多卡推理-昇腾NPU上Llama70B怎么切到8张卡
CANN-ATB多卡推理-昇腾NPU上Llama70B怎么切到8张卡 Llama2-70B 的权重 140GB,单张 Atlas 800I A2 的 64GB 显存放不下。ATB 的多卡推理用 Tensor Parallel 把模型切到多张 NPU 上,每张卡只存 1/N 的权重和 KV Cache。 Tensor Parallel 的切法 Llama2-70B…...
