Android ROM开发(三)——精简官方ROM并且内置ROOT权限,开启Romer之路
Android ROM开发(三)——精简官方ROM并且内置ROOT权限,开启Romer之路
相信ROM的相关信息大家通过前几篇的学习都是有所了解了,这里就不在一一提示了,这里我们下载一个官方包,我们还是以之前的红米note为例子;
一.精简
相对于各个厂商的推广软件,你可以毫不留情的把他删掉
1.厂商内置APK
一般厂商的ROM还是会放一点点软件在里面的,不纯在纯净ROM之说,产商内置的软件在system/vendor/app目录下,你全部删掉就是了
MIUI一般不放在这个目录,放在data/目录下
2.系统APK
在system/app下,有些软件也是我们不想要的,比如应用商店,收音机之内的,我们也可以删掉,不过,那都是需要自己斟酌下了,删错了可是要付出代价的哦
3.推广软件
一般官方包不会有这个目录,只有第三方才有,这里主要是我们用recovery刷ROM的时候推送到手机安装的一些aok,我们叫他推广软件,目录为data/app下,小米的结构好像要多一点(每个厂商的目录都有细微的变化)system/miui/app下
4.去掉官方recovery
这里我们只要把根目录下的recovery文件夹删掉就行
5.去掉标识
一些官方自带的东西都可以删掉,比如uboot.img,logo.img,这里我把他们都删掉了,只剩下
二.修改刷机脚本updater-script
既然前面我们把该删掉的都删掉了,那么刷机脚本也是要修改一下咯
1.删除机型效验
getprop("ro.product.device") == "lcsh92_wet_tdd" || abort("This package is for \"lcsh92_wet_tdd\" devices; this is a \"" + getprop("ro.product.device") + "\".");
mount("ext4", "EMMC", "/dev/block/mmcblk0p3", "/data");
2.删除官方recovery解压
这里他是要把刚才根目录的官方recovery拷贝到手机里去,但是我们都已经精简了,所以这里就不用了
package_extract_dir("recovery", "/system") || abort("Failed to extract dir from \"recovery\" to \"/system\".");
recovery还没有删除干净哦,我们Ctrl+F搜索一些recovery
很明显,这两个我们也是不要滴
这里要注意,你精简了什么东西,脚本中都有清单,你要对应的删掉
三.添加ROOT权限
这里是这样的,我们拿着一个机型,我们找到与他对应的root卡刷包,这里我就随便下了一个做示例
注意,这里我只是找了个root包做演示,如果你要添加ROOT权限的话,要找对应型号的ROOT包
1.编译内核
因为厂商在boot中有一个反root的机制,所以,我们需要把boot里的一些东西去掉,这里提供了一个比较方便的编译内核的工具,下载地址:链接: http://pan.baidu.com/s/1i3MqggH 密码: 4g7q
使用方法也是很简单,就不需要使用我们的厨房了,这个操作方便点,这里我们拷贝boot.img放在这个目录下,执行MTK解压boot.bat
解压完成之后同目录下就有一个boot的文件夹了
我们用notpad++打开boot/rmdisk/init.rc
我们滑动到最末尾,删掉这么一段话(每个机型不同,大体位置差不多)
这是另一个机型找的,MIUI是没有的
然后再删除boot/rmdisk/sbin/coolsec
然后执行根目录的MTK打包boot.bat打包回来替换到原来的ROM中去
2.ROOT脚本
我们先来看看ROOT的脚本是什么样子的
//输出
ui_print("***********************************");
ui_print(" ROOTPKG for DASHEN, E.Y. v2.0 ");
ui_print("***********************************");
//进度
show_progress(0.500000, 0);ui_print("Extract files...");
//写入这三个文件
package_extract_file("busybox", "/tmp/busybox");
package_extract_file("updater.sh", "/tmp/updater.sh");
package_extract_file("root.zip", "/tmp/UPDATE-SuperSU.zip");//设置权限
set_perm(0, 0, 0770, "/tmp/busybox");
set_perm(0, 0, 0770, "/tmp/updater.sh");
set_perm(0, 0, 0660, "/tmp/UPDATE-SuperSU.zip");ui_print("Install busybox...");
run_program("/tmp/busybox", "--install", "-s", "/sbin");
//执行
ui_print("Mount system partition...");
mount("ext4", "EMMC", "/system", "/system");show_progress(0.200000, 0);
show_progress(0.200000, 10);ui_print("Updating...");
run_program("/tmp/updater.sh", "/tmp/UPDATE-SuperSU.zip");ui_print("Unmounting system...");
unmount("/system");show_progress(0.100000, 0);
ui_print("Installation complete!");
这里不难看出,只是把ROOT包下的三个文件写入到了手机,也就是我选中的这三个文件
既然如此,那就好办了,我们把这三个文件解压到我们的ROM中去
我们根据ROOT的脚本来看,她就做了三件事,解压,设置权限,执行,那我们照着改就是了,但是记住,Android4.2和Android4.4以及5.0,6.0的指令是不一样的,这里我们都是Android4.2的话,可以直接使用,我们就把这些放在挂载指令之前把
show_progress(0.500000, 0);ui_print("Extract files...");
package_extract_file("busybox", "/tmp/busybox");
package_extract_file("updater.sh", "/tmp/updater.sh");
package_extract_file("root.zip", "/tmp/UPDATE-SuperSU.zip");set_perm(0, 0, 0770, "/tmp/busybox");
set_perm(0, 0, 0770, "/tmp/updater.sh");
set_perm(0, 0, 0660, "/tmp/UPDATE-SuperSU.zip");ui_print("Install busybox...");
run_program("/tmp/busybox", "--install", "-s", "/sbin");ui_print("Mount system partition...");
mount("ext4", "EMMC", "/system", "/system");show_progress(0.200000, 0);
show_progress(0.200000, 10);ui_print("Updating...");
run_program("/tmp/updater.sh", "/tmp/UPDATE-SuperSU.zip");ui_print("Unmounting system...");
unmount("/system");
我们现在其实就可以去测验了,首先,我没有这手机,所以也不好测试,其次,有真机的小伙伴野不要去测试,因为这篇博客只是抛砖引玉而已,并没有讲的多详细,我们只是把这个步骤和思想走下去,以后我们会用更高端的工具来测试
想继续连接的话,可以时刻关注一下,下一篇主要是分析从recovery中备份出来的ZIP包制作成ROM包
Android ROM开发(三)——精简官方ROM并且内置ROOT权限,开启Romer之路相关推荐
- 给ROM包内置ROOT权限,刷机以后立马拥有ROOT权限
基本上的MI2机油都刷了第三方的RECOVERY(如秋大的,C大的)实现了双系统共存,一个系统是MIUI,另一个系统刷上如锤子,COLOR OS,乐蛙等. 由于官方的ROM都是不带ROO ...
- Windows下Nexus 5的Android 5.0以上版本官方ROM的刷机教程
博客链接:http://blog.csdn.net/qq1084283172/article/details/52334452 折腾Android逆向的时候,经常需要给Nexus 5刷机.最近给Nex ...
- 【Android 应用开发】Google 官方 EasyPermissions 权限申请库 ( 最简单用法 | 一行代码搞定权限申请 | 推荐用法 )
文章目录 一.添加依赖 二.在 AndroidManifest.xml 中配置权限 三.权限申请最简单用法 四.推荐使用的用法 五.GitHub 地址 上一篇博客 [Android 应用开发]Goog ...
- 三星s9刷android原生6,三星Galaxy S9 ROM V6.0 更新所有GOODLOCK组件 自带ROOT权限 稳定流畅省电...
三星Galaxy S9 ROM V6.0 更新所有GOODLOCK组件 自带ROOT权限 稳定流畅省电,更多细节优化请自行刷入体验. 三星Galaxy S9 ROM 6.0更新日志: 1.基于G965 ...
- Android NDK开发(三)——常见错误集锦以及LOG使用,androidndk
Android NDK开发(三)--常见错误集锦以及LOG使用,androidndk 转载请注明出处:http://blog.csdn.net/allen315410/article/details/ ...
- Android 蓝牙开发(三) -- 低功耗蓝牙开发
Android 蓝牙开发(一) – 传统蓝牙聊天室 Android 蓝牙开发(三) – 低功耗蓝牙开发 项目工程BluetoothDemo 前面已经学习了经典蓝牙开发,学习了蓝牙的配对连接和通信,又通 ...
- Android SELinux开发入门指南之如何增加Native Binder Service权限
Android SELinux开发入门指南之如何增加Native Binder Service权限 Android SELinux开发多场景实战指南目录: Android SELinux开发入门指 ...
- Android SELinux开发入门指南之如何增加Java Binder Service权限
Android SELinux开发入门指南之如何增加Java Binder Service权限 Android SELinux开发多场景实战指南目录: Android SELinux开发入门指南之 ...
- 全站开发-列表讲解、切片、内置方法、元组、字典
全站开发-列表讲解.切片.内置方法.元组.字典 本篇内容 列表讲解.切片.内置方法 元组 字典 一.列表讲解.切片.内置方法 列表 [] 方式:a = ['Kobe','leborn','cart', ...
最新文章
- 赛思互动:企业开展CRM系统需求调研步骤
- 01.05第六周周总结
- JVM - 剖析Java对象头Object Header之指针压缩
- boost::alignment_of相关的测试程序
- [转载] Java:获取数组中的子数组的多种方法
- 【课题总结】OpenCV 抠图项目实战(8)图像轮廓
- python编程实践-Python编程实践(1)
- 单片机C语言12864绘画,单片机驱动lcd12864液晶绘图功能程序+仿真
- Java GUI+MySQL 银行管理系统初级(课程设计)
- Android实现Twitter登录分享
- java程序设计六大原则
- 客户端负载均衡Ribbon
- 计算机制图基本知识6,机械制图基础知识
- 我的IOS端SIP电话开发历程
- czl蒻蒟的OI之路6
- 淘宝滞销宝贝怎么处理?面对滞销宝贝怎么正确处理?
- 北京中医药大学22春《生物化学B》平时作业1【专职辅导答案】
- unicode 生僻字_[微软拼音小技巧] 如何用Unicode输入生僻字
- poj1950 Dessert(DFS)
- freemind问题合集
热门文章
- 精益生产培训对企业有哪些作用?
- Xubuntu22.04之超级效率工具:推4款番茄法(第一百七十)
- android - 图片压缩,防止崩溃OOM
- OPNET Modeler 的安装及其相关配置
- Oled实现动图显示——篮球少年
- mysql导出数据字典_Mysql中三个导出数据字典文档Word或者HTML的工具
- FBI:我们还在使用圣贝纳迪诺iPhone破解技术,不会对外分享
- Hadoop2.6.0安装教程_单机/伪分布式配置
- css 绘制直角梯形 和 平行四边形
- linux运行reggen文件,Linux启动问题——记Virtex-II Pro(PPC405)Linux内核移植