安卓Android ROM定制移植教程.docx

上传人:b****0 文档编号:9056857 上传时间:2023-05-16 格式:DOCX 页数:11 大小:20.95KB
下载 相关 举报
安卓Android ROM定制移植教程.docx_第1页
第1页 / 共11页
安卓Android ROM定制移植教程.docx_第2页
第2页 / 共11页
安卓Android ROM定制移植教程.docx_第3页
第3页 / 共11页
安卓Android ROM定制移植教程.docx_第4页
第4页 / 共11页
安卓Android ROM定制移植教程.docx_第5页
第5页 / 共11页
安卓Android ROM定制移植教程.docx_第6页
第6页 / 共11页
安卓Android ROM定制移植教程.docx_第7页
第7页 / 共11页
安卓Android ROM定制移植教程.docx_第8页
第8页 / 共11页
安卓Android ROM定制移植教程.docx_第9页
第9页 / 共11页
安卓Android ROM定制移植教程.docx_第10页
第10页 / 共11页
安卓Android ROM定制移植教程.docx_第11页
第11页 / 共11页
亲,该文档总共11页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

安卓Android ROM定制移植教程.docx

《安卓Android ROM定制移植教程.docx》由会员分享,可在线阅读,更多相关《安卓Android ROM定制移植教程.docx(11页珍藏版)》请在冰点文库上搜索。

安卓Android ROM定制移植教程.docx

安卓AndroidROM定制移植教程

CyanogenMOD移植教程

转自秋叶随风Ivan;乐蛙论坛等。

第一章:

环境的搭建

一.系统选择和安装

建议使用ubuntuLTS10.04X64

新手朋友推荐DeepinLinux基于ubuntu定制的,适合新手使用

系统安装教程,以下方法通用于UBUNTU官方版本

U盘安装:

光盘安装:

搭建android编译环境:

英文好的请猛击这里:

WIKI:

1.安装JDK

因为ANDROID大部分东西是java写的,所以首先我们需要安装JDK

打开终端按照如下命令输入或者直接复制粘贴:

编译android2.3或者更新的版本请使用jdk6

$sudoadd-apt-repository"deblucidpartner"

$sudoapt-getupdate

$sudoapt-getinstallsun-java6-jdk如果你需要编译的是2.2以下的版本请使用JDK5,因为现在大家都是使用Gingerbread以上的系统,这里就不介绍jdk5如何安装的了,如果有需要请度娘或者google

2.安装各种依赖包

64位环境:

依然是终端中输入

$sudoapt-getinstallgit-coregnupgflexbisongperfbuild-essential\

zipcurlzlib1g-devlibc6-devlib32ncurses5-devia32-libs\

x11proto-core-devlibx11-devlib32readline5-devlib32z-dev\

libgl1-mesa-devg++-multilibmingw32tofrodospython-markdown\

libxml2-utilsxsltproc

如果这些依赖包依然不能解决你的问题,请参考如下:

3.下载代码

打开终端:

在个人目录下面使用的是android代替我的工程,用cm7代替CM7的源码用CM9代替CM9的源码

如果要更新下载CM7的源码

请输入:

mkdir-p~/bin

mkdir-p~/android/cm7

个人目录下的bin目录是为了保存repo等更新脚本的

依然再终端输入:

curlhttps:

//dl->~/bin/repochmoda+x~/bin/repo

可以把~/bin/repo加入到环境变量里面

终端输入sudogedit/etc/environment

在PATH=“”加入PATH="/home/ivanhuang/bin:

"

ivanhuang为个人目录的名称,也就是计算机登录名

更改结束之后终端输入source/etc/environment

就能直接在终端中使用repo命令了。

然后下一步开始同步代码:

依然是打开终端输入

cdandroid/cm7

repoinit-ugit:

//-bgingerbreadreposync-j16

这个是更新CM7的源码Gingerbread分支的

如果要更新CM9的源码

请输入

mkdir-pandroid/cm9

repoinit-ugit:

//-bics

reposync-j16

Ubuntu中安装配置JDK

首先从SUN网站下载JDK

然后在shell中执行:

代码:

sudochmod+xjdk-6u17-linux-i586.bin

修改bin文件权限,使其可执行。

然后执行

代码:

jdk-6u17-linux-i586.bin

将会出现字幕,持续按回车键,直到屏幕出现需要输入yes/no,此时输入yes/y回车,将会把JDK解压到文件夹,得到jdk1.6.0_17.此时JDK安装完毕。

下面进行配置。

执行

代码:

sudogedit/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"

由于ubuntu中有默认jdk还需要执行如下工作

执行

代码:

sudoupdate-alternatives--install/usr/bin/javajava/home/cy/jdk1.6.0_17/bin/java300

