ImageVerifierCode 换一换
格式:DOCX , 页数:35 ,大小:427.89KB ,
资源ID:8736778      下载积分:10 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/8736778.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(MIUI ROM定制教程.docx)为本站上传会员【s4****5z】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

MIUI ROM定制教程.docx

1、 MIUI ROM 定制教程 MIUI ROM 定制教程.......................................................................................................................1 序言..............................................................................................................................

2、2 第一章 搭建开发环境..................................................................................................................... 3 1. 操作系统..............................................................................................................................3 2. 安装 And

3、roid SDK.............................................................................................................. 3 2.1 安装 JDK....................................................................................................................3 2.2 下载 Android SDK 包.............................

4、3 2.3 安装............................................................................................................................ 4 2.4 adb.........................................................................................

5、 4 3. patchrom 项目...................................................................................................................... 5 第二章 认识 Android 手机.........................................................................................................

6、6 1. bootloader..............................................................................................................................6 2. 正常启动..............................................................................................................................7 3. System 分区..

7、8 4. Zygote(app_process)...........................................................................................................10 5. data 和 cache 分区..........................

8、 10 6. 小结....................................................................................................................................10 第三章 寻找合适的原厂 ROM.......................................................

9、 11 1. 熟悉移植的机型................................................................................................................ 11 1.1 逛论坛刷机.............................................................................................................. 11

10、 1.2 合适的原厂 ROM.................................................................................................... 11 1.3 adb logcat.......................................................................................................................... 12 2. 修改 boot.img.........................

11、 12 3. deodex................................................................................................................................. 14 第四章 反编译......................................................

12、 14 1. 反编译................................................................................................................................15 2. AndroidManifest.xml..............................................................

13、15 3. 资源....................................................................................................................................16 4. smali.......................................................................................................

14、18 第五章 移植 MIUI Framework......................................................................................................20 1. 为什么使用代码插桩........................................................................................................20 2. 移植规范.............

15、20 2.1 android.......................................................................................................................20 2.2 miui...........................................

16、21 2.3 i9100.......................................................................................................................... 21 3. 移植资源........................................................................

17、22 4. 修改 smali.......................................................................................................................... 22 4.1 比较差异..................................................................................................

18、 22 4.2 直接替换.................................................................................................................. 23 4.3 线性代码.................................................................................................................. 23 4.4 条件判断...

19、 23 4.5 逻辑推理.................................................................................................................. 25 5. 建议....................................................

20、26 第六章 移植 MIUI APP.................................................................................................................27 1. MIUI APP 一览......................................................................

21、 27 2. 一个遗憾:打电话程序....................................................................................................27 3. 一个遗憾引发的问题........................................................................................................28 4. 系统通知栏......

22、28 5. 其它程序............................................................................................................................29 第七章 制作刷机包......................................

23、 29 1. 刷机包结构........................................................................................................................29 2. updater-srcript 例解.............................................................

24、 30 3. 制作刷机包........................................................................................................................35 序言 为了帮助广大的 MIUI 发烧友将 MIUI ROM 移植到自己所喜爱的机型上,MIUI 开发组 创建并开源了 patchrom 项目,同时发布此配套教程。该教程主要探讨的是如何在原厂 ROM 的

25、基础上定制出自己的 MIUI ROM(原厂 ROM 指的是由手机生厂商发布的官方 ROM,具 有最好的稳定性),这也是我们项目名称的由来(对已有的 ROM 作修改,类似于对软件打 patch 的过程,因此称作 patchrom)。虽然本教程着重于如何定制 MIUI ROM,但是其中涉及 到的技术和概念是通用的,适用于任何 ROM 的定制。 要完全掌握此教程,你需要有 Linux 操作系统的使用经验,了解 Java 语言,有一定的 Android 编程经验最好。如果只是要修改资源(比如汉化等 ),基本上不需要有任何编程知 识。 本教程分成六个章节: 第一章:搭

26、建开发环境,简要的介绍如何准备必要的开发环境。 第二章:认识 Android 手机,从 ROM 开发者的角度来看 Android 手机系统的结构。 第三章:寻找合适的原厂 ROM,patchrom 项目是基于原厂 ROM 进行修改的,这一章 会介绍一些准则来判断什么是合适的 ROM。 第四章:反编译,介绍 apktool 工具和反编译的基础知识。 第五章:移植 MIUI Framework,讲述如何移植 MIUI 框架层的代码。 第六章:移植 MIUI App,讲述如何移植 MIUI 的应用程序。 第七章:制作 ZIP 刷机包,讲述如何制作一个 ZIP 刷机包。 patch

