android rom ubuntu,学习Android ROM开发之ubuntu下载与编译CyanogenMod7

Ubuntu(乌班图)是一个以桌面应用为主的Linux操作系统,它是基于Debian发行版和GNOME桌面环境,Ubuntu的目标在于为一般用户提供一个最新的、同时又相当稳定的主要由自由软件构建而成的操作系统。Ubuntu具有庞大的社区力量,用户可以方便地从社区获得帮助。

而CyanogenMod 是一个免费、基于社区构建的 Android OS 的修改和改进版本,供某些手机使用的二级市场固件。它提供一些在官方Android系统或手机厂商没有提供的功能 。

CyanogenMod是一个开源的基于Android操作系统,也就是大家经常刷机用的CM,至于如何刷机以及如何编译google原生的Android

8ac052eeb1ca5c4a848386c01da2a94e.png

在此,有意个建议。如果是做Android开发的最好还是用google亲生的手机作为测试机(nexus one、nexus s、nexus prime),因为这些机型不仅性能强大,支持原生操作系统,还支持很多其他机型目前还没有的功能(比如我的HTC desire z不支持NFC),另外如果想刷机也可以找到n个版本。而其他机型总是存在这样那样的问题,做开发遇到基于其他机型的问题时也难以找到合适的答案,闲话不说了。

我博文是关于如何下载、编译CyanogenMod,以及如何自定义自己的ROM系列,比如我们比较熟悉的小米手机的MIUI就是基于CyanogenMod。但是因为自己换了不同手机,所以以前基于Nexus S的一些操作不适合于现在的机型了,但是大概流程是一样的。在这里最最麻烦的不是下载源码,而是--编译CyanogenMod。各种各样的问题,每一次编译都要至少1、2个小时,我话费了5天来编译源码,期间遇到各种各样的问题,随着一点一点的查询也逐个的解决了,今天终于编译成功、刷机成功了。

机型:HTC desire z(HTC vision)

Android源码:CyanogenMod 7(下载的最新的CM源码2.3.7编译还有问题,所以用的是稍微老一点2.3.4的)

电脑:Thinkpad 32位

系统:Ubuntu 10.10

问题解决:如果你的机型不是这个,编译的源码版本也不是这个,遇到问题最好还是去外面查查(程序员必备技术,你们懂得),下面是一些对你有帮助的网站

1、CyanogenMod Wiki。可以根据上面的教程来下载并编译适合你机型的CM

e1e6be949185c2f04263dd193401e111.png

2、XDA Developer。遇到技术问题多上上面问,大牛很多

02b3ba29255c4259feab33ebdac1e4fe.png

3、github:如果你编译时缺少某些包,可以到上面找找看

e0e96d4f643d2a392cc974a2a65b3c4f.png

4、CyanogenMod官网,用于下载ROM

b905d5894e252994496b611e79686aeb.png(被墙了,so...)

在开始之前你需要root你的手机,在www.cyanogenmod.com里找到针对你的机型的ROM下载并刷机。(国内这段时间墙了,so...)

有关刷机、root等可以到我的iteye博客中找到,也可以到MIUI官网找一些关于刷机的教程。

下面开始具体的步骤

1、安装软件

首先需要你安装并配置好Android环境,这个不解释

For 32-bit & 64-bit systems:

sudo apt-get install 下面软件列表(如果某些安装有问题,最好一个一个的下载安装)

git-core gnupg flex bison gperf libsdl1.2-dev libesd0-dev libwxgtk2.6-dev squashfs-tools build-essential zip curl libncurses5-dev zlib1g-dev sun-java6-JDk pngcrush schedtool

For 64-bit only systems:

g++-multilib lib32z1-dev lib32ncurses5-dev lib32readline5-dev gcc-4.3-multilib g++-4.3-multilib

NOTE: gcc-4.3-multilib g++-4.3-multilib is no longer available for Ubuntu 11.04 64-bit, but should still build without issue.

NOTE:On Ubuntu 10.10, and variants, you need to enable the parter repository to install sun-java6-jdk:

add-apt-repository "deb http://archive.canonical.com/ maverick partner"

Download RomManager

2、创建目录

在终端中输入下列命令下载并执行repo

创建一个目录,用于存放源代码

$mkdir -p cyanogenmod

$mkdir -p bin

3、初始化下载库

在终端中输入下列命令下载并执行repo:

$curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo

$chmod a+x ~/bin/repo

注意:你需要重启电脑来使其生效

$chmod a+x ~/bin/repo