sudoupdate-alternatives--install/usr/bin/javacjavac/home/cy/jdk1.6.0_17/bin/javac300

通过这一步将,安装的JDK加入java选单

然后执行。

代码:

sudoupdate-alternatives--configjava

通过这一步设置系统默认的JDK

然后在shell中执行

代码:

java-version

此时显示的系统中的java就是刚刚安装的java

第二章:

android源码总体结构

–Makefile(全局的Makefile文件)

–bionic(Bionic含义为仿生,这里面是一些基础的C库源代码)

–bootloader(引导加载器)

build目录中的内容不是目标所用的代码,而是编译和配置所需要的脚本和工具)

–build(build目录中的内容不是目标所用的代码,而是编译和配置所需要的脚本和工具)

–cts(Android兼容性测试套件标准)

–libcore(核心库相关)

Dalvik虚拟机针对嵌入式设备优化的Java

Java虚拟机)

–dalvik(Dalvik虚拟机,针对嵌入式设备优化的Java虚拟机)

–development(创建应用程序所需要的模板和工具)

qcom,

–device(与具体设备相关的一些编译脚本和库,如htc,qcom,samsung等)

–external(Android使用的一些外部的开源框架和库)

(应用程序的框架层,SDK

SDK的接口基本都是在这里实现的)

–frameworks(应用程序的框架层,SDK的接口基本都是在这里实现的)

–hardware(与硬件相关的库)

Linux2.6

–kernel(Linux2.6的内核源代码)

–ndk(本地开发套件--C语言开发套件)

--C

Android的各种应用程序)

–packages(Android的各种应用程序)

–prebuilt(Android在各种平台下编译的预置脚本)

–sdk(SDK及模拟器)

Android的底层的一些库)

–system(Android的底层的一些库)

