`
kongweile
  • 浏览: 522423 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Fedora 13 下编译Android 2.2

阅读更多
源码2.1G,加上编译后的文件需要6G左右的空间。CPU内存越快越多越好。如果在虚拟机里要求会更高些,CPU频率少于2G,内存少于2G的到后面估计会比较痛苦。

官网上只给了ubuntu的源代码下载、编译方法。前面的准备工作可以参考一下。

$ sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl sun-java5-jdk zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev

上面这些是要提前安装的软件包。其中sun-java5-jdk要换最新的JDK6,其他的自己用yum检查吧。Fedora的yum源里有些东西没有, 还有一些名称和ubuntu的不一样,上面那些东西如果能找到对应的Fedora名称提前安装更好,找不到也不怕,后面痛苦点,make时根据错误提示去 找自己系统中还缺什么。

官网上说要用JDK5,JDK6不支持。
JDK 5.0, update 12 or higher.Java 6 is not supported, because of incompatibilities with @Override.
不理它,应该是说Android2.1,我在8月初下载的2.2版源代码编译时要用JDK6才行。

但实际上用JDK6编译时被强制要求用64位系统,用32位系统的解决方法在后面。


Python 2.4, which you can download from python.org.
JDK 5.0, update 12 or higher, which you can download from java.sun.com. Java 6 is not supported, because of incompatibilities with @Override.
Git 1.5.4 or newer. You can find it at http://git.or.cz/.
这是官网对ubuntu以外的linux发行版的要求,除了JDK5之外其他两项都要满足。Python一般装好系统后都有,没有的话yum获取也比较方便。Git要去上面的地址下载。

可以下载RPM包安装,我下载的源代码编译安装的。make时记得也有一些错误,根据提示把缺少的东西yum补上就行。

再接下来就是按照官网安装配置repo获取当前最新版本的Android源码。根据网速,慢慢等吧。

下好源代码可以make了,下面是我make时遇到的错误和解决方法,也算是走过的弯路,这些软件包如果提前都安装好了基本上可以一次make搞定。

make时用Fedora便签做的简单记录,懒得再整理了,直接粘贴过来。

1.  /bin/bash: bison: command not found

解决:yum install bison*

2. /bin /bash: g++: command not found

解决:yum install gcc-c++


3. external/qemu/Makefile.android:1101: 警告:覆盖关于目标“external/qemu/android/avd/hw-config-defs.h”的命令
external/qemu/Makefile.android:933: 警告:忽略关于目标“external/qemu/android/avd/hw-config-defs.h”的旧命令

两个警告,估计可以忽略

4. 一大堆关于java的警告错误,难道真的要把JDK降到5.0?
(其实可以不用降级,用JDK6编译的方法在最下边)
解决:
先卸载原来的6.0:yum -e jdk-1.6.0_21-fcs.i586
进入JDK5的下载目录运行:
./jdk-1_5_0_22-linux-i586-rpm.bin
安装完后设置环境变量,要在/etc/profile中设置,.bashrc里设置的不起作用。注销重新登录。

重新make,警告一大堆,不过看似还可以继续进行下去。。。

5. /bin/bash: flex: command not found
解决:
yum -y install flex

6. /usr/bin/ld: cannot find -lncurses
解决:
yum install ncurses-devel

7. prebuilt/linux-x86/sdl/include/SDL/SDL_syswm.h:55:22: 错误:X11/Xlib.h:没有那个文件或目录
prebuilt/linux-x86/sdl/include/SDL/SDL_syswm.h:56:23: 错误:X11/Xatom.h:没有那个文件或目录
In file included from external/qemu/android/main.c:30:
prebuilt/linux-x86/sdl/include/SDL/SDL_syswm.h:73: 错误:expected specifier-qualifier-list before ‘XEvent’
prebuilt/linux-x86/sdl/include/SDL/SDL_syswm.h:86: 错误:expected specifier-qualifier-list before ‘Display’
external/qemu/android/main.c: 在函数‘main’中:
external/qemu/android/main.c:1281: 警告:隐式声明函数‘audio_check_backend_name’
make: *** [out/host/linux-x86/obj/EXECUTABLES/emulator_intermediates/android/mai

解决:
yum install libX11-devel.i686
顺便再根据http://scfofo.iteye.com/blog/696676 的提示再安装gperf(yum install gperf)

8. /usr/bin/ld: cannot find -lhistory
看来fedora中缺的东西不算少
解决:
yum install readline-devel

这次make了两个多小时,中间时不时的从网页切换的控制台看看怎么还不出错,最后竟然make完成了。。。。先睡一小会2010年08月02日 星期一 16时29分51秒


启动模拟器查看编译好的Android:

先设置环境变量,在/etc/profile中加入:
export ANDROID_PRODUCT_OUT=/home/xx/work/mydroid/out/target/product/generic
注销重新登录
打开终端,切换到root,进入out/host/linux-x86/bin
运行./emulator
关于emulator参数可参考 http://book.51cto.com/art/200912/173721.htm


重新make

上次make是在root下,向eclipse里面导入源代码,还有运行模拟器时也都要root权限。删了out文件夹重新make

这次make中重新认识了编译android2.2源代码对java版本的要求。
官网中的说明是针对android2.1的,编译android2.2需要jdk1.6而不是1.5,但它只检查一次,下次make只要不clean就不 会再检查,这也是上回可以用jdk1.5编译完场的原因。但用jdk1.6编译要求OS是64位的,是在extemal下clearsilver模块中的 Android.mk中做了强制限定。这个模块看起来是开发网页模板的,具体可以看其文件夹下的README文件。但为什么用JDK1.6就一定要用64 位版本编译就不清楚了。

解决方法:
1)  先设置系统默认JDK为1.6,make到external/clearsilver/java-jni/文件夹下会出错退出,这时换JDK1.5(换好后需要注销重新登录),再次直接make,不要make clean。
2)  如果一定要用JDK1.6则需要改几个Android.mk文件。如下:
参见:http://androidforums.com/android-developers/115959-ubuntu-10-04-android-open-source-make-error.html

把external/clearsilver/cgi/Android.mk, external/clearsilver/java-jni/Android.mk, external/clearsilver/util/Android.mk, external/clearsilver/cs/Android.mk.

下面脚本中的ifneq改为ifeq可暂时规避问题
# This forces a 64-bit build for Java6
ifneq ($(filter 1.6%,$(java_version)),)
LOCAL_CFLAGS += -m64
LOCAL_LDFLAGS += -m64
endif
分享到:
评论

相关推荐

    基于OMAP3530的android2.2移植

    - **下载编译相关工具**:由于编译Android系统涉及到众多工具,而这些工具可能并未随Fedora 13一起安装,因此需要额外安装或更新。具体工具包括但不限于`make`、`gcc`、`g++`、`git`等。 #### 移植步骤 - **编译x-...

    fedora 13 下载ANDROID源代码的总结.doc

    这个过程虽然复杂,但通过这种方式,开发者可以在Fedora 13环境下获得完整的Android源代码,以便于进行定制化开发或者进行Android系统的深入学习。对于任何想要深入了解Android操作系统的开发者来说,这是一个必要的...

    android移植笔记

    - 电脑B运行Fedora 13系统,用于编译Android系统,并为SBC3530提供NFS ROOT挂载服务。 #### 四、移植步骤 1. **获取Android源代码**: - 使用`curl`命令下载repo工具。 - 设置repo工具的执行权限。 - 使用repo...

    python for android 安装手册

    - **解压**:将下载的SDK包解压缩至用户的主目录下,例如`~/android-sdk-linux_x86/`。 2. **更新SDK并创建虚拟设备** - **更新SDK** - 进入`tools`目录,执行`./android`命令。 - 选择“Installed Packages”...

    ANDROID 安装步骤

    完成以上步骤后,你就可以在Eclipse中创建新的Android项目,使用Android SDK进行编译和调试。记得安装Android模拟器镜像,以便在没有实际设备的情况下测试应用程序。在开发过程中,还可以利用ADT提供的各种辅助工具...

    Linux 可启动 U 盘制作工具 Universal USB Installer 1.9.8.3 中文编译版.zip

    Android AntiX Antergos ArchBang ArchLinux ArtistX Aurora BackBox Baltix Linux BCCD BlehOS Bodhi Boot Repair Disk Carmedia CentOS Chakra Clonezilla Crunchbang DBAN 2.2.X Deft Linux Deepin Linux DRBL ...

Global site tag (gtag.js) - Google Analytics