打开root权限和patch制作

小编:霸主 更新时间:2022-08-25

打开root权限

平常在进入Android系统获取root权限的方式是使用ADB shell的方式,但是某个应用或功能需要root权限,那么在每次开机后还需要连接ADB获取root权限是十分麻烦且不符合需求的,按照以下方式修改可以使系统上电后默认获取root权限。

以RK3399的Android7.1为例:

1. 修改build/core/main.mk

ifneq (,$(user_variant)) ## Target is secure in user builds. ADDITIONAL_DEFAULT_PROPERTIES += ro.secure=0 改为0 默认是1 ifeq (true,$(strip $(enable_target_debugging))) \# Target is more debuggable and adbd is on by default ADDITIONAL_DEFAULT_PROPERTIES += ro.debuggable=1 改为1 默认是0 ADDITIONAL_DEFAULT_PROPERTIES += ro.secure=0 (或者按第2条改)

2. 修改:/device/rockchip/rk3399/system.prop

如果需要将“允许USB调试吗?...这台计算机的RSA密钥”提示去掉,可以解压修改system.img中build.prop

将ro.adb.secure=0(0为不显示信任此电脑对话框,1为显示信任此电脑对话框)

ro.adb.secure=0 \ 改为0 默认是1

Patch制作

之前我们大多数的开发方式都是直接在源码中增删改查,然后使用git去进行版本管理,这种方式对于一个纯净的项目一般不会有问题。假设有如下场景,A客户同一个系列产品有3个型号,除了共有功能外,各个型号还有自身定制的功能,这种情景下适合使用patch的方式来做了,将客户的所有需求都制成单一功能的patch,按照客户型号需求在编译前打上patch即可,源码一直保持在最纯净的状态。

实现步骤

获取到源码后在合适的位置建立如下路径:patch->客户名->型号(01,02,03),common,将共有的功能放在common下,各型号文件夹下放定制功能,最后在各文件夹下新建脚本文件,common文件夹下的脚本应该被其它定制型号文件夹的脚本调用。

patch

patch最好遵从单一功能原则,即一个功能一个patch。开发某个功能前,先保证之前的内容已经全部add了,不然会混入到patch,开发完成后使用如下命令制作patch

git diff filename >> *.patch

制作完成后,将其add起来,开始进行下一功能的开发。制作好的patch放到对应的文件夹,在脚本中新增打patch的语句如下:

cd kernel/ #跳转到要打patch的目录 pwd patch -p1 -i ../a.patch #打上patch patch -Rp1 -i ../a.patch #撤销patch cd ../ #退回到根目录

这里主要注意路径的问题,patch要打在哪里和patch的位置以及当前执行脚本位置的相对路径关系。

另外脚本的编写顺序最好和自己开发步骤的顺序一致,不然容易出现冲突问题。开发完成后就只需要提交这些patch到服务器即可,源码中的内容就不需要提交了。

头条号:怀揣梦想的自由开发者

公众号:风宇软件

B站:猫猫侠的正义