安卓AndroidROM定制移植教程_第1页
安卓AndroidROM定制移植教程_第2页
安卓AndroidROM定制移植教程_第3页
安卓AndroidROM定制移植教程_第4页
安卓AndroidROM定制移植教程_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、CyanogenMOD 移植教程转白秋叶随风Ivan ;乐蛙论坛等。第一章:环境的搭建一.系统选择和安装建议使用 ubuntu LTS 10.04X64新手朋友推荐Deepin Linux 基于ubuntu定制的,适合新手使用系统安装教程,以下方法通用于 UBUNTU官方版本U 盘安装:光盘安装:搭建android编译环境:英文好的请猛击这里: WIKI : fromsource1. 安装JDK因为ANDROID大部分东西是java写的,所以首先我们需要安装JDK 打开终端按照如下命令输入或者直接复制粘贴:编译android 2.3或者更新的版本请使用jdk 6$ sudo add-apt-r

2、epository "deb lucid partner"$ sudo apt-get update$ sudo apt-get install sun-java6-jdk 如果你需要编译的是 2.2 以下 的版本请使用JDK 5,因为现在大家都是使用Gingerbread 以上的系统,这里就不介绍jdk5如何安装的了,如果有需要请度娘或者google2. 安装各种依赖包64位环境:依然是终端中输入$ sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-de

3、v libc6-dev lib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev libgll-mesa-dev g+-multilib mingw32 tofrodospython-markdown libxml2-utils xsltproc如果这些依赖包依然不能解决你的问题,请参考如下: Hero(CDMA):_Com pile_CyanogenMod_(Linux)3. 下载代码打开终端:在个人目录下面使用的是 android 代替我的工程,用cm7代替CM7的源码用CM

4、9代替CM9的源码如果要更新下载CM7的源码请输入:mkdir -p /binmkdir -p /android/cm7个人目录下的 bin目录是为了保存repo等更新脚本的依然再终端输入:curlhttps:/dl->/bin/repochmod a+x /bin/repo可以把/bin/repo 加入到环境变量里面终端输入 sudo gedit /etc/environment在 PATH= 加入 PATH="/home/ivanhuang/bin:"ivanhuang为个人目录的名称,也就是计算机登录名更改结束之后终端输入source /etc/environm

5、ent就能直接在终端中使用repo命令了。然后下一步开始同步代码:依然是打开终端输入cd android/cm7repo init -u git:/-bgingerbreadrepo sync -j16这个是更新CM7的源码 Gingerbread分支的如果要更新CM9的源码请输入mkdir -p android/cm9repo init -u git:/-b icsrepo sync -j16Ubuntu 中安装配置JDK首先从SUN网站下载JDK然后在shell中执行:代码:sudo chmod +x jdk-6u17-linux-i586.bin修改bin文件权限,使其可执行。然后执行代

6、码:jdk-6u17-linux-i586.bin将会出现字幕,持续按回车键,直到屏幕出现需要输入yes/no,此时输入yes/y回车,将会把JDK解压到文件夹,得到jdk1.6.0_17.此 时JDK安装完毕。下面进行配置。执行代码:sudo gedit /etc/environment在environment 中修改如下信息:PATH=":/home/cy/jdk1.6.0_17/bin"CLASSPATH=".:/home/cy/jdk1.6.0_17/lib"JAVA_HOME="/home/cy/jdk1.6.0_17”由于ubunt

7、u中有默认jdk还需要执行如下工作执行代码:sudo update-alternatives -install /usr/bin/java java/home/cy/jdk1.6.0_17/bin/java 300sudo update-alternatives -install /usr/bin/javac javac/home/cy/jdk1.6.0_17/bin/javac 300通过这一步将,安装的 JDK加入java选单然后执行。代码:sudo update-alternatives -config java通过这一步设置系统默认的JDK然后在shell中执行代码:java -ver

