这篇文章完成日期在:2017-02-08 22:00:08。
现在无需修复,包括 8.x (Oreo)、7.x (Nougat)、6.0 (Marshmallow、17 年 6 月后的版本)
指纹这玩意,其实我不怎么玩来着(甚至锁屏都没密码 2333)。在酷安发某文章的时候有个酷友提到了关于指纹的问题,于是就捣鼓了下指纹。
如果你是 FPC 用户,那你可以跳过这篇文章了(FPC 指纹妥妥滴用,这篇文章主要说的是 Goodix 指纹的修复方法)。
这里简单讲一下,红米 Note 3 有不同的批次,有不同的批次就有不同厂商的元件。指纹主要分两家: FPC 与 Goodix。小米在 Gi(a)t(y)hub 里有关红米 Note 3 的内核(Android L)代码中,对于 Goodix 的描述并不详细,所以开发者们很难通过这种方法来生成指纹所需要的驱动和相关文件。红米 Note 3 有了开发版的 Android 6.0 后,xda-developers 的大神们就开始着手修复 Android 6.0 以上的指纹问题。有一个临时解决方法,只需要补充 boot.img 和 System 有关 Goodix 的代码与文件即可。
请注意
1.这篇文章是在 Linux 的环境下进行操作得出的,Windows 下有相应的替代方法
2.此方法仅针对 Lineage OS,其它第三方系统请自测
3.所有操作都在 /home 目录下完成
4.该方法不稳定,会有指纹短暂性失效的 bug
2.此方法仅针对 Lineage OS,其它第三方系统请自测
3.所有操作都在 /home 目录下完成
4.该方法不稳定,会有指纹短暂性失效的 bug
提前准备
- Lineage OS 刷机包
下载地址:https://download.lineageos.org - 需要的 Goodix 文件
Goodix 指纹的驱动、配置等
下载地址:点我 - boot.img
这玩意就不多说了吧,从你下载的 Lineage OS 刷机包里面提取就可以了 - mkbootimg
Linux 下解包 boot.img 的常用工具,这里我推荐 xiaolu 的解包工具(下载点我) - file_contexts 与 file_contexts.bin 的相互转换工具
在 Android 7.x 中,解包 ramdisk 后的file_contexts.bin无法直接编辑,需要通过工具来进行转换,cofface 大神做了一个转换工具解决了这个问题
下载地址:http://blog.cofface.com/archives/2255.html
注意:
- 下载 Lineage OS 的时候,请选择正确的机型 (
Xiaomi
>kenzo
) mkbootimg
的使用方法在这里做省略,Github 中的readme.md
下有详细介绍。- 转换工具必须要在 Linux 下进行操作。
第一步:解压刷机包、将缺失的文件替换进去
- 输入命令
unzip 你下载的LineageOS刷机包.zip -d Lineage
你会发现 /home 中多了个 Lineage 文件夹,这就是解压的刷机包文件,boot.img 也在里面 - 输入命令
unzip Goodix.zip -d Goodix
你又会发现 /home 中多了个 Goodix 文件夹,这就是需要补上去的指纹补丁 - 在文件管理器中直接将 Goodix 文件夹中的文件复制到
Lineage/system
中
至此,补充完成
第二步:解开 boot.img,得到 ramdisk
和 kernel
- 将 boot.img 复制到
/home
,同时将工具也扔在这里 - 输入命令
sudo sh mkboot boot.img output
解开的 boot.img 将会在output
文件夹中
第三步:转换 file_contexts.bin
输入命令./sefcontext -o file_contexts file_contexts.bin
转换完成
第四步:补充 boot.img 中有关的缺失代码
- 打开
file_contexts
,用搜索敲下# Fingerprint
这里是有关指纹的代码地方,你会发现这里只有fpc1020
的有关描述,并没有 Goodix 的,下面我们把它添加到其中
在下面直接添加
/dev/gf66xx-spi u:object_r:gx_fpd_device:s0
/dev/ttyACM[0-9]* u:object_r:gx_fpd_device:s0
/dev/goodix_fp* u:object_r:gx_fpd_device:s0
/system/bin/gx_fpd u:object_r:gx_fpd_exec:s0
/data/system/fingerprint(/.*)? u:object_r:gx_fpd_data_file:s0
/data/goodix/* u:object_r:gx_fpd_data_file:s0
/persist/data/gxfp(/.*)? u:object_r:gx_fpd_data_file:s0
/persist/data/gxfp u:object_r:gx_fpd_data_file:s0
/system/lib/libfpservice.so u:object_r:gx_fpd_lib_file:s0
/system/lib/libfpalgorithm.so u:object_r:gx_fpd_lib_file:s0
/system/lib/libfp_client.so u:object_r:gx_fp_lib_file:s0
/system/lib/libfphal.so u:object_r:gx_fpd_lib_file:s0
/system/lib/libfpnav.so u:object_r:gx_fpd_lib_file:s0
/system/lib64/libfpservice.so u:object_r:gx_fpd_lib_file:s0
/system/lib64/libfpalgorithm.so u:object_r:gx_fpd_lib_file:s0
/system/lib64/libfp_client.so u:object_r:gx_fp_lib_file:s0
/system/lib64/libfphal.so u:object_r:gx_fpd_lib_file:s0
/system/lib64/libfpnav.so u:object_r:gx_fpd_lib_file:s0
- 打开
init.qcom.rc
,用搜索敲下on fs
在后面直接添加
chown system system /dev/goodix_fp
chmod 0644 /dev/goodix_fp
- 在最后一行敲下
service gx_fpd /system/bin/gx_fpd
class late_start
user system
group system
disabled
on property:persist.sys.fp.sensor=goodix
start gx_fpd
- 打开
init.qcom.sh
,在最后一行敲下
if [ -d /sys/class/goodix_fp ]; then
setprop persist.sys.fp.sensor goodix
else
setprop persist.sys.fp.sensor fpc
fi
全部完成,保存退出
第五步:还原 file_contexts
,重新打包 boot.img,打包刷机包
- 输入命令
./sefcontext_compile -o file_contexts.bin file_contexts
转换完成 - 输入命令
sudo sh mkboot output boot1.img
boot.img 打包完成,名称为 boot1.img - 将 boot1.img 重命名为 boot.img,并复制到解压的刷机包文件,替换掉原来的
- 输入命令
zip -r lineage.zip Lineage
打包完成
全部完成,刷进去试试看吧!
更新记录
2017/02/09 00:04 创建文章
2017/02/09 05:26 修改1
2018/02/13 16:28 修改2