-
2022-01-20 01:48:03
最近在折腾面试,然后就有些组件的原理需要看源码,之前也弄过,都是用的Source Insight在win10里面搞的,今天试了一下Mac,源码60G,我这个版本是Android 11,目前是最新版的代码。
用AS看源码首先要构建项目配置文件,就是ipr和iml工具,用到Android源码里面的idegen工具,但是你用官方的mmm命令方法会报错,说文件格式不对,本来是可以用mmm命令直接生成的,但是Mac的文件系统跟官方要求的有问题,所以就放弃了,有想试试的同学可以执行下面的命令。
cd ~/aosp //具体的源码根目录 source build/envsetup.sh //用于初始化环境变量 mmm development/tools/idegen/ //生成文件out/host/linux-x86/framework/idegen.jar ./development/tools/idegen/idegen.sh//源码根目录生成文件android.ipr(工程相关设置), android.iml(模块相关配置)
反正我这条路没走通,用的野路子。
首先把目录切到development/tools/idegen/src下面,这样比较方便。
1、编译idegen的源码,把java文件编译成class文件
javac *.java //aosp/development/tools/idegen/src
2、打包所有的class文件到可执行的jar文件中jar cvfe idegen.jar Main *.class
3、把idegen.jar文件移动到android源码根目录
/aosp/idegen.jar
4、运行idegen.jarjava -jar idegen.jar
5、等待完成,成功后如下
Read excludes: 9ms
Traversed tree: 149984ms
6、在android源码跟目录检查android.iml和android.ipr文件
/aosp/android.iml
/aosp/android.ipr
7、用Android Studio打开ipr文件,等待AS构建索引文件,时间较慢由于目录比较大,我的AS还在运行,等运行完成,我再来更新一下文章,看看整个过程需要多久,还有遇到的问题。
更多相关内容 -
ANDROID源码分析实录
2016-01-11 09:52:11《Android源码分析实录》共分为15章,主要内容包括走进Android世界、硬件抽象层详解、分析JNI(Java本地接口)层、Android内存系统分析、Andmid虚拟机系统详解、IPC通信机制详解、Zygote进程/System进程和应用程序... -
android源码设计模式解析与实战.pdf下载 完整版高清
2016-12-02 19:35:05本书从Android源码的角度由浅入深地剖析设计模式的运用,让工程师们把设计与模式重视起来,提升自己的设计能力与代码质量。因此本书适合的读者为初、中、高级Android工程师。另外,设计思想都是相通的,其他领域的... -
Android应用源码45套安卓源码合集.zip
2021-05-29 08:25:21Android应用源码45套安卓源码合集: android中文离线发音引擎FOCTTS使用源码.rar Android应用源码(精)LBS签到应用源码.rar Android应用源码(精)xUtils2.2.5.rar Android应用源码(精)仿博客园客户端源码.rar Android... -
Android 源码编译步骤实录
2022-04-02 16:35:23Android源码编译流程提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言
新公司入职,领了新的Linux电脑,身为一名光荣的Android开发者,电脑上Android源码肯定得有一套的,所以借此契机,整理一套Android源码下载与编译基本流程。当然Google官方已经整理得很详细了,详参Google开发者流程。废话不多说,直接开干
一、系统环境
系统:Ubuntu18.04 LTS
二、Linux换源
这一步主要是将Ubuntu系统默认的源换成国内的镜像源,推荐清华源,他们官方文档写得很详细
1.备份并替换默认源文件
一名合格的程序员都会为自己留一条后路,记得备份原本的默认源文件:Ubuntu 的软件源配置文件是
/etc/apt/sources.list
。将系统自带的该文件做个备份,将该文件替换为下面内容,即可使用清华源的软件源镜像。# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释 deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse # 预发布软件源,不建议启用 # deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
文件内容替换完成后Update一下
sudo apt-get update
三、基本环境安装
1、repo下载安装
mkdir ~/bin PATH=~/bin:$PATH curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo > ~/bin/repo chmod a+x ~/bin/repo
这里使用的是清华源的git-repo文件地址,如果提示curl命令找不到,请按Linux提示安装curl,也可以直接暴力点击进入https://mirrors.tuna.tsinghua.edu.cn/git/git-repo进行下载
repo的运行过程中会尝试访问官方的git源更新自己,如果想使用tuna的镜像源进行更新(推荐),可以将如下内容复制到你的
~/.bashrc
里export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo'
2、git安装
sudo apt-get install git
配置自己Git用户名和邮箱
git config --global user.name "your_name" git config --global user.email "your_email"
3、python3安装
注:源码下载需要python3版本支持
sudo apt-get install python3
四、使用repo下载Android源码
创建源码本地保存路径
mkdir AOSP cd AOSP
初始化代码仓库
repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android-security-9.0.0_r76
-b
后面跟的是Android版本,详见Android版本列表选择自己想要下载的Android版本同步源码树(以后只需执行这条命令来同步)
repo sync -c -d --no-tag
接下来等待源码下载完成就可以啦(这个过程很漫长)
注:如果在初始化代码仓库的时候报SSL协议的CA证书问题,就把上面所有https的地址换成http就好,然后把代码仓库里的.repo文件夹删除,再初始化。当然这是最暴力的手段,官方还是推荐使用https协议下载源码的,安全!!!
五、源码编译
1、编译环境准备
sudo apt-get install git-core gnupg flex bison build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 libncurses5 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig
如果存在部分安装失败,可以尝试将镜像源文件里的注释给解开,
update
后再试。或者运行sudo apt-get install -f
自动卸载未安装的软件。
这是Ubuntu18.04的环境,官方也给出了其他Ubuntu版本的环境安装命令。
Ubuntu14.04:sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 libncurses5 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev libgl1-mesa-dev libxml2-utils xsltproc unzip
Ubuntu12.04:
sudo apt-get install git gnupg flex bison gperf build-essential zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386 sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so
Ubuntu10.04-11.10:
sudo apt-get install git gnupg flex bison gperf build-essential zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown libxml2-utils xsltproc
在 Ubuntu 10.10 中,请运行以下命令:
sudo ln -s /usr/lib32/mesa/libGL.so.1 /usr/lib32/mesa/libGL.so
在 Ubuntu 11.10 中,请运行以下命令:
sudo apt-get install libx11-dev:i386
2、python2安装
注:这里比较坑的是,源码下载要用python3,源码编译要用python2(裂开)
sudo apt-get install python2.7
安装完之后得配置一下python版本的优先级
# 进入ubuntu 软件安装的文件夹 cd /usr/bin/ # 过滤 python,查看python各版本文件名路径 ll | grep python # 配置优先级,150>100 sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 150 sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 100 # 查看当前默认 python 版本,确认优先级是否配置成功 python --version # 显示是python2.x就成功了
3、开始编译
进入本地代码路径
cd AOSP # clean一遍 make clobber # 开始民工三连 source build/evnsetup.sh lunch # 这时候需要选择一个镜像编译版本,根据你的需求和机型来,输入版本前面对应的数字序号 1 # 整编,-j参数根据你的cpu线程数自己决定 make -j8
理想情况下几个小时后就收到编译成功的通知了~
单编的话就进入到子模块目录(带Android.mk文件目录)下
mm -j8
就好总结
文章只是整理了部分步骤,还有很多的不足,请谅解
-
Android源码 目录
2022-04-25 12:42:49instruction:Master-android - eLinux.org 文件夹名 内容 art 全新的ART运行环境 bionic 系统C库 bootable 系统启动引导代码 build 存放Android系统编译规则,以及generic等基础开发配置包...1. 根目录
instruction:Master-android - eLinux.org
文件夹名 内容 art 全新的ART运行环境 bionic 系统C库 bootable 系统启动引导代码 build 存放Android系统编译规则,以及generic等基础开发配置包。 cts Android 兼容性测试套件标准 dalvik Dalvik虚拟机 developers 开发者目录,包含构建App和一些demo代码 development 与应用成虚开发相关 device 设备相关配置 docs 参考文档目录 external 开源模组相关文件,一些开源第三方组件,例如:glide、junit、dagger2等 frameworks 应用程序框架,Android系统核心部分,由Java和C++编写 hardware 主要包含了 android HAL(硬件抽象层)相关代码。硬件抽象层介于 Linux内核驱动程序与 Android 系统之间。对 Linux 驱动进行了封装,使操作系统级别可以忽略底层实现的细节 libcore 核心库相关文件 libnativehelper 动态库,实现JNI库的基础 out 编译完成后生成的所有都在这里 pdk Platform Development kit的缩写,平台开发套件,仅包含了一些供硬件抽象层开发使用的必要组件,供一些 OEM 厂商用来适配及测试最新的Android 系统,加快第三方厂商的更新速度。
加快OEM厂商的update速度platform_testing 平台测试 prebuilts x86和ARM架构下预编译的一些资源 sdk sdk和模拟器 packages 系统应用程序包 system 底层文件系统库,应用和组件 toolchain 工具链文件 tools 工具文件 vendor 包含不同供应商的私有的二进制库 makefile 全局Makefile文件,用来定义编译规则 2.Bootable
文件夹名 内容 libbootloader 为boot引导系统启动 recovery 恢复模式系统,系统升级等等 frameworks 应用框架层
应用框架层是系统的核心部分,向上提供接口给应用层调用,向下与c/c++程序库以及硬件抽象层衔接,其主要实现代码在frameworks/base 和 frameworks/av下
frameworks/base
文件夹名 内容 文件夹名 内容 api 定义api cmds 重要命令:am\app_procee等 core 核心库 data 字体和声音等文件 docs 文档 graphics 与图形图像相关 include 头文件 keystore 与数据签名证书相关 libs 库 location 地理位置相关 media 多媒体库 native 本地库 nfc-extras 与NFC相关 obex 蓝牙传输 opengl 2D/3D图形API packages 设置TTS、VPN程序 sax xml解析器 services 系统服务 telephony 电话通信管理 test-runner 测试工具相关 tests 与测试相关 tools 工具 vr 与VR相关 wifi wifi无线网络 3.packages应用层部分
文件夹名 内容 apps 核心应用程序,例如:蓝牙、浏览器、相机、邮件、音乐、NFC experimental 第三方应用程序 inputmthods 输入法目录 providers 内容提供目录,例如:MediaProvider、DownloadProvider、MmsProvider screensavers 屏幕保护目录 services 通信服务 wallpapers 墙纸 4.C/C++程序库部分
系统运行库层native中C/C++程序库类型繁多,功能强大,他们并不完全在一个目录中,这里是几个C/C++的重要的程序库所在的目录位置
目录位置 内容 bionic Google开发的系统C库,以BSD许可形式开源 frameworks/av/media 系统媒体库 frameworks/native/opengl 第三方图形渲染库 frameworks/native/serevices/surfaceflinger 图形显示库,负责图形渲染、叠加、绘制等 external/sqlite 轻量级关系型数据库SQLite的C++实现 5. out目录
5.1 .module_paths目录
在/build/soong/cmd/soong_ui/main.go
中的main
函数中调用build.FindSources(buildCtx, config, f)
在device、vendor、product目录中查找AndroidProducts.mk文件。并将所有的名为AndroidProducts.mk文件路径记录在AndroidProducts.mk.list中。这函数的作用不止如此,还会查找Android.mk、Android.bp、CleanSpec.mk等文件
5.Android架构层级和代码目录的大致对应关系
架构层级 代码目录 Application层 packages/apps/ Framework层 framewordks/ Libraries层 运行库libraries--bilnic/ Android Runtime art/ dalvik/ libcore/ HAL层 hardware/ Linux Kenel kernel/ -
Android:如何查看Android源码
2022-02-01 22:51:28 -
下载Android源码详细过程记录
2022-04-29 15:38:42下载Android源码详细过程第一步:如果原先电脑不具备虚拟且是window系统的下载wsl: 第一步:如果原先电脑不具备虚拟且是window系统的下载wsl: 步骤1 (1)在控制面板\程序\程序和功能 中选择 启用或者关闭Windows... -
Android源码编译过程及刷机过程详解
2020-09-01 13:55:35本文将详细介绍Android源码编译过程,以及编译完成后如何进行刷机。 -
android 源码导入android studio中(仿佛打开了新世界)
2021-07-27 08:10:361.在源码中生成android studio 环境 下载好全包源码后,在源码根目录执行以下四条命令: 1. "source build/envsetup.sh" (source可以用 . 代替,即". build/envsetup.sh") 2. "lunch",并选择要编译的项目 3. ... -
Android 源码查看网站分享
2022-04-04 22:44:42此类网站很多,未记录上常用的也可以在底部评论 ... 这个主要是有Android各版本内容方便一点 https://android.googlesource.com/platform/packages/apps/ google官方源代码查看,开源网站。支持repo下载 ... -
Android源码地址下载
2021-12-15 11:22:41说明: 下载当前最新的aosp jar包,也就是 aosp-20210701.tar,现在最新的就是20210701.tar 这个tar包,所以它和 aosp-latest.tar是同一个压缩包,从迅雷下载这个jar包(126G),迅雷会使用云下载,下载速度会提升很... -
Android源码编译基于ubuntu20.04和Pixel3真机
2022-04-12 10:58:451.清华aosp源码下载,配置地址 https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/ 2.通过修改环境变量文件更新****REPO_URL的地址 https://mirrors.tuna.tsinghua.edu.cn/help/git-repo/ 3.Android各版本分支名称... -
Android源码在线查看工具
2021-01-23 17:44:30AndroidXRef 提供了完整的 Android 源码的索引,包括内核源码。 在 AndroidXRef 主页的左侧显示了可用的源码版本,如图 1 所示,点击相应的源码版本链接就可以进入对应的源码分支,如图 2 所示。 图1 AndroidXRef... -
一步一步教你如何在AndroidStudio查看Android源码(AOSP源码)
2020-09-01 14:02:45一步一步教你如何在AndroidStudio查看Android源码(AOSP源码) -
Android源码解析之Android系统启动整体流程分析
2022-04-12 11:21:56android系统启动流程整体介绍 -
VSCode查看Android源码,从入门到放弃
2022-01-23 00:46:15VSCode查看Android源码比较简单,首先下载Android源码,我用的Mac,所以比较方便,对了repo在homebrew里面就有,直接brew install repo就可以,但是版本比官方的略低,但是可以用,只是有警告。 下载之后直接用... -
在线查看android源码的地址
2021-12-20 10:44:36记录 在线查看android源码的地址 安卓社区 AndroidXRef -
Android 源码下载并编译Rom
2021-11-20 16:39:31mkdir ~/android-repo cd ~/android-repo git clone https://aosp.tuna.tsinghua.edu.cn/git-repo/ chmod a+x git-repo/repo 然后添加repo(路径目录如:~/git-repo/repo)到PATH环境变量 export PATH=~/git-... -
android 源码编译 模拟器emulator启动
2022-01-28 19:45:19Android源代码编译成功之后,我们就可以运行它了。为了方便起见,我们使用Android模拟器emulator来运行编译出来的Android源代码。执行以下命令来启动Android模拟器: ~~~ USER@MACHINE:~/Android$ export PATH=$... -
android源码下编译jni示例项目代码
2012-08-13 16:59:02在android 2.0环境下编写的jni示例项目源码,实现了简单的四则运算 -
AS 打开android源码跳转
2022-01-16 23:53:57https://www.jianshu.com/p/2ba5d6bd461e -
使用AndroidStudio查看并调试Android源码
2018-11-04 19:08:42使用AndroidStudio查看并调试Android源码使用AndroidStudio查看并调试Android源码0.基础环境1. 操作系统2. Java3. Android源码1. 编译源码初始化编译环境AndroidP的终端检查源码AndroidO的终端检查源码选择编译目标... -
android源码分卷压缩和解压
2021-11-16 17:40:13原理上是跟文件夹的分卷压缩是一样的,有些大的文件压缩后还是大,不方便拷贝,这就可以用到分卷压缩,然后再拷贝就方便很多了。我通过实例的方式去讲解实现方法。 例:Ubuntu下有一文件夹myfile,大小约为90G。... -
android源码全国城市选择列表Demo
2013-05-20 15:54:58android全国城市选择列表小demo,适合新手。 全国城市数据存在sqlite中,通过适当的规律自由选取相印城市。 适合新手参考,老鸟就直接飘过吧... -
Android源码编译:openjdk安装
2022-01-17 16:53:15Android O源码编译时,对openjdk的版本有要求,3.1.2版本会导致与jack服务socekt通信失败。建议切换为低版本的openjdk。 Android O -Jack错误导致编译失败_就是yying的博客-CSDN博客 1.首先查看当前openjdk的... -
Android源码导入AndroidStudio或IntelliJ IDEA
2021-12-28 09:31:47经常和Android系统源代码(AOSP)打交道的人,如果要去修改系统源码,显然用SourceInsight、Notepad++、vim这些工具有些麻烦,并且想快速补全代码也做不到。 我们可以用idegen来生成针对AndroidStudio或IntelliJ IDEA... -
【模拟器】Android Studio模拟器运行自己的编译的Android源码镜像
2021-11-17 16:51:57下载:通过aosp-latest下载Android源码。 切换分支: #源码目录下 cd .repo/manifests repo init -b android-9.0.0_r3 #Android 9 repo sync 源码编译 source build/envsetup.sh lunch aosp_x86_64-eng make -j16... -
Android源码在线查看网站
2019-06-24 11:45:38安卓社区 https://www.androidos.net.cn/sourcecode (推荐) AndroidXRef http://androidxref.com/ 安卓特性(包括历史版本): https://developer.android.google.cn/ -
android:自己动手编译Android源码(超详细)
2018-07-09 16:08:22自己动手编译Android源码(超详细) 涅槃1992 2016.06.20 02:12* 字数 43...