27、rom 项目网址: 你可以访问该网站下载到 patchrom 的所有代码,包括本教程。 第一章 搭建开发环境 “工欲善其事,必先利其器”。在开始定制 MIUI ROM 之前,我们需要搭建好必要的开 发环境。 本教程的主旨是如何基于原厂 ROM 修改。我们所涉及的修改理论上说是不需要源码的, 对源码开发感兴趣的可以参照 。对于 ROM 开发者来说,我们建议 你下载一份 google 发布的 android 源代码,这不是必需的,但是对于理解排查 ROM 适配中 的一些错误有很大帮助。 1. 操作系统 定制 MIUI

28、ROM 所涉及的技术本身对操作系统没有特殊要求,Windows,Linux 和 Mac 系统都可以。但是 patchrom 项目是基于 Linux 开发的,确切的说,是基于 Ubuntu 开发的, 我们推荐使用 Ubuntu10 以上的版本。 2. 安装 Android SDK 本节简要介绍如何在 Ubuntu 系统上安装 Android SDK。Windows 和 Mac 用户请参照 2.1 安装 JDK 首先需要安装 Java 开发工具包,本文中统一约定$表示 Terminal 中的命令提示符,其后 的文字表示输入的命令。 $ sudo

29、add-apt-repository "deb lucid partner" $ sudo apt-get update $ sudo apt-get install sun-java6-jdk 2.2 下载 Android SDK 包 从以下地址下载 Android SDK 包 解压到你的 home 目录下,假定解压后的目录为/home/patcher/android-sdk-linux。 接下来编辑 home 目录下的.bashrc 文件,修改 PATH 环境变量: export PATH=~/android-sdk-linux/platform-to

30、ols:~/android-sdk-linux/tools:$PATH。 运行命令. .bashrc 来使对 PATH 环境变量的修改生效。 $ . ~/.bashrc 2.3 安装 运行命令 android 来启动 Android SDK Manager $ android 启动结果如下图所示: 选中 Android SDK Tools 和 Android SDK Platform-tools,然后点击安装,接下来跟随应

31、 用程序的说明进行安装。这一步完成后,我们所需要的 Android SDK 也安装完毕了。 注:在 网页中,大家会看到需要安装 Eclipse, 定制 MIUI ROM 不需要安装 Eclipse,这个是开发 Android 程序所需要的,但是强烈建议你 有 Android 程序开发基础。 2.4 adb Android SDK 中对我们最重要的工具是 adb(android debug bridge)。在移植 MIUI ROM 过 程中,最常用的命令是 adb logcat,该命令会打印出详细的调试信息,帮助我们定位错误。 为了验证 adb 是否工作

32、同时也是验证上述的步骤是否成功,打开手机中的系统设置, 选择应用程序—开发,确保选中“USB 调试”,然后用 USB 线连接你的手机,在 Ubuntu Shell 下运行命令 adb devices,如果显示和下面的信息类似,恭喜你,adb 可以识别你的手机了。 List of devices attached 304D1955996BE28E device 注意: (1) 在 Windows 下,必须安装手机相应的驱动才能成功识别手机。 (2) 在 Ubuntu 下,有可能会提示“no such permissions”,这个时

33、候有两种办法,第一种是以 root 的身份运行 adb。第二种办法: a) b) 运行 lsusb 命令,对于我的三星手机,输出如下: Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 001 Device 098: ID 04e8:685e Samsung Electronics Co., Ltd 。。。 找到手机对应的那一行,记录下 04e8:685e,这个分别表示该设备的 vendorId 和 productId。如果不确定手机对应的是哪一行,可

34、以在连上手机前后运行 lsusb,找 到区别的那一行。 在/etc/udev/rules.d 目录下新建一个文件 99-android.rules。编辑如下: SUBSYSTEMS=="usb", ATTRS{idVendor}="04e8", ATTRS{idProduct}="685e", MODE="0666", OWNER="登录用户名" c) 重启 usb 服务,sudo restart udev,重连手机。 3. patchrom 项目 下面介绍 patchrom 的目录结构以及各目录的作用。 �  an

