下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

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

作者:课课家教育     来源: http://www.kokojia.com点击数:1678发布时间: 2019-04-03 17:05:32

标签: AndroidAndroid操作系统ROM开发

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

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

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

学习Android ROM开发之ubuntu下载与编译CyanogenMod7_Android_Android操作系统_课课家

  在此,有意个建议。如果是做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

    

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

    

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

  

  4、CyanogenMod官网,用于下载ROM

  (被墙了,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多)

  5、获取属性文件

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

  然后在终端中输入

  $adb devices

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

  $sudo adb kill-server

  $sudo adb devices

  $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

  编译成功后

  8、刷机

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

  9、编译期间遇到的问题

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

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

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

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

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

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

 

  (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的,原理一样

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

赞(0)
踩(0)
分享到:
华为认证网络工程师 HCIE直播课视频教程