`–vendor(厂商私有的代码)

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

packages/

|–apps(各种应用程序,如联系人、浏览器等)

|–experimental(一些实验性的项目,如错误报告)

|–inputmethods(输入法相关)

|–providers(各种数据源实现,如联系人数据、媒体库等信息)

|–wallpapers(各种壁纸程序)

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

AndroidFramework功能介绍

android.app:

提供高层的程序模型和基本的运行环境。

android.content:

包含对各种设备上的数据进行访问和发布。

android.database:

通过内容提供者浏览和操作数据库。

android.graphics:

底层图形库,包含画布、点、矩形等,可以将其直接绘制到屏幕上。

android.location:

定位和相关服务的类。

android.media:

提供一些类管理多种音频、视频的媒体接口。

:

提供帮助网络访问的类,超过通常的.*接口。

android.os:

提供了系统服务、消息传输和IPC机制。

android.opengl:

提供OpenGL的工具。

android.provider:

提供访问Android内容提供者的类。

android.telephony:

提供与拨打电话相关的API交互。

android.view:

提供基础的用户界面接口框架。

android.util:

涉及工具性的方法,例如时间日期的操作。

android.webkit:

默认浏览器操作接口。

android.widget:

包含各种UI元素(大部分是可见的)在应用程序的布局中使用

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

build/

|–buildspec.mk.default

|–cleanspec.mk

|–core(各种以mk为结尾的文件,它门是编译所需要的Makefile)

|–envsetup.sh

|–libs

|–target(包含board和product两个目录,为目标所需要文件)

|–tools(编译过程中主机所需要的工具,一些需要经过编译生成)

其中,core中的Makefile是整个Android编译所需要的真正的Makefile,它被顶层目录的Makefile引用。

 

第三章:

如何编译一个支持你设备的recovery

前面已经介绍过CyanogenMod是什么东西,以及环境搭建,android源码的大概框架。

地址:

,所以这里就不再介绍。

首先要确定你的设备,是否支持刷第三方recovery,或者是否支持fastboot模式,或者是否解锁bootloader,如果你的设备上述都不支持,那么你的机器可能就不能移植第三方系统。

如果这样请跳过本文。

当你确定你的设备有支持上述所讲的,那么恭喜你,你的设备可以移植第三方系统。

接下来开始干活了,工欲善其事,必先利其器。

制作支持你手持设备的recovery。

这里以中兴n760为例子介绍如何编译支持中兴n760的recovery.

如果你已经下载了cm源码,请往下看,如果你没有下载源码,请按照前面发的教程下载源码.首先在device目录下面建立一个zte目录,这个目录是厂商的名字,例如中兴就是zte我就建立zte,华为的话我就建立huawei,然后在zte目录下面建立一个目录为roamer这个名字如何得到呢,在手机rom里面system/build.prop目录下面搜索ro.product.device你会发现ro.product.device=roamer所以我把设备名称定为roamer目录都新建好了之后,我们来看一下目录树

system

|-------device

|-------zte

|----roamer

这个就是目录结构,我们在roamer目录下面,新建

recovery_ui.c这个文件里面是手机各按键对应的按键值,这样写入之后才能正确选择按键

AndroidBoard.mk连接地址到kernel

AndroidProducts.mk让编译工具连接到device_roamer.mk

BoardConfig.mk手持设备机器CPUGPU型号参数配置

device_roamer.mkbuild.prop信息添加,私有库xml文件init文件拷贝按机器设备device来写roamer是N760的设备型号

kernel官方提取,boot.img提取提取可以使用国外高手制作的厨房软件

recovery.fstab手机分区表

system.prop可有可无

从官方rom提取,比如n760boot.img里面提取的init.roamer.rc文件这个也是需要这些文件的.

首先我们写AndroidBoard.mk文件

#这一句的意思的根目录就是roamer目录

AndroidProducts.mk看文件名

PRODUCT_MAKEFILES:

=\

$(LOCAL_DIR)/device_roamer.mk

BoardConfig.mk设备的配置文件

USE_CAMERA_STUB:

=true

#inheritfromtheproprietaryversion

-includevendor/zte/roamer/BoardConfigVendor.mk

TARGET_NO_BOOTLOADER:

=true

TARGET_BOARD_PLATFORM:

=unknown

TARGET_CPU_ABI:

=armeabi

TARGET_BOOTLOADER_BOARD_NAME:

=roamer//此处一版为device

#此处为打包boot.img的信息,可以通过厨房查看到,我模糊的记得用厨房解压boot.img的时候的选项应该是打开厨房,选择0高级,然后选择20,再选择S就能看到下面这三个信息了

#dev:

sizeerasesizename

#mtd0:

0060000000020000"recovery"

#mtd1:

0040000000020000"boot"

#mtd2:

0018000000020000"splash"

#mtd3:

0008000000020000"misc"

#mtd4:

0398000000020000"cache"

#mtd5:

0dc0000000020000"system"

#mtd6:

0a28000000020000"userdata"

#mtd7:

0010000000020000"oem"

#mtd8:

0018000000020000"persist"

BOARD_BOOTIMAGE_PARTITION_SIZE:

=0x00500000

BOARD_RECOVERYIMAGE_PARTITION_SIZE:

=0x00600000

BOARD_SYSTEMIMAGE_PARTITION_SIZE:

=0x0dc00000

BOARD_USERDATAIMAGE_PARTITION_SIZE:

=0x0a280000

BOARD_FLASH_BLOCK_SIZE:

=131072

#内核路径

TARGET_PREBUILT_KERNEL:

=device/zte/roamer/kernel

#一般情况下,手机没有实体返回键,建议选择这一项,有的手机触摸返回键在recovery下面不能使用的,比如小米手机。

BOARD_HAS_NO_SELECT_BUTTON:

=true#编译recovery指定keymap文件,看参数名称就知道了,不懂的可以google翻译

device_roamer.mk这个是编译recovery的时候我写的,有些东西可以不要,以后编译rom的时候需要删除重写的

#语言配置文件

$(callinherit-product,$(SRC_TARGET_DIR)/product/languages_full.mk)

#Thegpsconfigappropriateforthisdevicegps配置文件

$(callinherit-product,device/common/gps/gps_as_supl.mk)

#vendor私有库配置文件

$(callinherit-product-if-exists,vendor/zte/roamer/roamer-vendor.mk)

#有些你需要对应用或者framework进行初始化设定值的地方

DEVICE_PACKAGE_OVERLAYS+=device/zte/roamer/overlay

#kernel路径选择

ifeq($(TARGET_PREBUILT_KERNEL),)

LOCAL_KERNEL:

=device/zte/roamer/kernel

else

LOCAL_KERNEL:

=$(TARGET_PREBUILT_KERNEL)

endif

PRODUCT_COPY_FILES+=\

$(LOCAL_KERNEL):

kernel

$(callinherit-product,build/target/product/full.mk)

PRODUCT_BUILD_PROP_OVERRIDES+=BUILD_UTC_DATE=0

PRODUCT_NAME:

=full_roamer

PRODUCT_DEVICE:

=roamer

recovery.fastab官方recovery.img提取自己想个办法,我用厨房提取的

全部写好之后在源码根目录用终端输入.build/envsetup.sh然后输入lunch选择你的设备

然后输入makerecoveryimage就可以编译了

编译结束之后,到out/target/product/roamer目录下面可以发现recovery.img这个文件

使用fastboot工具到fastboot模式下面刷写,刷写命令为fastbootflashrecoveryrecovery.img

教程到此结束,有关如何进入fastboot模式recovery模式,还有fastboot工具使用,请google或者baidu

谢谢

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2