Chinaunix首页 | 论坛 | 博客
  • 博客访问: 162575
  • 博文数量: 15
  • 博客积分: 2010
  • 博客等级: 大尉
  • 技术积分: 193
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-12 17:44
文章分类

全部博文(15)

文章存档

2009年(5)

2008年(10)

我的朋友

分类: LINUX

2008-12-30 17:22:39


Fedora Core 5 编译Android
NeilWong ()

   如果选择比较新的Linux版本(例如Fedora 10),则编译Android将比较顺利,一般直接make就可以成功生成所需要的文件和系统内核。(最多需要安装gperf), 但在比较旧的Linux内核上编译Android将遇到很多错误,本文以Fedora Core 5为例讲解所安装的步骤,供大家参考。

   1. 因为Android SDK需要JDK 5或JDK 6支持, 但是Fedora Core 5的默认Java版本为JDK 4 (1.4.2), 不能满足需求,因此首先需要升级JAVA.

      从如下地址可以得到最新的JDK

     

      将下载的jdk-6u11-linux-i586.bin文件用chmod +x 设为执行,执行该文件将会自动解开为jdk1.6.0_11子目录,将该目录复制到合适的位置(例如/usr), 然后需要在启动文件中修改默认的JAVA主目录。

      下面的修改以/usr目录做为存放路径

      修改/etc/bashrc, 增加下面的内容

      export JAVA_HOME=/usr/jdk1.6.0_11
      export PATH=$JAVA_HOME/bin:$PATH
      export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$CLASSPATH

      这样重新启动后,相应配置将激活,运行 java -version将出现下面提示:

      [root@Neil java]# java -version
      java version "1.6.0_11"
      Java(TM) SE Runtime Environment (build 1.6.0_11-b03)
      Java HotSpot(TM) Client VM (build 11.0-b16, mixed mode, sharing)
      [root@Neil java]#
      
      说明java已经成功被安装了


   2. 安装gperf

      如果本机不存在gperf时,需要安装gperf. (Fedora 10下也有可能需要该文件) 
     
      yum install gperf

      安装完成后,运行gperf --help将会有提示信息显示


   3. 因为Android需要gcc编译器所包含的include文件至少是2.6版本的, 但是Fedora Core 5自带的gcc 头文件所用的版本为2.4版本,将造成Android编译时找不到相应的定义。

      cat /usr/include/linux/version.h
      #define UTS_RELEASE "2.4.20"
      #define LINUX_VERSION_CODE 132116
      #define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))
      [root@Neil java]#
      
      此时我们可以采用移植的方法暂时将 /usr/include/linux目录改为我们需要的版本,下面以一个已经配置过的Linux-2.6.18.1作为移植头文件版本,用户可以自行设定。

      cd /usr/include
      mv linux old-linux
      ln -s /usr/linux-2.6.18.1/include/linux

      此时/usr/include/linux将使用Linux-2.6.18.1的Linux 头文件了。

   4. make        
 
      如果顺利的话,将在out目录下产生出我们所需要的SDK和相关的Kernel文件了。

Generated: (out/target/product/generic/android-info.txt)
Target system fs image: out/target/product/generic/obj/PACKAGING/systemimage_unopt_intermediates/system.img
Install system fs image: out/target/product/generic/system.img
Target ram disk: out/target/product/generic/ramdisk.img
Target userdata fs image: out/target/product/generic/userdata.img
[root@Neil mydroid]         

  
   5. 修改/etc/bashrc, 增加相应的声明信息.(用户可自行修改到相应Android目录)
     
export PATH=/usr/mydroid/out/host/linux-x86/bin:$PATH
export ANDROID_PRODUCT_OUT=/usr/mydroid/out/target/product/generic


   6. 运行emulate就会出现Android的启动画面了。



      Android 主画面:


     



      Android 浏览器(基于Webkit)


     


 

      Android的一个3D演示: (魔方)

     




   一个小经验:

   当出现下面的错误信息时,一般都是因为make出错后,才另外安装的gperf, 此时只要执行make clean, 再make就可以了。

external/webkit/WebCore/css/CSSGrammar.y: In function 'int WebCore::getPropertyID(const char*, int)':
external/webkit/WebCore/css/CSSGrammar.y:81: error: 'findProp' was not declared in this scope
external/webkit/WebCore/css/CSSGrammar.y:85: error: invalid use of incomplete type 'const struct WebCore::props'



阅读(2428) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~