4、下载CyanogenMod源码

在终端中输入下列命令下载并执行repo:

现在输入下列命令来初始化版本库:

$cd ~/cyanogenmod

$repo init -u git://github.com/CyanogenMod/android.git -b gingerbread

$repo sync

或者repo sync -j16(-jn中的n表示打开的网络连接数,开启多个网络连接可以加速下载速度)

出现如下的状态就表示下载完成了(耗时教长,我用的是4M带宽下了3个小时,大小4G多)

55e022914c26d8a8ebff0a6e998a27ca.png

5、获取属性文件

此时需要将手机通过USB连接到Ubuntu上。如果一开始不知别手机设备的话,可以参考http://www.cnblogs.com/loulijun/archive/2012/01/10/2318316.html来解决

然后在终端中输入

$adb devices

如果显示如下错误的话,可以通过如下命令来解决(以后再遇到就用这种方式解决就是了)

$sudo adb kill-server

$sudo adb devices

bfdc235bec7b488aa8237373275938f8.png

$cd ~/cyanogenmod/device/htc/vision/

$./extract-files.sh

NOTE: 注意,如果你获取文件的时候缺少某些如照相机或radio等文件时,你可以到上面的网站找找是否你需要的文件

6、下载 RomManager

$cd ~/android/system/vendor/cyanogen/

$./get-rommanager

7、编译CyanogenMod

编译源码

编译源码之前,因为源码默认设置是在64位机编译的,所以你需要修改其为32位即可

64位改为32位方法

build/core/main.mk:73: You are attempting to build on a 32-bit system.

build/core/main.mk:74: Only 64-bit build environments are supported beyond froyo/2.2.

是因为cm默认只支持64-bit,而我的计算机是32位的,所以需要修改一些文件即可

./external/clearsilver/cgi/Android.mk

./external/clearsilver/java-jni/Android.mk

./external/clearsilver/util/Android.mk

./external/clearsilver/cs/Android.mk

4个文件中的

LOCAL_CFLAGS += -m64

LOCAL_LDFLAGS += -m64

注释掉,或者将“64”换成“32”

LOCAL_CFLAGS += -m32

LOCAL_LDFLAGS += -m32

然后,将./build/core/main.mk 中的

ifneq (64,$(findstring 64,$(build_arch)))

改为:

ifneq (i686,$(findstring i686,$(build_arch)))

这样,32位的计算机也可以正常编译了

NOTE:最新版本的CM源码没有ifneq(64...)这部分,所以就不许要改了

$. build/envsetup.sh && brunch vision

编译成功后

b47e6a892b7f35c9b689c5aea6cbb423.png

8、刷机

正常情况下可以刷成功,刷机教程看上面

9、编译期间遇到的问题

(1)执行.extract-files.sh如果获取手机的属性文件缺少的话,如下图。可以到

https://github.com/koush/proprietary_vendor_htc/tree/gingerbread/vision/proprietary

上寻找你缺少的文件,下载后放到

/home/loulijun/cyanogenmod/vendor/htc/vision/proprietary下即可

75ab67c9de582f5b2095910f436a18e6.png

(2)undefined reference to 'msm_device_mute'、libaudio.so错误

这种错误网上的有些方法依然不能解决,我是换了从cm2.3.7最新的源码为cm2.3.4的。或者关闭audio的编译选项,可以到vendor和device下找到相应的mk文件将设置audio的true设置为false

aefdc322d63b715834c2d89bad8e1d2f.png

(3)undefined reference to 'HAL_getCameraInfo'、libcameraservice错误

解决办法:

$cd /cyanogenmod/device/htc/vision

$vim BoardConfig.mk

将BOARD_USE_FROYO_LIBCAMERA := false(设置为false)

$cd /cyanogenmod/vendor/htc/vision/

$vim BoardConfigVendor.mk

将USE_CAMERA_STUB设置为false(这样编译就好了)

里面有解决camera问题的方法(如果上述不奏效的话),不过上面是基于nexus one的,原理一样

671be868a14b71ee5a7deff0813e891b.png

在学习Android ROM开发的过程中,首先需要下载安装ubuntu与编译CyanogenMod7,上文有安装ubuntu的详细步骤,编译CyanogenMod7的步骤也非常清晰,编译过程中遇到的问题与解决的方法。在学习Android ROM开发前,需要学习ubuntu与CyanogenMod7相关知识,这样再来学这篇文章时就不会那么吃力。希望本文对你学习Android开发有帮助。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值