RH系列linux上编译android2.3(gingerbread)

RH系列linux上编译android2.3(gingerbread)的过程如下:

官方源码及ubuntu编译过程在(http://source.android.com/source/index.html)。


前提:最好用主机编译,虚拟机的话内存越大越好,最好不低于2G,硬盘40G以上,cpu设定2个以上。即使这样也经常出现虚拟机失去反应导致崩溃。

android2.2以前默认用32位主机和jdk5  2.3以后默认用64为主机和jdk6 网上有说通过修订源码可解决此类问题,但是对源码的修改要尽量少。

本次使用的主机是Red Hat Enterprise Linux Server release 5.7 (64 bit)


可以预先安装一些工具如:jdk6,git-core,zip,curl gnupg flex bison gperf 等。剩下的库可以先不安装,编译的时候碰到再一次安装,具体的库参见附录的问题解决情况。

#####################################################

然后下载源码,时间较长,如果有源码可跳过此步,另外如果想要加快下载速度可以把url中的https替换成http  (命令行和manifest),另外注意源码路径跟2.2之前有变,以官网最新为准。

需要使用curlrepogit


curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo  #curl下载repo工具

chmod a+x ~/bin/repo

repo init -u https://android.googlesource.com/platform/manifest -b gingerbread  #初始化repo 下载gingerbread代码,没有b则下载主分支最新代码,应该是android4.x

repo sync   #正是下载源代码。

#######################################################


然后开始编译。


设置环境变量:

export USE_CCACHE=1 #启用编译缓存,多次编译可加速


进入源码根目录。执行

source build/envsetup.sh #增加lunch,m等新的命令

lunch full-eng  #设定机型,默认是模拟器,全编译,开发版。无参启动查看并选择界面。

make -j4   #四个线程编译平台镜像,一般为cpu个数的1~2倍个线程,目标在out/target/product/generic目录下,此过程会删除sdk

make -j4 sdk #编译sdk,目标在out/host/linux-86/sdk目录下,此过程会编译镜像。


在此过程会遇到许多问题,主要是库依赖问题,主要问题见下面.

##########################################################

GLIBC_2.11 not found

该问题是因为android用了eglibc2.11代替了glibc,eglibc兼容libc,但更加优化,我们可以编译eglibc(没有成功),或者尝试编译glibc2.11(没有成功)。


不过临时有更加简单的方法,安卓的gcc降级,如下:

prebuilt/linux-x86/toolchain/arm-eabi-4.4.0 改为 arm-eabi-4.4.3

undefined reference to `typeinfo for android::SortedVectorImpl'

该问题是android根据后缀名去确定文件类型选用编译工具导致出错。解决办法如下:

修订system/media/opensles/libopensles/IAndroidEffect.ccpp,并修订其mk文件


剩下的为依赖库安装 (直接用yum联网安装,安装的时候要注意,有的yum配置默认只安装x86_64的,可以通过后缀强制安装i386或者i686)

stubs-32.hglic-devel.i686

libz.solibstdc++-devel.i686

lzzlib-devel.i686

realinereadline-devel.i686

ncursencurse-devel.i686

X11libX11-devel.i686

GL mesa-libGL-devel.i686

#############################################################

编译完成后需要把$SDK下的toolsplatform-tools都加入PATH路径,否则不能创建avd。模拟器也是一片漆黑。

然后执行android list查看api等级和创建的avd,目前avd为空。


android create avd -t 1 -n myavd #创建名字为myavd1表示列出的第一个platfrom,也就是android-2.3.3

emulator -avd myavd 启动模拟器。


至此模拟器成功运行起来。

跑模拟器要在图形界面下~~~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值