35、droid: 该目录下有 2 个子目录:system 和 src。其中 src 目录和将要介绍的 miui/src 目 录是一对一的关系。android/src 是 google 发布的 android 源码,miui/src 是 miui 在 google 源码基础上所做的修改。为了节省空间,在这两个目录,我们只放 miui 修改过的文件, 要下载完整的 android 源码,请参照 system 目录下存放的是由 google 发布的 android 源码编译而成的三个 jar 包: framework.jar, android.policy.jar 和 services.

36、jar。这些 jar 包的作用在之后的章节会详细阐 述。 � � � � build: 该目录是一些与编译相关的脚本。 tools: 该目录存放一些工具程序和脚本,在定制 ROM 和编译过程中需要使用这些程序。 miui: 该目录下有 2 个子目录:system 和 src。system 目录下存放的是由 miui 源代码编 译后的部分文件,这些文件是我们定制 MIUI ROM 所需要用到的所有文件。之后的章 节会详细阐述。 i9100: 针对每一个要定制的机型,创建一个单独的目录。该目录存放的是和三星 i9100 相关的一些修改和文件。之后的章节

37、会以 i9100 为例详细阐述。 接 下 来 我 们 开 始 编 译 生 成 i9100 的 定 制 MIUI ROM , 假 定 当 前 目 录 为 /home/patcher/patchrom 目录, $ . build/envsetup.sh $ cd i9100 $ make zipfile 以上命令运行完毕后,在 i9100 目录下会生成一个 .build 子目录,该子目录下的 MIUI_9100.zip 文件即是我们发布的 i9100 刷机包。 第二章 认识 Android 手机 写这篇文章时想起我的第一部 Andr

38、oid 手机 HTC Hero。买回来后,同事告诉我可以去 刷机玩玩。刷机,怎么刷?同事说,你个土人,刷机都不知道,很多刷机论坛的,你去逛逛, 挺简单的。我去逛了逛机锋论坛(那时还不知道 MIUI),打开一看,什么 recovery, radio, root 各种词汇扑面而来,oh my lady gaga,这么复杂。但是为了不被鄙视,而且闲着也是闲着, 还是刷着玩玩吧。后来就结识 MIUI 来到了小米。 在这纷纷扰扰的 Android 世界里,如何找到那条刷机大道呢,或许它只是个传说,我们 只是一直在探索。让我们从零开始来看一看,看能发现点什么。 1. bo

39、otloader 当我们拿到一款手机,第一件事应该就是按下电源键开机,那么从开机到进入到桌面程 序这中间发生了些什么呢,我们从下面这张简化了的手机结构图开始: 注意:该结构图并不反映手机的实际分区顺序和位置,只是一个逻辑结构图。 大家可以简单的把手机的 ROM 存储类比为我们电脑上的硬盘,这个硬盘被分成了几个 分区:bootloader 分区,boot 分区,system 分区等等。后面我们会逐渐介绍各个分区的用途。 所谓的刷机我们可以简单的理

40、解成把软件安装在手机的某些分区中,类似于我们在电脑上安 装 Windows 系统。 当按下电源键手机上电启动后,首先从 bootloader 分区中一个固定的地址开始执行指令, bootloader 分区分成两个部分,分别叫做 primary bootloader 和 secondary stage bootloader。 Primary bootloader 主要执行硬件检测,确保硬件能正常工作后将 secondary stage bootloader 拷贝到内存(RAM)开始执行。Secondary stage bootloader 会进行

41、一些硬件初始化工作,获取 内存大小信息等,然后根据用户的按键进入到某种启动模式。比如说大家所熟知的通过电源 键和其它一些按键的组合,可以进入到 recovery,fastboot 或者选择启动模式的启动界面等。 我们在论坛上看到的 bootloader 通常指的就是 secondary stage bootloader。不过我们不需要关 心太多的细节,可以简单的理解为 bootloader 就是一段启动代码,根据用户按键有选择的进 入某种启动模式。 fastboot 模式:fastboot 是 android 定义的一种简单的刷机协议,用户可以通过 fastboot 命令

42、行工具来进行刷机。比如说 fastboot flash boot boot.img 这个命令就是把 boot.img 的内容 刷写到 boot 分区中。一般的手机厂商不直接提供 fastboot 模式刷机,而是为了显示他们的牛 B 之处,总是会提供自己专有的刷机工具和刷机方法。比如说三星的 Odin,摩托的 RSD, 华为的粉屏等等。但是其本质实际上是相同的,都是将软件直接 flash 到各个分区中。 recovery 模式:当进入 recovery 模式时,secondary stage bootloader 从 recovery 分区开始 启动,recovery 分区是一个独

