平常在进入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站:猫猫侠的正义