8、sion此时显示的系统中的java就是刚刚安装的java第二章:android源码总体结构-Makefile (全局的 Makefile 文件)-bionic (Bionic 含义为仿生,这里面是一些基础的C库源代码)-bootloader (引导加载器)build目录中的内容不是目标所用的代码,而是编译和配置所需要的脚本和工具)-build (build 目录中的内容不是目标所用的代码,而是编译和配置所需要的脚本和工具)-cts (Android 兼容性测试套件标准)-libcore (核心库相关)Dalvik虚拟机针对嵌入式设备优化的JavaJava虚拟机)-dalvik ( Dalvik

9、 虚拟机,针对嵌入式设备优化的Java虚拟机)-development (创建应用程序所需要的模板和工具) qcom,-device (与具体设备相关的一些编译脚本和库,如htc,qcom,samsung等)-external (Android使用的一些外部的开源框架和库)(应用程序的框架层,SDKSDK的接口基本都是在这里实现的)-frameworks(应用程序的框架层,SDK的接口基本都是在这里实现的)-hardware (与硬件相关的库)Linux2.6-kernel (Linux2.6的内核源代码)-ndk (本地开发套件-C语言开发套件)-CAndroid 的各种应用程序)-pack

10、ages (Android的各种应用程序)-prebuilt (Android在各种平台下编译的预置脚本)-sdk (SDK及模拟器)Android 的底层的一些库)-system (Android的底层的一些库)' -vendor (厂商私有的代码)packages/|- apps (各种应用程序,如联系人、浏览器等)| - experimental ( 一些实验性的项目,如错误报告)| - inputmethods (输入法相关)| - providers (各种数据源实现,如联系人数据、媒体库等信息)| -wallpapers (各种壁纸程序)Android Framework功

11、能介绍android.app :提供高层的程序模型和基本的运行环境。android.content :包含对各种设备上的数据进行访问和发布。android.database :通过内容提供者浏览和操作数据库。android.graphics :底层图形库,包含画布、点、矩形等,可以将其直接 绘制到屏幕上。android.location :定位和相关服务的类。android.media :提供一些类管理多种音频、视频的媒体接口。 :提供帮助网络访问的类,超过通常的.*接口。android.os :提供了系统服务、消息传输和IPC机制。android.opengl :提供 OpenGL 的工具。

12、vider :提供访问 Android 内容提供者的类。android.telephony :提供与拨打电话相关的 API交互。android.view :提供基础的用户界面接口框架。android.util :涉及工具性的方法,例如时间日期的操作。android.webkit :默认浏览器操作接口。android.widget :包含各种UI元素(大部分是可见的)在应用程序的布局中使用build/| -buildspec.mk.default| -cleanspec.mk| -core (各种以mk为结尾的文件,它门是编译所需要的Makefile)| -envsetup

13、.sh| - libs| -target (包含board和product两个目录,为目标所需要文件)| -tools (编译过程中主机所需要的工具,一些需要经过编译生成)其中,core中的 Makefile 是整个 Android 编译所需要的真正的Makefile,它被顶层目录的Makefile弓I用第三章:如何编译一个支持你设备的recovery前面已经介绍过CyanogenMod 是什么东西,以及环境搭建, android源码的大概框架。地址: .en/u/1697247850 ,所以这里就不再介绍。首先要确定你的设备,是否支持刷第三方recovery ,或者是否支持fastboot模

14、式,或者是否解锁bootloader ,如果你的设备上述 都不支持,那么你的机器可能就不能移植第三方系统。如果这样请跳 过本文。当你确定你的设备有支持上述所讲的,那么恭喜你,你的设 备可以移植第三方系统。接下来开始干活了,工欲善其事,必先利其器。制作支持你 手持设备的recovery。这里以中兴n760为例子介绍如何编译 支持 中兴 n760 的 recovery.如果你已经下载了 cm源码,请往下看,如果你没有下载源码, 请按照前面发的教程下载源码.首先在device目录下面建立一个zte 目录,这个目录是厂商的名字,例如中兴就是zte 我就建立zte,华为 的话 我就建立huawei,然后