43、立的 Linux 系统,当 recovery 分区上的 Linux 内核启动完毕后, 开始执行第一个程序 init(init 程序是 Linux 系统所有程序的老祖宗)。init 会启动一个叫做 recovery 的程序(recovery 模式的名称也由此而来)。通过 recovery 程序,用户可以执行清除 数据,安装刷机包等操作。一般的手机厂商都提供一个简单的 recovery 程序,而大名鼎鼎的 CWM Recovery 就是一个加入了很多增强功能的 recovery 程序,要想用上 CWM Recovery 前 提是 recovery 分区可以被刷写。大家在论坛上看到的解锁

44、bootloader,通常指的就是解锁 recovery 或 fastboot,允许刷写 recovery 分区,这样大家就可以用上喜爱的 CWM Recovery 了。 手机除了普通的 CPU 芯片以外,还有 MODEM 处理器芯片。该芯片的功能就是实现手 机必需的通信功能,大家通常所的刷 RADIO 就是刷写 modem 分区。 2. 正常启动 当我们只是按下电源键开机时,会进入正常启动模式。 Secondary stage bootloader 会从 boot 分区开始启动。Boot 分区的格式是固定的,首先是一个头部,然后是 Linux 内核,最

45、 后是用作根文件系统的 ramdisk。 当 Linux 内核启动完毕后,就开始执行根文件系统中的 init 程序,init 程序会读取启动 脚本文件(init.rc 和 init.xxxx.rc)。启动脚本文件的格式大家可以在网上找到很多参考资料, 这里就不写了,而且我们在原厂 ROM 上移植 MIUI 的原则是不修改 boot 分区,因为有一些 机型无法修改 boot 分区。 根文件系统中有一个重要的配置文件,叫 default.prop,该文件的内容一般为: # # ADDITIONAL_DEFAULT_PROPERTIES # ro

46、secure=1 ro.allow.mock.location=1 ro.debuggable=0 persist.service.adb.enable=1。 文件中的每一行对某个属性赋值,在后续的文章中我们还会谈到属性。这里面大家需要 注意的两个属性:ro.secure 和 ro.debuggable。如果 ro.secure=0 则允许我们运行 adb root 命令。 通常大家说得内核 ROOT 指的就是 ro.secure=0。而一般所说的 ROOT 权限指的是手机上有 一个名为授权管理的程序(Superuser.apk)可以授予程序 root 用户的权限。 in

47、it 程序读取启动脚本,执行脚本中指定的动作和命令,脚本中的一部分是运行 system 分区的程序,下一节我们就来看看 system 分区的结构。 3. System 分区 在讲 system 分区之前,我们先来看下面这张 Android 的软件系统架构图。 从上到下依次为: � � � � 核心应用层:这一层就是大家平常所接触的各种各样的系统自带应用,比如联系人,电 话,音乐等。应用层往下就是开发人员所接触的。 框

48、架层:这一层是 Android 系统的核心,它提供了整个 Android 系统运作的机制,像窗 口管理,程序安装包管理,开发人员所接触的 Activity, Service, broadcast 等等。 JNI 层:JNI 层是 Java 程序和底层操作系统通信的一个机制,它使得 Java 代码可以调用 C/C++代码来访问底层操作系统的 API。 Dalvik 虚拟机:Android 开发使用 Java 语言,应用程序的 Java 代码会被编译成 dalvik 虚拟机字节码,这些字节码由 dalvik 虚拟机解释执行。 � �

49、 � �  本地库:本地库一般是由 C/C++语言所开发,直接编译成相应 CPU 的机器码,这其中 包含标准 C 库,用以绘制图形的 skia 库,浏览器核心引擎 webkit 等。 HAL:硬件抽象层,为了和各个厂家的不同硬件工作,Android 定义了一套硬件接口, 比如说为了使用相机,厂家的相机驱动必须提供的接口方法。这样使得上层的代码可以 独立于不同的硬件运行。 厂家适配层:本来 Android 定义的 HAL 层是直接和厂家提供的设备驱动打交道的,但 是目前厂家不想开源 HAL 部分的代码,因此很多厂家都提供了一个我称之为厂家适配 层的代码,

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服