您的位置:首页 > 移动开发 > Android开发

编译x86_64 android 7.1及goldfish内核

2017-05-18 00:00 483 查看
编译Android系统的教程网上很多,之所以还要写这篇文章,是网上的教程基本都是针对arm,而且Android系统都是2.3,4.0等旧版本。本文要做到的是使用模拟器启动自己编译的x86_64架构android 7.1和goldfish。

我第一次编译的arm64的Android 7.1系统,编译完后可以直接在模拟器中运行,默认使用的内核在Android系统源码目录的prebuild/qemu-kernel中,是源码里自带的,并不是我编译出来的。如果想要进行Android内核方面的开发,需要自己编译内核。

当我准备编译goldfish内核的时候,根据网上的教程,却无法在goldfish的arch/arm64/configs目录下找到需要的goldfish_defconfig文件,有的教程说可以在Android系统启动的情况下,使用adb pull /proc/config.gz,解压得到deconfig文件,但是我启动系统之后,发现里面并没有这个压缩包。纠结之后,重新编译了Android系统源码,架构改为x86_64,但是结果还是一样,goldfish的arch/x86_64/configs里面的x86_64_defconfig完全没有效果,同样没有config.gz这个文件。

继续在网上扒资料,终于发现一篇不一样的文章:编译并测试 android goldfish kernel x86,但是文章使用的Android系统版本好像比较早,CROSS_COMPILE设置的路径我在Android7.1里面找不到,build-kernel.sh的路径同样没有。几乎就要放弃的时候,无意间在Android系统源码目录的prebuilts/qemu-kernel/目录中发现了build-kernel.sh文件。真是柳暗花明又一村啊。于是就有了下面的教程了。

一、编译Android系统

可以从Google或者中国科技大学和清华大学的镜像站下载,我是下载别人下的压缩包,里面没有.git文件夹,体积大大减小,只有4G多:http://pan.baidu.com/s/1o8PVK9O 缺点就是无法利用git切换其他版本。下载之后解压。

编译Android系统的教程网上很多,大家可以参考自己动手编译Android源码(超详细)这篇文章。

cd ~/Desktop/android-7.1.0_r1    #我存放Android系统源码的目录
source build/envsetup.sh
lunch aosp_x86_64-eng            #注意,我们编译的是x86_64的系统
make -j4
emulator

以后运行Android系统,只要使用下面的命令:

cd ~/Desktop/android-7.1.0_r1
source build/envsetup.sh
lunch aosp_x86_64-eng
emulator

二、编译goldfish内核

1、下载goldfish源码,我放在~/Desktop/goldfish中:

cd ~/Desktop
git clone git://mirrors.ustc.edu.cn/aosp/kernel/goldfish.git

git clone 的时候会自动创建goldfish文件夹,因此不要先在桌面创建goldfish文件夹,再进入goldfish进行git clone命令。

2、运行Android系统,查看对应的内核版本

3.checkout相应的版本

cd ~/Desktop/goldfish
git branch -a   #查看版本
git checkout remotes/origin/android-goldfish-3.10-n-dev   #checkout

4.编译内核

cd ~/Desktop/goldfish
PATH=$PATH:/home/wuqingyi/Desktop/android-7.1.0_r1/prebuilts/gcc/linux-x86/x86/x86_64-linux-android-4.9/bin
export ARCH=x86_64
export CROSS_COMPILE=x86_64-linux-android-
export REAL_CROSS_COMPILE=x86_64-linux-android-       #这个必须有,否则终端直接闪退。
/home/wuqingyi/Desktop/android-7.1.0_r1/prebuilts/qemu-kernel/build-kernel.sh --arch=x86_64

必须在goldfish内核源码的顶级目录运行上面的命令,我的为~/Desktop/goldfish。否则无法编译。

编译生成的内核放在/tmp/kernel-qemu/x86_64-3.10.0/kernel-qemu。运行Android系统,在emulator中加入参数,即可运行自己编译的内核了。

cd ~/Desktop/android-7.1.0_r1
source build/envsetup.sh
lunch aosp_x86_64-eng
emulator -kernel /tmp/kernel-qemu/x86_64-3.10.0/kernel-qemu


三、总结

本文最主要的是说明goldfish内核的编译,基本可以确定,上面编译x86_64 goldfish的步骤,同样可以用来编译arm64 goldfish,只需把相应的参数修改一下即可。但是模拟器在模拟x86_64的Android系统速度上,较arm有很大的提升。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息