资源描述
百度云适配教程
第一章 搭建开发环境
“不打无准备之仗”。在开始定制Baidu ROM之前,我们必须要搭建正确的开发环境,否则会报出很多你无法解决的错误,导致你崩溃。
本教程适用于基于原厂ROM修改。我们所涉及的修改理论上说是不需要源码的,对于ROM开发者来说,我们建议下载一份google发布的android源码,这不是必须的,但是对于理解排查ROM适配中的一些错误有很大的帮助。
1操作系统
定制Baidu ROM所及技本对作统有殊求,Windows,Linux和Mac系统均可。但是patchrom项目是基于Linux系统开发的,确切来说在基于Ubuntu系统开发的,我们推荐用Ubuntu10以上系统,目前没有在Windows和Mac系统上运行的patchrom项目。
温心提示:大家在安装 Ubuntu 12.4 系统时最好设置的用户名和我的一样,这样输入命令和安装软件过程中不会出现错误,当然你是大神就另当别论。
我设置的用户名: miss
电脑计算机名:miss-T500
这样子Ubuntu 12.4 系统根目录就是:/home/miss/下为根目录
第一步:安装JDK
首先需要安装Java开发工具包,本文中统一约定 $ 表示终端中的命令提示符,其后的文字表示输入的命令,大家记住在本文中有 $ 提示符的后面都是在终端输入的命令,还有就是输入命令时不要把 $ 提示符一起输入终端去不然会出错。
首先给 Ubuntu系统设置一个Root权限密码这样在输入命令时才能减少没有权限情况出现。
1. 在终端输入:
$ sudo passwd root 指令后按回车,系统将会提示你设置一个新的 root 帐号密码,这时输入密码就好了。
本章主要介绍如何在Ubuntu系统下手动安装JDK ,由于很多人不懂,所以我在此写下此文章希望对大家有所帮助。安装前可以查看一下jdk版本,进入Ubuntu
终端 $ java -version 回车,可以看到jdk版本是1. 4 .2的。
1,手动安装jdk6
首先,在下载jdk-6u45-linux-i586.bin,据说这个操作起来比较简单,不需要转换。
然后,可以把它放置在任何你喜欢的文件夹,如果是像我这样的菜鸟,建议把它放置到主文件夹(/home/miss/根目录)下,鼠标右键点击软件选择《属性》再点《权限》钩选《允许以程序执行文件》如图。
接下来开始安装jdk:
打开终端进入你存放jdk-6u45-linux-i586.bin,例如我的位置是:/home/miss
终端输入:
$ sudo -s /home/miss/jdk-6u45-linux-i586.bin
然后回车这时可能要你输入用户密码你只要输入密码按回车就行了,这时就
一路按回车,直到询问是否安装,一般输入yes回车 《 也有可能一些是输入y按回车键》,安装完成后就要设置环境变量了。
接下来编辑 /home/miss 目录下的.bashrc 文件,配置我们所需要的 PATH 环境变量:
终端输入:
$ sudo gedit /home/miss/.bashrc
在文件最后添加:
# set java environment
JAVA_HOME=/home/miss/jdk1.6.0_45
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
然后保存重启电脑来使我们修改的 PATH 环境变量生效。
电脑重启后我们检查我们的 JDK 是否安装成功,
终端输入:
$ java -version
出现如下面提示:
出现如上提示,说明安装成功,如不成功请参照以上步骤再次尝试。
学习完了如何在Ubuntu系统下手动安装JDK ,假如还有疑问,欢迎大家加我QQ:734102278 大家一起多多讨论这方面的问题。
第二步:下载Android SDK
1. 从以下地址下载Android SDK包
解压到你的home/miss目录下,假定解压后的目录为/home/miss/android-sdk-linux。
接下来编辑home/miss目录下的.bashrc文件,修改PATH环境变量:
方法一:
进入根目录(ubuntu叫主文件夹/home/miss)按ctrl+H显示隐藏文件,找到.bashrc这个文件,双击打开在最后一行(敲下回车新换行)在文件最后另起一行添加:
export PATH=~/android-sdk-linux/platform-tools:~/android-sdk-linux/tools:$PATH
方法二
终端输入:
$ sudo gedit /home/miss/.bashrc
在文件最后另起一行添加:
export PATH=~/android-sdk-linux/platform-tools:~/android-sdk-linux/tools:$PATH
然后保存运行命令来使我们修改的PATH环境变量的修改生效。
终端输入:
$ ~/.bashrc
保存重启电脑使修改生效(我是重启电脑的)
第三步: 安装Android SDK
运行命令android来启动Android SDK Manager
终端输入:
$ android
安装完成的结果如下图所示:
选中Androd SDK Tools和Android SDK Platform-tools,然后点击安装,接下来跟随应用程序的说明进行安装。这一步完成后,我们所需要的Android SDK也安装完毕了。
注:在 ROM不需要安装Eclipse,这个是开发Android程序所需要的。
adb
Android SDK中对我们最重要的工具是adb(android debug bridge)以及aapt。在适配的过程中,最常用的命令是adb logcat,该命令会打印出详细的调试信息,帮助我们定位错误。
为了验证adb是否工作,同时也是验证上述步骤是否成功,打开手机中的系统设置--开发人员选项,确保选中“USB调试”,然后用USB线连接你的手机,在Ubuntu Shell下运行命令。
终端输入:
$ adb devices
如果显示的信息和下面类似 那么恭喜你 adb能识别你的手机了
List of devices attached
0123456789ABCDEF device
Ubuntu USB 识别不了解决
注意:在Ubuntu下,有可能会提示“no such permissions”,这个时候有两个办法,
第一种方法:是以root的身份运行adb。
原文:
官方说明: Configuring USB Access
Under GNU/linux systems (and specifically under Ubuntu systems), regular users can't directly access USB devices by default. The system needs to be configured to allow such access.
The recommended approach is to create a file /etc/udev/rules.d/51-android.rules (as the root user) and to copy the following lines in it. <username> must be replaced by the actual username of the user who is authorized to access the phones over USB
第二种方法:
a)运行lsusb命令,对于我的手机,
终端输入:
$ lsusb
1,打开终端,也就是命令,输入lsusb 可以查看当前的USB设备
当然你的手机要插上去了的,下面图片为没有插入手机的!
这是插入手机的图片:
我的设备是HUAWEI 手机,会看到有个设备是《华为》的,记下我的ID是12d1:360e 你的可能一样也可能不一样
以自己的为准
2,命令输入:sudo gedit /etc/udev/rules.d/51-android.rules
第一次用ROOT权限会要你输入密码验证
我们输入当前用户密码会打开一个文件名为:51-android.rules的文件
添加以下内容:
# fastboot protocol on manta (Huawei H30U10)
SUBSYSTEM=="usb", ATTR{idVendor}=="12d1", ATTR{idProduct}=="360e", MODE="0600", OWNER="miss"
我的华为手机ID:12d1:360e
这里ATTR{idVendor}=="12d1",ATTR{idProduct}=="360e",指的是我运行lsusb命令查看我的设备的ID的后面几个字符这是设备的标识
例:联想手机
17ef:7435
华为手机
12d1:360e
我有两个手机就添加两次,第一个是联想,第二个是华为。
Owner后面是你的《电脑用户名》你电脑的哦
重启usb服务,终端输入:sudo restart udev 然后重新连接手机。
终端输入:
$ adb devices 查看手机设备是否成功识别了
成功识别手机设备后还有其他环境配置正常接下来就是开始适配ROM了。
课外话题:
终端输入:
$ sudo nautilus 以管理员身份打开文件/文件夹在里面任意操作,还可以自己添加nautilus脚本,以Root权限操作需谨慎 不要乱删不然出现无法知道的出错。
第二章:百度源码同步
1 结构
开源项目的分支命名基于coron,对于单卡机型,后缀为Android 版本,已有单卡分支有coron-4.0,coron-4.1, coron-4.2;对于双卡机型,后缀为双卡平台与Andorid版本的结合,已有的双卡分支有coron-mtk-4.0,coron-mtk-4.2。这些分支对应到可以制作的ROM版本, 譬如,厂商原来的系统是Android 4.2的单卡版本,那么,就推荐使用coron-4.2分支来移植百度云ROM。
Coron的GIT库涉及到6个部分:
1) manifest.git:开源项目的Repo 管理清单文件,以及教程和文档。
2) build.git:编译脚本,包括基于Makfile 编译环境的构建脚本。
3) tools.git:工具,包括反编译/编译,解包/打包的脚本,以及其他一些实用工具。
4) overlay.git:资源覆盖,包括Baidu 对原生Android 资源文件的修改。5)reference.git : 参考代码,包括aosp, bosp的反编译代码,以及自动Patch 的补丁文件。
6)示例机型的Git 库:已有devices-u930.git, devices-lt26i.git,devices-onex.git这些机型移植的修改案例。
2 使用
轻松若干步,为你的机型定制百度云ROM:
1). 获取开发工具
1.1). 下载远程代码。repo init& repo sync 远程包含开发工具以及参考教程。
1.2). 环境初始化。sourcebuild/envsetup.sh 初始化开发所需要的工具以及编译环境。
2). 构建开发环境
2.1). 获取ROOT权限。这是后续开发的基础。
2.2). 准备初始文件。开发一款新机型,需要recovery.img或recovery.fstab,以及该机型的Makefile文件配置。
2.3). make newproject。连接手机,执行该命令,便可构建一个新机型的开发工程。
3). 插桩代码改动
3.1). 下载百度底包。需要插桩的代码都从百度底包中获取,百度底包应该与待开发的机型保持同一个Android版本。
3.2). 自动Patch:make bringup& make patchall, make porting
没有参考机型时,可以通过make bringup命令,完成机型的bringup;接着可以使用make patchall命令完成其他功能的代码合并。之所以分成两步,是因为bringup所涉及的改动较小,而且一旦机型bringup,也便于后续的代码调试。
有参考机型时,可以通过make porting命令,从已有的参考机型移植提交内容。因为同系列机型的改动通常是通用的。
3.3). 解决合并冲突。执行自动Patch时,可能会存在代码合并冲突,只需要根据提示解决冲突即可。
4). 定期版本升级
4.1). make upgrade。当百度云ROM有版本更新时,会发布最新的代码改动,只需要下载代码改动,执该命令,便能完成代码的自动升级。注意,该命令最终也是代码合并,所以也会存在合并冲突的情况。
4.2). make porting。对于多款同系列的机型,只需要通过该命令,从已升级的机型移植提交记录即可。
下载源码
1 首先安装GIT以及curl工具,同步需要这两个工具
终端输入
$ sudo apt-get install git-core curl
终端会获取文件输入你的密码就可以安装这两个工具了。(打开终端快捷键是ctrl+alt+T)
2 创建一个patchrom目.:
终端输入:
$ mkdir baidu
安装repo:
在根目录建立个bin文件夹
终端输入:
$ mkdir ~/bin
接下来就要下载repo文件
终端输入:
$ cd baidu 切换到 baidu 目录
下载repo到~/bin/repo
终端输入:curl http://git- > ~/bin/repo
接着终端输入:
$ chmod a+x ~/bin/repo 给予repo权限
然后在终端输入:
repo init -u -b coron-mtk-4.2 双卡《源码版本》
最后终端输入:
$ repo sync 开始同步源码时间有点长慢慢等吧(一般八小时)看你的网速。
Coron同步指令合集,按自己手机版本号下载对应源码
单卡机:
repo init -u -b coron-4.0
repo init -u -b coron-4.1
repo init -u -b coron-4.2
双卡机:
repo init -u -b coron-mtk-4.0
repo init -u -b coron-mtk-4.2
同步源码完成后就开始适配ROM了。
第三章:百度云ROM适配与移植
以Huawei 3C U10为例,下载完代码以后,在开源项目根目录,执行以下命令:
终端输入:
$ mkdir -p devices/3CU10 建立机型文件夹 (3CU10)自己手机的
然后在终端输入:
$ source build/envsetup.sh 环境初始化。初始化开发所需要的工具以及编译环境。
终端输入:
$ cd devices/3CU10 切换到 devices/3CU10 目录下,所有适配工程都在这个目录下完成
通过数据线连接手机,
执行以下命令,
便可构建一个新机型的开发工程。
通过 makeconfig
命令可以自动生成一个 Makefile文件(注意:需用数据线连接手机才能使用该命令);如果自
动生成失败,也可以从从已有机型的拷贝一份,再针对待开发的机型作修改。总之,需要确
保机型目录下 Makefile 文件是正确的,它是执行后续命令的基础配置文件。
注意:手机先获得Root权限才能执行下面命令,手机一定要连接电脑上再执行命令。
提示:在机型3CU10/目录下放入自己手机的boot.img和recovery.img文件接下来再执行以下命令:
终端输入:
$ makeconfig 该命令会识别手机参数,自动生成一个 Makfile 文件
$ make newproject 该命令自动从手机拉包,并构建本地的新机型工程
执行成功后,会在机型3CU10/目录下,生成一些文件,不同 Makefile 配置生成的文件不同,
但大致的目录结构是一致的,如下所示:
这些命令将会初始化环境变量后,创建了3CU10 的机型目录,后续的移植基本都在机型目录下完成。注意:手机先获得Root权限
4.0版本手机执行下面这个命令,4.2版本手机不用执行这个命令
终端输入:
$ mkdir baidu 新建baidu/目录用于存放百度底包相关文件,提示:4.0版本手机执行这条命令完成后把百度底包放到baidu/目录下改名成baidu.zip 再执行起机命令,4.2版本手机直接执行起机命令进行代码插桩。
终端输入:
$ make bringup Patch 起机(bringup)需要插桩的代码
$ make 全编译生成一个卡刷包,刷入手机,验证是否能起机
这些命令将会创建一个新的机型工程,自动执行bringup,将百度云ROM涉及到起机的改动注入厂商的代码中,然后编译整个工程,生成一个卡刷包。
如果顺利,那么不会产生编译错误,卡刷包也能刷入手机正常使用,这时,可以执行后续命令,将起机后的其他百度云ROM的改动自动注入到厂商的代码中。
$ make patchall
$ make
具体机型一般有特定的问题,等待开发者去解决,以下文档可以帮助开发者解决一些实际问题:
《Developer-Guide.pdf》,《Details-to-Smali-Development.pdf》
版本升级
对于已有的机型,可以自动化进行版本升级.按照如下步骤:
1) 更新可用的升级补丁,升级补丁以XML的形式存放在referece/upgrade/目录中。
2) 在机型的Makefile文件中配置两个参数:
ROM_VERSION 当前的所移植机型的ROM 版本;
UPGRADE_VERSION 需要升级到的ROM 版本.如果没有指定则默认升级到可用的最新版
3) make upgrade。自动将补丁的改动注入的厂商代码中.
展开阅读全文