15、在zte目录下面 建立一个目录为 roamer这个名字如何得到呢,在手机rom里面system/p 目 录下面 搜索 duct.device你会发现duct.device = roamer所以我把设备名称定为 roamer 目录都新建好了之后,我们来看一下目录树system|device|zte|roamer这个就是目录结构,我们在roamer目录下面,新建recovery_ui.c这个文件里面是 手机 各按键对应的按键值,这样写入之后才能正确选择按键AndroidBoard.mk连接地址到 kernelAndroidProducts.mk让编译工具连

16、接至V device_roamer.mkBoardConfig.mk手持设备 机器CPU GPU型号参数配置device_roamer .mk p 信息添加,私有库 xml 文件 init文件拷贝 按机器设备device来写roamer是N760的设备型号kernel官方提取,boot.img提取 提取可以使用国外高手制作的厨 房软件recovery.fstab手机分区表p 可有可无从官方rom 提取,比如n760 boot.img里面提取的init.roamer.rc 文件 这个也是需要这些文件的.首先我们写AndroidBoard.mk 文件#这一句的

17、意思的 根目录就是roamer目录AndroidProducts.mk看文件名PRODUCT_MAKEFILES := $(LOCAL_DIR)/device_roamer.mkBoardConfig.mk设备的配置文件USE_CAMERA_STUB := true# inherit from the proprietary version-include vendor/zte/roamer/BoardConfigVendor.mkTARGET_NO_BOOTLOADER := trueTARGET_BOARD_PLATFORM := unknownTARGET_CPU_ABI := arme

18、abiTARGET_BOOTLOADER_BOARD_NAME := roamer / 此处一版 为 device#此处为打包boot.img 的信息,可以通过厨房 查看到,我模糊 的记得用厨房解压boot.img的时候的选项应该是 打开厨房,选择0高级,然后选择20,再选择 S就能看到下面这三个信息了# dev:size erasesize name # mtd0: 00600000 00020000 "recovery"# mtdl: 00400000 00020000 "boot# mtd2: 00180000 00020000 "splash&q

19、uot;# mtd3: 00080000 00020000 "misc"# mtd4: 03980000 00020000 "cache"# mtd5: 0dc00000 00020000 "system"# mtd6: 0a280000 00020000 "userdata"# mtd7: 00100000 00020000 "oem"# mtd8: 00180000 00020000 "persist"BOARD_BOOTIMAGE_PARTITION_SIZE:= 0x

20、00500000BOARD_RECOVERYIMAGE_PARTITION_SIZE := 0x00600000BOARD_SYSTEMIMAGE_PARTITION_SIZE:= 0x0dc00000BOARD_USERDATAIMAGE_PARTITION_SIZE := 0x0a280000BOARD_FLASH_BLOCK_SIZE := 131072#内核路径TARGET_PREBUILT_KERNEL := device/zte/roamer/kernel# 一般情况下,手机没有实体返回键,建议选择这一项,有的手机触 摸返回键在recovery下面不能使用的,比如小米手机。BOAR

21、D_HAS_NO_SELECT_BUTTON := true# 编译 recovery 指 定keymap文件,看参数名称就知道了,不懂的可以google翻译device_roamer.mk这个是编译recovery的时候我写的,有些东西可以 不要,以后编译rom的时候需要删除重写的#语言配置文件$(callinherit-product,$(SRC_TARGET_DIR)/product/languages_full.mk)# The gps config appropriate for this device gps 配置文件$(call inherit-product, device/common/gps/gps_as_supl.mk)# vendor私有库配置文件$(call inherit-product-if-exists, vendor/zte/roamer/roamer-vendor.mk)#有些你需要对应用或者fra

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论