操作系统和android的版本
使用环境:fedora 18 x86_64
android版本:android-4.2
安装依赖环境
<1>安装系统相关软件包
- yum install -y zip curl gcc gcc-c++ flex bison gperfglibc.i686 glibc-devel.x86_64glibc-devel.i686, zlib-devel.x86_64zlib-devel.i686 ncurses-devel.i686 libX11-devel.i686 libstdc++.i686 libsx-devel readline-devel.i686 libXrender.i686 libXrandr.i686 schedtool pngcrush perl-Tk perl-Digest-MD5 perl-Switch SDL.i686 mesa-libG
<2>安装JDK:
卸载openjdk
- rpm -qa|grep open|grep jdk|xargs rpm -e --nodeps
- cp jdk-6u45-linux-x64.bin /usr/local;
- cd /usr/local;
- sh jdk-6u45-linux-x64.bin;
将java设置到环境变量中去,在文件/etc/bashrc中添加以下行
- export JAVA_HOME=/usr/local/jdk1.6.0_45
- export PATH=$PATH:$JAVA_HOME/bin
下载及编译
下载源代码
编译源码
<1>设置缓存
- export USE_CCACHE=1
- prebuilts/misc/linux-x86/ccache/ccache -M 50G
<2>编译
- make -j2 PRODUCT-sdk-sdk
编译golden_fish内核
<2>参照
http://source.android.com/source/building-kernels.html配置编译环境,将以下加入到环境变量中,其中android源代码位置为:/home/android/android
- export ARCH=arm
- export SUBARCH=arm
- export CROSS_COMPILE=arm-eabi-
- export PATH=$PATH:/home/android/android/prebuilts/gcc/linux-x86/arm/arm-eabi-4.7/bin
<3>执行以下命令进行编译
- make goldfish_armv7_defconfig
- make -j2
运行模拟器
<1>将sdk加入到环境变量,其中android源代码位置为:/home/android/android
- export SDK_DIR=/home/android/android/out/host/linux-x86/sdk/android-sdk_eng.android_linux-x86
- export PATH=$PATH:$SDK_DIR/tools
<2>创建sdcard
- mksdcard 512M sdcard.img;
- android create avd --target 1 --name test --sdcard sdcard.img;
- android list avd;
- emulator @test
<4>检验核心是否可用
- emulator @test -kernel kernel/goldfish/arch/arm/boot/zImage
- emulator @test -kernel /home/android/android/kernel/goldfish/arch/arm/boot/zImage -system /home/android/android/out/target/product/generic/system.img -data /home/android/android/out/target/product/generic/userdata.img -ramdisk /home/android/android/out/target/product/generic/ramdisk.img
tips
<1>运行emulator时如果出现故障,可使用
- LIBGL_DEBUG=verbose emulator
命令来显示更多的调试信息。
<2>编译源码时,会覆盖sdk,为了避免重新编译sdk,最好将文件
- /home/android/android/out/host/linux-x86/sdk/android-sdk_eng.android_linux-x86.zip
遇到的问题
<1>编译时出现
- Can't locate Digest/MD5.pm in @INC
- yum install perl-Tk perl-Digest-MD5
<2>编译时出现
- Can't locate Switch.pm in @INC
解决方法:
- yum install perl-Switch
<3>运行emulator时出现
- SDL init failure, reason is: No available video device
- yum install SDL.i686; reboot
- error libGL.so: cannot open shared object file: No such file or directory
- Failed to load libGL.so
- yum install mesa-libG
- cd /usr/lib64; ln -s libGL.so.1.2.0 libGL.so
转载请保留原始博客地址:http://blog.youkuaiyun.com/u010759010/article