Android源码和内核下载编译流程

Pixel4 安卓源码及内核修改编译教程 | 基于Android12 AOSP【更新:240510】 安卓手机Pixel4刷机AOSP和内核详细教程 阅读详情

原文地址:点击查看

概述

为了深入学习Android系统源码,我们需要下载Android官方的最新源码进行阅读学习,这篇文章我们来总结一下在Ubuntu系统中Android官方源码的下载和编译流程
通过本文可以了解:
  • Ubuntu系统中Android编译环境配置
  • 下载和编译Android源码
  • 下载和编译Android内核源码
  • 将Android源码导入Android Studio
注:本文基于Ubuntu14.04系统中Android Q代码下载编译流程

Ubuntu系统中Android编译环境配置

1.git安装

sudo apt-get install git
git config –global user.email “test@test.com”
git config –global user.name “test”

2.openjdk安装

# 在Ubuntu14.04中需要加入下面源,才能安装openjdk-8版本
sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt-get update
# 如果是Ubuntu16.04或以上版本,直接安装即可
sudo apt-get install openjdk-8-jdk
sudo update-alternatives --config java
java -version
注:Android源码的编译必须使用openJdk

3.repo安装

mkdir ~/bin
PATH=~/bin:$PATH
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
repo的具体用法和介绍可查看 Repo介绍

4.其他依赖库安装


# Ubuntu14.04
sudo apt-get install gnupg flex bison gperf build-essential \
  zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 \
  lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache \
  libgl1-mesa-dev libxml2-utils xsltproc unzip

# Ubuntu16.04
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

下载和编译Android源码

1.下载Android源码

由于国内访问不到Google,因此无法到Google官网下载Android源码,这里推荐到[清华大学开源镜像站](https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/)进行下载,推荐使用如下方式下载

wget -c https://mirrors.tuna.tsinghua.edu.cn/aosp-monthly/aosp-latest.tar # 下载初始化包
tar xf aosp-latest.tar # 解压
cd AOSP   # 解压得到的 AOSP 工程目录
# 这时 ls 的话什么也看不到,因为只有一个隐藏的 .repo 目录
repo sync # 正常同步一遍即可得到完整目录
# 或 repo sync -l 仅checkout代码

2.编译Android源码

source build/envsetup.sh # 初始化编译环境
lunch # 选择编译目标,运行lunch后出现所有目标,选择一个输入回车即可,这里使用模拟器运行选择aosp_x86_64-eng
make -j4 # 开始编译,后面的参数为编译使用CPU资源,普通电脑推荐用4核进行编译,编译输出目录为out

3.将编译好的系统运行到Android虚拟机中

emulator -partition-size 2048 # 运行虚拟机,指定内存为2G

下载和编译Android内核源码

1.下载内核代码

下面是官方下载地址以及git库的版本区别,国内下载还得使用清华源进行下载

git clone http://android.googlesource.com/kernel/common.git # 通用的Linux内核,后面6套都是以该源码为基础;
git clone http://android.googlesource.com/kernel/exynos.git # 用于使用三星Exynos芯片的Android设备,典型代表是Nexus 10;
git clone http://android.googlesource.com/kernel/goldfish.git # 用于Android模拟器的内核源码;
git clone http://android.googlesource.com/kernel/msm.git # 用于使用高通MSM芯片的Android设备,典型代表是ADP1(G1)、ADP2(G2)、Nexus One和Nexus  4;
git clone http://android.googlesource.com/kernel/omap.git # 用于使用德州仪器(TI)OMAP芯片Android设备,典型代表是PandaBoard和Galaxy Nexus;
git clone http://android.googlesource.com/kernel/samsung.git # 用于使用三星Hummingbird芯片的Android设备,典型代表是Nexus S;
git clone http://android.googlesource.com/kernel/tegra.git # 用于使用NVIDIA (Tefra)芯片Android设备,典型代表是Xoom和Nexus 7。
HTC手机可以在以下地址下载指定设备的Linux内核源码:
http://www.htcdev.com/devcenter/downloads

