zoukankan      html  css  js  c++  java
  • 【转】ANDROIDROM制作(一)——ROM结构介绍、精简和内置、一般刷机过程

    作为对Rom制作的一个总结,本节主要介绍以下内容: 
      1、Rom介绍 
      2、Rom文件结构 
      3、app的精简与内置 
      4、Recovery简介 
      5、radio包简介 
      6、一般刷机过程、刷机过程中可能造成刷机失败的注意事项 
      7、如何实现Rom的基本美化 
      8、Rom包签名 
      ------------------------ 
      1、我们经常说的刷ROM是刷系统的意思,但是ROM的原意并不是这样,ROM的全称是read only memory只读储存器,正因为它是“只读”的,所以系统文件通常动会存储在手机ROM里,但这个只读是有条件限定的,通常情况下我们只能读,但在特殊情况下我们可以对ROM进行写操作,往ROM里写入新的系统文件的过程,就是刷机,也称“刷ROM”,而把系统文件包叫做了ROM,这是一种俗称,所以网上找不到能支持这个含义的英文全称 
      简单讲一下ROM包这个概念的历史,被人们熟识的刷系统应该是在WM平台上开始多起来的,当时还出现了一批制作ROM的专业工作人员,当然WM我接触的少,就不多说了,免得说错误导大家,但是刷机这个概念真正火起来还是在Android平台,出现了更多的Rom包制作者,或专职或出于爱好,也有很多经常刷机的发烧友,不过还是提醒一下,刷机也是有一定风险的,需谨慎对待! 
      2、关于Rom包的文件结构,一般Rom文件包下有以下文件: 
        data 
        META-IN 
        system 
        boot.img 
        data:顾名思义,是一个存储数据的文件夹,如安装第三方app会保存在data/data/app目录下 
        META-INF:内含升级脚本及ROM的签名 
        System:系统文件夹 
        Boot.img:android内核文件 
        System文件夹下还有以下文件或文件夹: 
          app:放置系统软件的目录,所以内置软件就是在制作Rom包的时候把apk文件放入此文件夹 
          bin:Android系统本地程序,主要是Linux系统自带的组件 
          Etc文件夹:放置android系统配置文件,如apn文件等 
          Fonts文件夹:放置字体文件,包含标准字体和粗体、斜体、中文、英文等 
          Framework文件夹:放置android系统平台框架文件及布局控制 
          Lib文件夹:放置系统底层库及运行库文件 
          Media文件夹:放置系统铃声音乐文件夹及开机动画文件,需要说明一下开机动画其实是多张静态图片的帧动画效果 
          Tts文件夹:放置手机的语音文件 
          Usr文件夹: 放置用户文件,包含共享、键盘布局、时间区域文件等 
          Vendor文件夹:放置ROM厂商定制内容 
          Xbin文件夹:放置用户系统支持程序文件 
          Build.prop文件:系统属性配置文件,如我们在设置-关于里看到的内容 
      3、了解了Rom的结构,精简和内置就不是问题了,一般的精简就是删除system/app和data/data/app两个目录下的多余文件,如国内无法使用的youtube,facebook等应用,而内置就是把想要内置的应用放到system/app目录下,当然如果用户取得root权限,还是可以删掉系统自带应用的 
      4、recovery这里主要指恢复的意思,一般说recovery界面是一个可以实现刷机等多种操作功能的一个工程界面,功能类似windows下的Ghost,可以实现系统备份、恢复、清理数据等操作 
      5、radio这里指无线电通讯,手机的无线电通讯硬件模块出厂时就已经内置,但软件却可以更新,可以理解为电脑网卡已经内置了,但是我们却可以更新驱动程序,radio包的好坏影响着手机通话质量、上网速度、联网稳定性等更网络相关的内容,所以如果手机信号没有问题,不要轻易地刷radio,有人又把刷radio称作刷“基带”、刷信号包,可以统统理解为升级了网卡驱动... 
      6、不同厂家的手机刷机过程各有不同,这里直说已经安装recovery的情况,如果没有安装recovery,随便google一下就有一大堆内容,不做赘述 
        下载Rom包,是一个.zip文件,简单的方法是把Rom命名为update.zip并放入sd卡的根目录,这样进入recovery界面时会提示是否升级,音量上键选择升级即可,当然也可以不改变Rom包文件名,进入Recovery界面选择Flashzipfromsdcard或Flashupdateimage,如果是中文版的recovery就是从sd卡中选择更新,总之大概是这个意思,然后选择Rom包的.zip文件确认即可 
        进入recovery的方法各有不同,HTC手机一般是关键后按音量下键+开机键,可以根据自己的手机型号上网查一下 
        一般来说,刷机也是有一定风险的,也经常有人把手机刷成砖或半砖,这些主要是由于不当的操作造成的,一般我们通过recovery刷Rom是不会造成太严重的结果,或者说如果有什么结果可以通过刷recovery解决,但如果是由于操作不当导致无法进入hboot界面那基本就算成砖了,这里不多说,主要是强调一下刷机的良好习惯,在刷机之前先进入recovery将现有系统做一个备份,防止刷机后出现问题,如果真不幸出现问题也可以通过备份恢复,备份后通过recevery对系统进行一个彻底的wipe,删掉多余的文件,然后在执行刷机操作,这样一般是不会有什么问题的 
      7、简单的美化,主要是替换资源,在system/framework目录下,有一个framework-res.apk文件,解压后发现里面全是各种资源文件,其中在res目录下,以drawable开头的文件夹下都是跟图片相关的资源,可以通过替换相同文件名的图片文件实现美化的目的,本人比较习惯原生的UI,所以这里不多讲 
      8、一般来说只是精简或是内置app的话不需要重新对Rom包进行签名,但有些时候需要对Rom签名的时候可以上网搜找一下Rom签名工具,通过简单的批处理就可以实现,其实就是用java的keytool命令进行签名,只不过是有了工具,大家就不愿意去敲命令,就像电脑越来越普及反而会提笔忘字一样! 
      这节的内容就说到这里,如果你也想有一个属于自己专有的Rom的话可以动手操作一下,不过还是提示刷机有风险  

    修改步骤: 
    1修改rom包刷机脚本 
    我们知道recovery刷机包都是zip格式的,所以我们完全可以解压修改后再打包回来,完全没有问题。比如我们下载G14的一个XUI的官方ROM,解包后里面有META-INF文件夹,有system系统文件夹,有boot.img内核文件,我们只要修改META-INF文件夹,META-INF里面都是刷机脚本文件,操作如下: 
    META-INFCERT.RSA 签名文件 删掉 
    META-INFCERT.SF 签名文件 删掉 
    META-INFMANIFEST.MF 签名文件 删掉 
    META-INFcomandroid 机型验证文件夹 整个删掉 
    META-INFcomgoogleandroid update-binary 刷机命令程序 保留 
    META-INFcomgoogleandroid updater-script 刷机脚本 需要修改 
    修改updater-script如下: 
    用文本打开updater-script,删除以下两行机型验证 
    assert(getprop("ro.product.device")== "ruby" || 
    getprop("ro.build.product") == "ruby"); 
    将mount("ext4","EMMC", "/dev/block/mmcblk0p23", "/data"); 
    改为mount("ext4", "EMMC", "/dev/block/mmcblk0p31","/data"); 
    修改好保存updater-script 
    注意上面的红色数字改成你data分区的分区表的代码。红色数字每个机型特定,如果错误,ROM直接就不能刷了。如何查看分区表信息,可以直接找度受。或者等小编后续的教程。 
    2、替换boot.img 
    将修改好的G22的boot.img(不会修改boot的机油可以直接用相同UI的ROM的boot.img)替换到G14的XUI官方ROM里面 
    3、签名打包

    from:https://www.iteye.com/blog/dengzhangtao-1542895

  • 相关阅读:
    深度分析:java8的新特性lambda和stream流,看完你学会了吗?
    花了三天整理,Spring Cloud微服务如何设计异常处理机制?还看不懂算我输
    做了两年java,这些高性能高可用高并发的技术架构你都知道吗?
    面试阿里,字节跳动90%会被问到的微服务,你确定不进来看看吗?
    阿里面试官:小伙子,你给我说一下前后端分离的接口规范是什么?
    深度分析:面试阿里,字节跳动,美团几乎都会被问到的阻塞队列
    1. 线性DP 1143. 最长公共子序列
    1. 线性DP 300. 最长上升子序列 (LIS)
    GC 的认识(转) https://github.com/qcrao/Go-Questions/blob/master/GC/GC.md#1-什么是-gc有什么作用
    缓存淘汰算法--LRU算法
  • 原文地址:https://www.cnblogs.com/xuan52rock/p/11544150.html
Copyright © 2011-2022 走看看