3125|0

854

帖子

0

TA的资源

五彩晶圆(中级)

楼主
 

如何编译这个cm7到u8500去 [复制链接]

这个教程没写完善的,过于简陋,而且我还没有检查过,
不过我要去写作业去了,先占个位子,下次补全,
也许里面有什么错误哦,请及时指正我,毕竟我只是一个普通的linux开发爱好者,不够专业。
希望能有懂linux的同学加入编译u8500rom的行列,其实很简单的啦

下面主要讲的是如何编译这个cm7到u8500去,方法可能与tooken的不一样,貌似他的不是从源码编译的。。。汗

ok,tooken发布了千金版,可能大家对cm7没有什么印象,我以前编译过cm6,不过没有成功移植到u8500去,放假了,在网上看到tooken说要出cm7版,我就编译了最新的cm7试试,也可以运行,不过也只是能运行而已,
电话短信、gprs、wifi、相机、蓝牙等等的东西因为缺少u8500的hal层和我能力问题而无法继续,就是一个能运行android和一些软件的空架子而已。
这个帖子意在讲解一下编译android的一些东西,可能说得不太清楚,需要到Google、百度搜索一下,筒子需要一定的linux基础,有相关的移植经验的最好,意在增加u8500的第三方rom开发的同学。

cm7=CyanogenMod 7
官方网站:http://www.cyanogenmod.com/
CyanogenMod是相对Google而言的第三方开源rom制作团队。
和Google闹过纠纷,后将Google的一些代码移除出去了,所以在原版的cm里面是不会出现Google的软件的,比如Gmail,Gtalk之类的。
cm6是2.2,cm7是2.3.3,支持很多机型的第三方应用,并且提供比原版效果更佳的体验,
中国最大的rom开发团队miui便是在cm的基础上二次开发而成。(我打算弄这个miui的移植,不过烦得很,单单就图像资源的重新打包就累死)
支持的机型(自然,木有u8500):http://www.cyanogenmod.com/devices
cm的特点很多,不过相信刷过tooken的cm7千金版的同学都会明白的,我也懒得写,毕竟网上介绍不少,

一,系统环境
推荐使用ubuntu 10.10,并且有10GB以上的空余空间。(事实上,我的cm7+cm6的代码一共编译后使用了 12.7 GB)
执行这个,加上一些源:
复制代码

32位系统安装:
  •    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

复制代码

64位系统在上面的基础上安装:
  •    g++-multilib lib32z1-dev lib32ncurses5-dev lib32readline5-dev
  • gcc-4.3-multilib g++-4.3-multilib

复制代码

安装 repo (Google的下载源码的一个python脚本)
复制代码

同时可以将 ~/bin 作为PATH:将下面的代码加入到 ~/.bashrc 里面
  • export PATH=$PATH:~/bin

复制代码



二,下载源码

cm的源码在github上,github是一个使用git作为项目管理的开源项目托管网站,在上面有很多开源的软件的项目,
here is it : https://github.com/CyanogenMod
建立你源码的目录,可以随意选一个目录,在这里是 ~/android ,
只要空闲空间在10GB左右(事实上,我的cm7+cm6的代码一共编译后使用了 12.7 GB)
将 ~/android 作为github的源码存放所在地,建立 git
  • mkdir  ~/android
  • cd ~/android
  • repo init -u git://github.com/CyanogenMod/android.git -b gingerbread

复制代码

然后就是同步cm7到你本地去了,需要花费很长时间,我的宿舍网速很慢,舍友也要上网啊,二十来k的,下了整整三天,一共是5.5GB。

这里的16是多少线程下载而已,推荐8+,不然速度更慢。
也许会经常中断,可以自己写一个while脚本,循环执行这个。
  • repo sync -j16

复制代码



三,配置你的设备

在同步完成后,(我同步的时候是有234个分支)
cm7自带有许多的设备的代码,在 devices/ 里面,我们的u8500木有支持,所以只能求助强大的TomG筒子,
他建立了中兴的blade(v880)和u8220的设备库,
就是这个:https://github.com/TomGiordano/android_device_huawei_u8220
在 ~/android/system 目录里面同步他的代码:
  • git clone git://github.com/TomGiordano/android_device_huawei_u8220.git device/huawei/u8220

复制代码

同步完成后,连接你的设备:
  • cd device/huawei/u8220
  • ./extract-files.sh

复制代码

执行
  • ~/android/vendor/cyanogen/get-rommanager

复制代码



四,编译
  • cd ~/android
  • source build/envsetup.sh
  • lunch

复制代码

这里会提示选择你的设备,u8220貌似不能编译,没有设备标签。。。叉。。。我问tom,不过木有回应。
你选择cm的通用设备就好
  • cyanogen_generic-eng

复制代码

然后就是编译啦,推荐8+个进程同时编译
  • make -j16

复制代码

中间会提示一些错误,这些错误在每个人的机器上都是不同的,也许有,也许没有,我也忘了很多,大概只记得几个:

<>提示缺少某文件
——重新同步,或者到https://github.com/CyanogenMod里面找到对应的那个分支,
比如wibkit的分支,就可以直接 git checkout -f git://XXX 来强行同步

<>提示某线程kill
——重新执行 make -j16 就好了,是因为其线程的一些访问冲突或者是你的内存不足,挤掉部分的线程了?

<>提示 某个以 @开头的错误,(这个极其无语)
——修改这个文件:~/android/system/frameworks/base/core/java/android/text/TextUtils.java1752行,
将那个
  • * @param src
  • * @param begin
  • * @param end

复制代码

改成
  • * @param src
  • * @param start
  • * @param end

复制代码

将1764行那个@auth神马的那行给删除

<>貌似还有一个提示什么api错误的,他会提示你的,提出两个解决的方法,选第二个,也就是运行
  • make -j16 update-api

复制代码

<>有一个错误是提示下面这个:
  • In file included from frameworks/base/media/libstagefright/omx/OMXNodeInstance.cpp:22:
  • frameworks/base/media/libstagefright/omx/OMXMaster.h:28: error: expected unqualified-id before 'namespace'
  • frameworks/base/media/libstagefright/omx/OMXMaster.h:28:
  • error: expected constructor, destructor, or type conversion before
  • 'namespace'
  • In file included from frameworks/base/media/libstagefright/omx/OMX.cpp:37:
  • frameworks/base/media/libstagefright/omx/OMXMaster.h:28: error: expected unqualified-id before 'namespace'
  • frameworks/base/media/libstagefright/omx/OMXMaster.h:28:
  • error: expected constructor, destructor, or type conversion before
  • 'namespace'
  • make: *** [out/target/product/generic/obj/SHARED_LIBRARIES/libstagefright_omx_intermediates/OMXNodeInstance.o] 错误 1
  • make: *** [out/target/product/generic/obj/SHARED_LIBRARIES/libstagefright_omx_intermediates/OMX.o] 错误 1

复制代码

将 frameworks/base/include/media/stagefright/OMXPluginBase.h 内容替换成:(妹妹的,居然这论坛code代码里面会将 #include后的内容删掉,莫名奇妙。。。)


#ifndef OMX_PLUGIN_BASE_H_
#define OMX_PLUGIN_BASE_H_
#include
#include
#include
#include

namespace android {
struct OMXComponentBase;
struct OMXPluginBase {
    OMXPluginBase() {}
    virtual ~OMXPluginBase() {}
    virtual OMX_ERRORTYPE makeComponentInstance(const char *name, const OMX_CALLBACKTYPE *callbacks,OMX_PTR appData,OMX_COMPONENTTYPE **component) = 0;
    virtual OMX_ERRORTYPE destroyComponentInstance( OMX_COMPONENTTYPE *component) = 0;
    virtual OMX_ERRORTYPE enumerateComponents(OMX_STRING name,size_t size,OMX_U32 index) = 0;
    virtual OMX_ERRORTYPE getRolesOfComponent(const char *name, Vector *roles) = 0;
private:
    OMXPluginBase(const OMXPluginBase &);
    OMXPluginBase &operator=(const OMXPluginBase &);
};
}
#endif

还有几个问题,不过不记得了,遇上了发邮件给我,jasy.ice@163.com 或者 jasy.ice@gmail.com

五,安装

编译成功了?恭喜你。
你到 ~/android/system/out/target/product/generic 里面就有你需要的system.img了,
到现在为止,你已经编译成功了cm7的代码,不过这个代码并不适用于u8500,
你还需要一个东西——驱动
你可以简单的将android理解为

linux内核
内核部分以上是hal虚拟层,为android提供驱动设备的接口
调用hal的是android的java虚拟机

当然,不太正确的,不过你可以这样理解

将附件里的那几个hal层覆盖到你编译出来的 system 文件夹里,
这几个hal层都是从其他的rom里面提取的,tooken辛苦了,翻找了很多的其他机型的rom来找这个,我是没时间,没精力,没能力这样干。。。

ok,运行这个
  • ~/android/system/out/host/linux-x86/bin/mkyaffs2image ./system system_my.img

复制代码

出来的system_my.img就是你的rom啦~~
至于boot.img可以暂时用着官方的2.2,如果你想要编译自己的内核的话,可以使用u8150的内核源码编译,加上一些补丁,我懒,就不说了。
貌似niufox说过,搜一下他的帖子。。不过这个就无法解决那个光电触摸的问题,我这里有五六个pdf,是关于这个光电触摸键的设备的参数的,需要的同学找来看看。

ps : 2.6.35的难度极其大,因为貌似我找不到高通关于msm7225的2.6.35的内核模板。。。谁知道能不能。。。
点赞 关注
个人签名如果对linux,Android,wince 等嵌入式底层有兴趣的,请加这个QQ群吧,群号:27100460

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表