注:内核代码下载我们也使用[清华源](http://mirrors.ustc.edu.cn/aosp/kernel/),这里需要注意此网站下载速度较慢,因此使用下面命令较快,git库可根据需求进行替换,我下载了模拟器内核

git clone https://aosp.tuna.tsinghua.edu.cn/android/kernel/goldfish.git
cd goldfish
git branch -a
git checkout remotes/origin/android-goldfish-2.6.29

2.编译内核代码

配置交叉编译工具
sudo vim /etc/profile # 打开环境变量配置文件,配置交叉编译工具
export PATH=$PATH:~/bin/AOSP/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9/bin
配置makefile文件
cd goldfish
vim Makefile # 打开makefile文件找到并配置如下两个参数
    ARCH      ?=arm
    CROSS_COMPILE  ?=/home/user/bin/AOSP/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9/bin/
arm-linux-androidkernel-
开始编译
make goldfish_defconfig # 生成配置文件
make # 编译命令
运行当前内核版本的模拟器
emulator -kernel ./kernel/goldfish/arch/arm/boot/zImage
# 查看内核版本
adb shell
cd proc
cat version
内核编译过程中如果出现Out of memory error错误,配置jdk内存重新编译即可
export JACK_SERVER_VM_ARGUMENTS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4g"
./prebuilts/sdk/tools/jack-admin kill-server
./prebuilts/sdk/tools/jack-admin start-server

将Android源码导入Android Studio

1.修改AS的配置

因为在导入源码时需要消耗大量内存,所以先修改IDEA_HOME/bin/studio.vmoptions中-Xms和-Xmx的值。README文档中使用的是748m。
较新版本的AS中自带SDK,然后第一次用的时候新的SDK会下载Build Tool 等,大约需要2.25G空间。不想下载的话可以找到android-studio/bin目录下的idea.properties文件,在最后添加一行disable.android.first.run=true,然后再启动AS就好了,然后进去手动配置SDK位置。
(注:每次升级后这些配置都会恢复默认。但SDK不用重新配置)

2.编译生成导入AS所需配置文件(*.ipr)

为了成功将源码导入AS,我们需要先生成AS可是别的项目工程配置文件
在源码根目录依次执行如下命令
source build/ensetup.sh
make idegen && development/tools/idegen/idegen.sh
等待编译完成之后会出现类似下面的结果:
这时会在源码的根目录下生成android.ipr,android.iws和android.iml三个文件
生成的文件包括:
①android.iws 包含工作区的个人设置,比如打开过的文件,版本控制工具的配置,本地修改历史,运行和debug的配置等。
②android.ipr 一般保存了工程相关的设置,比如modules和modules libraries的路径,编译器配置,入口点等。
③android.iml 用来描述modules。它包括modules路径、 依赖关系,顺序设置等。一个项目可以包含多个 *.iml 文件。
之后我们在AS中打开源码根目录下新生成的android.ipr

注:第一次打开源码后会进行代码扫描,我这里用了大概4个小时左右,在此期间查看代码比较卡,待扫描完毕,就可以享受流畅的代码跳转和查看了
pixel 3xl 安卓与内核代码下载、编译与烧入全流程(含安卓源码部分编译) pixel 3xl 保姆级刷机教程 阅读详情

相关推荐

AOSP (一):获取源码

AOSP (一):获取源码AOSP 一获取源码 准备知识 获取源码 编译环境 下载源码 编译运行AOSP 编译AOSP 运行AOSP Anroid内核源码准备知识AOSP即Android Open Source Project,也就是Android系统源码的相关内容。这块代码巨多,而且牵扯比较广,需要各种各样的相关知识。不过AOSP的内容模块相对清晰,仔细啃还是可以的。AOSP的相关参考资料也是很多

u012914419的博客 3213

【源码篇】安卓源码解析(持续总结)

在Linux中,一切皆为文件。安卓底层也是基于Linux开发的。在我们了解源码目录的时候,我们要先知道这些源码的后缀名代表的是什么文件,什么意思,才能更好的去了解其中的原理。

https://blog.youkuaiyun.com/qFAFAF 6194

Android AOSP源码和内核源码获取与下载

通过以上步骤,您可以获取并下载AOSP源码和适用于您设备型号的内核源码。请注意,获取源码后,您可以根据需要进行修改和定制,以满足特定的需求和目标。获取AOSP源码和内核源码是进行Android系统定制和开发的第一步。希望本文能帮助您顺利获取Android AOSP源码和内核源码码和内核源码。访问您设备的制造商官方网站,通常他们会提供设备的开发支持和内核源码的下载。首先,您需要确定您的设备型号。完成以上步骤后,您将在工作目录中获得完整的AOSP源码。完成以上步骤后,您将获得适用于您设备型号的内核源码。

ByteSparkX的博客 923

clang编译内核_Android源码、内核编译

Android源码和内核的编译就是一场马拉松,每一个节点都耗时漫长,下载源码、编译源码、下载内核、编译内核,下载中途会断掉,编译中间会失败,求解再重来,又是一轮马拉松,于是每一步都要做好备份和记录,可是30G的源码(编译后已经达到70G)备份一次都需要好久。好在春节伊始我放弃了其他的学习,全力搞这个过程,终于算是拿下了。不过,漫漫长路,这只是一个开头。我编译的是Android最新稳定版本andro...

weixin_39776787的博客 2246

Android Kernel源码下载方法

Android Kernel的源码是git管理的,和之前下载的Android源码管理方式不一样,所以下载方式也不一样,直接用git下载就可以了;2、 这样下载下来是看不到源码的,查看远程分支。3、 把源码checkout下来。1、 开始下载Kernel。4、 查看本地源码目录结构。

结合项目案例,记录点点滴滴,自己回顾,分享他人o__o 1万+

TCP报文 Flood攻击原理与防御方式

TCP交互过程中包含SYN、SYN-ACK、ACK、FIN和RST报文,这几类报文也可能会被攻击者利用,海量的攻击报文会导致被攻击目标系统资源耗尽、网络拥塞,无法正常提供服务。接下来我们介绍几种常见的Flood攻击的原理和防御方式。

qq_32044265的博客 4219

Android系统源码下载及编译流程

Android系统源码下载及编译流程1.准备工作2.Android源码下载3.Android编译环境搭建4.Android系统编译5.Android内核模块编译1.准备工作Android 由四个层组成: Linux 内核(c/c++)本地用户空间native (c/c++)应用程序框架层应用程序层(java) 老师说她一般在kernel、native、framework层进行代码安全加固。选择An...

wubin0721的专栏 488

【大唐杯学习超快速入门】5G技术原理仿真教学——5G网络开通调测与车联网

自用笔记,比较乱。

qq_41224270的博客 1万+

native层 安卓_来自高纬的对抗:定制安卓内核过反调试

以上文章由作者【r0ysue】的连载有赏投稿,共有五篇,本文为第四篇;也欢迎广大朋友继续投稿,详情可点击OSRC重金征集文稿!!!了解~~温馨提示:建议投稿的朋友尽量用markdown格式,特别是包含大量代码的文章《来自高纬的对抗:定制安卓内核过反调试》传统的TracerPid反调试及绕过反调试的实现原理用Frida来反反调试安卓内核编译流程源码中的内核文件下载内核源码查看手机中系统的内...

weixin_39843078的博客 1026

VIO实战前传:手把手教你解读Kalibr双目IMU标定报告与参数应用

本文详细解析Kalibr双目IMU联合标定报告的核心参数与应用方法,涵盖重投影误差分析、IMU误差指标解读、关键变换矩阵原理及VINS-Fusion实战配置。通过手把手教学帮助开发者准确理解标定结果,解决VIO算法落地中的参数配置难题,提升视觉惯性里程计的系统稳定性与精度。

weixin_42699679的博客 331

基于CY7C68013A芯片的USB2.0设计

基于FPGA的USB2.0读写控制项目简介CY7C68013A芯片介绍CY7C68013A芯片读写时序控制CY7C68013A芯片读写代码USB2.0的测试结果结束语 项目简介 我们前面已经写过了USB3.0的FPGA实现,所用到的芯片是FX600Q芯片,这次我们讲解USB2.0的FPGA代码的编写。我们用到的芯片是Cypress厂家的Cy7C68013A,该款芯片在市场上的应用率极广,我们这里不...

zhangningning1996的博客 1万+

下载android的linux内核的方法

1、安装git        android的linux内核可以从http://android.git.kernel.org/下载,但下载需要使用git,windows版的git可以从http://code.google.com/p/msysgit/下载,有完全安装版和便携版(portable)两个版本可供选择,不常用git的话选portable版就可以了。       下载portable版

gx19862005的专栏 2021

常见的十大量化投资策略(附源码)

量化投资策略是利用量化的方法,进行金融市场的分析、判断和交易的策略、算法的总称。著名的量化投资策略有以下10种(注:策略源码模板不能直接用于实盘交易,仅供探讨交流) 01、海龟交易策略 海龟交易策略是一套非常完整的趋势跟随型的自动化交易策略。这个复杂的策略在入场条件、仓位控制、资金管理、止损止盈等各个环节,都进行了详细的设计,这基本上可以作为复杂交易策略设计和开发的模板。 海龟交易策略源码:https://www.myquant.cn/docs/python_strategyies/110 0.

小壁虎的春天 2万+

Mac编译android内核

一,android内核下载 android内核下载和源码下载是分开的,android内核就是一个git仓库,直接使用git下载,推荐中科大镜像。git clone https://aosp.tuna.tsinghua.edu.cn/kernel/goldfish.git下载之后 运行 git branch -a出现下面这些分支 选择一个分支,选择goldfish分支,否则虚拟机无法加载,我

lchj_yyl的博客 1196

Android SystemUI——初始化流程(三)

1、Android 系统在启动之后,首先会Zygote进程,Zygote进程又会进一步启动 SystemServer进程,它会启动各种系统所需要的服务,在监听AMS启动完毕之后,还会启动SystemUIService。2、在启动SystemUIService服务之前,系统首先会创建SystemUI对应的进程,获取SystemUIAppComponentFactory实例对象,调用instantiateApplicationCompat创建SystemUIApplication实例对象并设置回调方法。

小旭的专栏 1157

SAP Clean Core 对传统 ABAP 开发人员来说意味着什么:机遇和挑战

SAP Clean Core是一种战略方法,旨在优化和现代化 SAP S/4HANA 系统,通过尽量减少定制,确保核心系统的稳定性、高效性和对云环境的兼容性。Clean Core 作为一种设计思路,致力于让 ERP 系统的核心功能保持简洁、规范,避免不必要的复杂化,最终维持一个标准化的核心,使系统更容易升级、性能更优越,同时支持快速的创新能力。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 610

Android源代码的下载和编译

本文是对《Android深度探索-HAL与驱动开发》中关于此章节的总结,记录自己学习的点点滴滴。 Android源代码包含了很多东西,如内嵌在Android系统中的应用程序 (拍照、计算器、日历、拨号器等)源码、Android SDK带的各种工具 源码、Android NDK源码、HAL源码等等,所以Android源码包非常大。 ---源码下载    /*配置下载环境*/  

DEPHI 1448

2026全网最新华为OD机试真题目录A+B+C+D+E卷(持续收录中)-Python版

🔔本文收录于「最新最全华为OD机试真题(Python版)」专栏,手把手带你零基础教学华为OD机试。本题集提供最优题解思路,解题步骤,代码解析,复杂度分析及最优题解源码等,支持多语言题解,助你轻松拿捏OD机考,一举上岸!安利大家关注&&收藏&&订阅!题库正在疯狂收录中,up!up!up!! 🚫提醒:拒绝一切代考/替考,违法必究!本人所写题库均精心搜集于互联网。    💗订阅福利:一次订阅,可永久免费阅读,提供在线答疑解惑,后续题库更新皆可阅读使用!

**My Coding Family** 10万+

Android源码编译(一)----------->TI-Android-GingerBread-2.3-DevKit-1.0 系统定制(just for beagleboard xm Rev B)

================================================================ 转载请注明出处 =================================================

Peter_hucq的专栏 3482

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

安卓逆向之安卓系统编译与刷机

01.编译要求与分支代号.avi 02.编译细节与刷机包.avi 03.Ubuntu系统.avi 04.安卓源码下载.avi 05.获取设备驱动.avi 06.编译源码.avi 07.刷机详解.avi 08.编译内核.avi 09.打包内核与刷内核.avi

weixin_kkyj的博客 332

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

android 4.2.1 下载和编译

本人安装的是ubuntu12.04 64位系统 1、mkdir ~/bin PATH=~/bin:$PATH 2、curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo >~/bin/repo chmod a+x ~/bin/repo 注:因为google.com被拉黑,可能连接不上。如果从其他链接下载,版本较低的话,

firekylin_2000的专栏 3355

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Android内核编译图文教程(HTC G10 Ubuntu 11.04)

转载 http://www.miui.com/thread-683503-1-1.html   第0步 编译准备 首先,介绍以下编译内核的环境。 主机:Ubuntu 11.04(32bit) 目标机:HTC Desire HD(G10) 安装系统HTC官方系统2.3(内核版本2.6.35) 需要下载文件: 1> Android源码(仅适合HTC) http://www.htcd

geniusmen的专栏 2144

android11源码编译

前言 Android编译再国内其实总是会遇到各种奇怪的问题,但是想观察一下Android源码,不编译一下代码总是少点什么,虽然大部分开发系统的开发者都有开发板,所以会有芯片厂商提供的系统,但是每次都要刷机,感觉不如虚拟机好玩,当前大部分文档都是编译arm系统,大部分虚拟机无法运行,这里介绍一下内核以及aosp的编译过程 正文 目的是编译Android 11 源码,需要的配置是16+g内存,以及300g硬盘,系统ubunut 下载Android系统代码(aosp) Android系统源码下载其实比较简单,具体

白嫩豆腐 2330

Android4.2模拟器kernel下载及编译-linux kernel3.4.0

http://blog.youkuaiyun.com/tankai19880619/article/details/8662574     ===================================================================================================================================

victoryckl的专栏 1120

Android深度探索-卷1第四章心得体会

这一章的和三章的git用法有联系,so,吧上一章的git基本用法搞好了再来,具体的方法就是看书上网查,这里就不做详细步骤介绍了。这章就有点意思了,是源码的下载和编译,有能看的,能自己鼓捣的,本章介绍的是方法,可以类推其他。Android一直主要就是Linux内核的移植,Linux的移植有主要是Linux驱动的移植,所以我们在学习的时候要搭起码俩环境,一个Android的,一个Linux的。本章前半...

weixin_30653097的博客 105

深入显出 - Android系统移植与平台开发(一)

深入浅出 - Android系统移植与平台开发(一)+-------------------------------------------------+ +      本系列为连载,不定期会更新       +  +-------------------------------------------------+   一、Android4.0系统的下载与编译 Android系统的下...

xieshuai1988419的专栏 238
上一篇: Android系统OTG_usb链接摄像头的驱动和使用
下一篇: gitment Error:validation failed错误解决办法
墨迹流韶
博客等级 码龄12年 3粉丝 7原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值