[记录] android源码下载编译
记录一下android整个代码的下载和编译过程
一、下载android源码
由于国内不能访问googlesource网站,所以下面所有的代码都需要借助清华开源镜像站下载。
首先创建一个android文件夹(可自定义)
mkdir android
cd android
然后执行下面的命令
curl https://storage.googleapis.com/git-repo-downloads/repo > ./repo
sudo chmod a+x repo
注:如果这个还没有安装curl工具,则需要通过apt安装
执行下面的命令来初始化仓库,因为需要下载android9所以在后面加-b android-9.0.0_r10
来指定下载版本
./repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android-9.0.0_r10
然后执行下面的命令就可以同步代码了
./repo sync
这里执行命令的时候出现了错误,看报错信息主要是repo文件里的https://gerrit.googlesource.com/git-repo
地址不能够访问,需要在文件里把地址修改为https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/
然后再执行一次上述命令即可。
二、编译android
首先是java环境,网上很多说需要下载openjdk8
,但是我编译来说源码里自带了jdk8
和jdk9
,编译加载的jdk9
。然后我机器上安装的有openjdk8
,就导致JVM库的调用有问题,使得编译失败,对java不太熟悉,所以不太明白具体原因。最终是卸载干净机器上的java环境解决的。
此外还有一些相关库的依赖,也需要都安装,少了很有可能导致clang++在编译cpp的时候出错。(我这里坑了很久)
sudo apt-get install libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-dev g++-multilib
sudo apt-get install -y git flex bison gperf build-essential libncurses5-dev:i386
sudo apt-get install tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386
sudo apt-get install dpkg-dev libsdl1.2-dev libesd0-dev
sudo apt-get install git-core gnupg flex bison gperf build-essential
sudo apt-get install zip curl zlib1g-dev gcc-multilib g++-multilib
sudo apt-get install libc6-dev-i386
sudo apt-get install lib32ncurses5-dev x11proto-core-dev libx11-dev
sudo apt-get install libgl1-mesa-dev libxml2-utils xsltproc unzip m4
sudo apt-get install lib32z-dev ccache
编译主要通过下面三条命令执行,没有实际的机器运行,需要通过emulator
来运行,所以lunch
配置选择aosp_x86_64-eng
source ./build/envsetup.sh
lunch
# 选择6
make -j16
编译完成后,使用emulator
来启动模拟器,这个命令是编译SDK生成的,我们上面是编译所有同时也把SDK编译成功了
emulator
然后我的机器上出现了错误,如下
liu@liu-MS-7C94:~/android$ emulator
emulator: WARNING: Couldn't find crash service executable /home/liu/android/prebuilts/android-emulator/linux-x86_64/emulator64-crash-serviceemulator: WARNING: system partition size adjusted to match image file (2562 MB > 800 MB)emulator: ERROR: x86_64 emulation currently requires hardware acceleration!
Please ensure KVM is properly installed and usable.
CPU acceleration status: This user doesn't have permissions to use KVM (/dev/kvm)
这里的错误信息很明显,没有权限使用(/dev/kvm)文件,赋给该文件对应权限即可。使用该功能需要BIOS开启虚拟化,如果不行可以先看看虚拟化是不是打开了,最终结果如下
然后需要adb连接虚拟机,进行相关的测试动作。使用源码中的adb程序即可
liu@liu-MS-7C94:~$ ./android/out/host/linux-x86/bin/adb shell
generic_x86_64:/ #
至此,android9的编译,启动,adb连接成功
三、下载android内核
我主要工作还是研究驱动,内核。所以还需要替换下载内核代码来研究
谷歌提供一个goldfish
的内核代码用来适配模拟器平台,所以我们就拉这个代码,同样把地址换成清华大学镜像地址
git clone http://aosp.tuna.tsinghua.edu.cn/kernel/goldfish.git
然后通过adb查看一下刚刚运行成功的android9使用的内核版本
liu@liu-MS-7C94:~$ ./android/out/host/linux-x86/bin/adb shell
generic_x86_64:/ # cat pro
proc/ product/
generic_x86_64:/ # cat proc/version
Linux version 4.4.124+ (android-build@wprf1.hot.corp.google.com) (gcc version 4.9.x 20150123 (prerelease) (GCC) ) #1 SMP PREEMPT Thu Aug 16 04:59:43 UTC 2018
generic_x86_64:/ #
可以看到使用的是4.4的版本,拉下来的代码里面只有android-goldfish-4.4-dev
,所以切换到该分支上开发
git checkout android-goldfish-4.4-dev
四、编译内核
编译主要两个参数,ARCH表示芯片的体系架构,CROSS_COMPILE指定使用的编译器
上面的android采用的是x86_64架构,所以编译内核时也采用x86_64架构。采用配置为x86_64_ranchu_defconfig
,为什么不采用x86_64_defconfig
的配置呢,因为编译后加载发现kernel会卡在wait /dev/sda1这里,使得进入不了android系统。所以采用x86_64_ranchu_defconfig
配置
编译命令如下:
# 因为这里编译x86平台,就没有指定编译器,默认使用机器上的gcc
make ARCH=x86 x86_64_ranchu_defconfig
make ARCH=x86 -j8
编译成功后,在arch/x86/boot/下生成bzImage文件,然后使用emulator启动内核文件
# 后面的-show-kernel是将kernel的log输出出来,可以方便debug
emulator -kernel goldfish/arch/x86/boot/bzImage -show-kernel
到此,内核镜像的替换也成功了!
[记录] android源码下载编译相关推荐
- android 源码下载编译
引用:http://www.2cto.com/kf/201202/121175.html 最新的android4.0源代码公布以后,相信很多人和我一样都跃跃欲试,其实4.0的代码下载和编译和以前的版本 ...
- linux编译android源码,ubuntu16.04 Android源码下载编译
本次编译源码的电脑为Ubuntu 16.04,4核 + 4G内存. 注. 对于电脑配置低的建议不要编译7.0以上的版本,就像我这台电脑,基本编译7.0以上都会报内存不足问题,因为在7.0版以上andr ...
- android源码下载,编译及编译时遇到的错误整理
一.环境搭建 因为android的源码编译只支持linux和mac,所以无法在windows下编译.我的电脑也没有双系统,因此只有装一个虚拟机.我用的是VMware workstation 我放到了百 ...
- 《深入理解Android内核设计思想(第2版)(上下册)》之Android源码下载及编译
本文摘自人民邮电出版社异步社区<深入理解Android内核设计思想(第2版)(上下册)> 购书地址:http://item.jd.com/12212640.html 试读地址:http:/ ...
- 《深入理解Android内核设计思想(第2版)(上下册)》之Android源码下载及编译...
本文摘自人民邮电出版社异步社区<深入理解Android内核设计思想(第2版)(上下册)> 购书地址:item.jd.com/12212640.ht- 试读地址:www.epubit.com ...
- VLC for Android源码下载和编译
Project Hosting on 点击打开链接 最受欢迎的开源项目 点击打开链接 由Android的核心开发团队提供了15个优秀的示例项 目,包含了游戏.图像处理.时间显示.开始菜单快捷方式等. ...
- Android AOSP和Android-X86源码下载编译终极普法
Android AOSP和Android-X86源码下载编译终极普法 引言 最近有朋友在询问怎么下载Android AOSP源码和Android-X86源码,编译学习!其实这个说简单也简单 ...
- android 清华镜像,清华镜像网站下载android源码并编译
8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 下载android源码方法: 我的系统是ubuntu 18.04,主要参考了blog通过清华大学镜像下载Android源 ...
- android源码下载以及编译自己的ROM
android源码下载以及编译自己的ROM 最近发现kernel.org被墙了,为什么这种网站也能被墙了? 要想下载源码的话,只能绕过去了.下面是我从网上搜索到的一些下载方法: =========== ...
最新文章
- 测序技术有4个指标:读长、成本、准确度、通量
- 网站描述怎么写?对网站优化有什么作用?
- 在 Shell 脚本中执行语法检查调试模式
- go interface{}类型转换
- 如何使用nodejs代码在新浪微博上发布帖子
- SQL行列转换问题整理
- 长的帅不是你的错,长的没特点就不应该了
- Airflow 中文文档:用Celery扩大规模
- 【目标检测】IoU、GIoU、DIoU、CIoU Loss详解及代码实现
- 云原生的本质_什么是云原生?云原生和传统软件有什么区别?有什么特征
- Windows Phone本地数据库(SQLCE):13、更新数据(翻译)
- arduino超声波测距接线图详细_Arduino超声波测距模块使用
- 正则表达式-入门资料
- 3dmax2017卸载/安装失败/如何彻底卸载清除干净3dmax2017注册表和文件的方法
- 类案检索功能优化建议(一)——开发路径辨析
- 主观唯心、客观唯心、朴素唯物、历史唯物、辩证唯物主义的内涵、区别和联系
- 路由器当交换机用,应该怎样配置?
- 在精不在多,3 分钟看 3 个 JS 小把戏
- python3 onvif协议 摄像头控制
- 关于阿里云服务器可以怎么选择地域
热门文章
- zabbix连接mysql_zabbix的简单操作(监控客户端MySQL数据包库)
- 颜值爆表!Redis 官方客户端工具,功能强大,且支持可视化监控!
- autocad2014点击保存闪退_AutoCAD2014闪退的原因和解决方法 一打开就闪退怎么办
- 如何用自己电脑架设服务器!自助建站将不再是梦想
- 电子设计中常用的运放电路
- 设计一个猜拳游戏,完成人机猜拳互动游戏的开发。
- 机器学习------L1、L2规范化(L1 Regularization、L1 Regularization)
- Dell服务器组建阵列-Raid(无阵列卡)
- base64编码类------源代码(C#)
- oracle cosh 函数,oracle cosh exp floor in log等函数