【Android】源码开发:源码下载、编译、导入
参考链接
谷歌开发者教程-Android Developers下载源码Doc
谷歌开发者教程-Repo和Git
镜像网站-清华大学AOSP
镜像网站-中国电子科技大学AOSP
镜像网站-上海交通大学AOSP
系统环境
系统:Ubuntu mate 18 64。
硬件:i5、8g、250gssd+1thdd。之前用速龙的u编译不过去,google说是u的指令集不一样,换了intel就少了好多麻烦。google文档编译要求16g内存,我8g+swap4g也能编过去,耗时11h22m,233…
软件:已安装配置openjdk8、git、repo、curl等。
下载源码
1. 下载repo文件
# 创建repo工作目录 mkdir ~/bin PATH=~/bin:$PATH # 通过curl获取repo文件,给权限 curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo sudo chmod a+x ~/bin/repo
通过vim编辑器打开repo文件修改里面的REPO_URL到镜像网站的网址。
REPO_URL = 'https://gerrit.googlesource.com/git-repo' # google源改为清华的镜像源 REPO_URL = 'https://gerrit-google.tuna.tsinghua.edu.cn/git-repo'
2. 初始化repo
# 创建工作目录,available mem起码60g,编译就200g mkdir android_source cd android_source # 配置git账号 git config --global user.name "Your Name" git config --global user.email "you@example.com" # 初始化repo,网址为清华源 repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest # 也可以指定分支 repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-9.0.0_r45
3. 同步代码## 标题
# 同步代码,中断了就再输入一次,看网络,我下了两个白天。 repo sync
同步完自动在android_source下check out出Android源码。
编译源码
1. 前期准备
首先要安装软件。比如jdk、cmake等必须的交叉编译软件。
Android5.x-Android6使用的openjdk7,之前是用6,之后用8。
我编译的下载的是Android P,所以用的openjdk8。
# 更新源 sudo apt-get update # 下载 sudo apt-get install -y openjdk-8-jdk sudo apt-get install -y 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 -y tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386 sudo apt-get install -y dpkg-dev libsdl1.2-dev libesd0-dev sudo apt-get install -y git-core gnupg flex bison gperf build-essential sudo apt-get install -y zip curl zlib1g-dev gcc-multilib g++-multilib sudo apt-get install -y libc6-dev-i386 sudo apt-get install -y lib32ncurses5-dev x11proto-core-dev libx11-dev sudo apt-get install -y libgl1-mesa-dev libxml2-utils xsltproc unzip m4 sudo apt-get install -y lib32z-dev ccache
2. 编译步骤
# 进入源码目录 # 加载环境及编译命令 source build/evnsetup.sh # lunch出所有可编译的版本,选择其中的编号比如:1 lunch 1 # 开始编译,j不j8看你编译的时候还用不用电脑 make -j8
也可以单独编译一个模块,使用mm和mmm命令。
mm是编译当前路径下的模块;
mmm [路径] 是编译路径下的模块。
都是根据路径下的bp、mk文件来编译。
3. 解决编译中的报错
略,我一次过了。
源码导入Android Studio
首先下载安装Android Studio
JDK已经在上面就安装了,不用考虑它了。
SDK可以选择国内网站下载反正可以更新。
下载studio:Google下载Android Studio网址
解压到指定文件夹中,我的路径是/home/xu/Android/。
# 创建应用图标文件 sudo vim /usr/share/applications/android-studio.desktop # 文件内容 [Desktop Entry] Name = Studio comment = android studio Exec = /home/xu/Android/android-studio/bin/studio.sh Icon = /home/xu/Android/android-studio/bin/studio.png Terminal = false Type = Application
这样就能在application里面搜到Studio的图标了,点击启动。
安装流程就是傻瓜流程。
Http Proxy选No Proxy,以前被墙,现在源网站是dl.google.com,直接ping是通的,方便的一笔。
选择Sdk路径,更新一下。
export ANDROID_HOME=/home/xu/Android/android-sdk-linux export PATH=$ANDROID_HOME/tools:$ANDROID_HOME:/platform-tools:$PATH
最后记得tools作为全局PATH,可以用adb等工具。
Android Studio就成完全体了。
导入源码
导入源码google已经给了工具了
# 进入源码目录 # 加载编译命令 source build/envsetup.sh # 编译idegen目录 mmm development/tools/idegen # 执行编译生成的idegen.sh,会在源码根目录生成android.iml和android.ipr development/tools/idegen/idegen.sh # 最后修改android.imi文件,添加想要exinclude的模块路径
通过studio打开ipr文件就完成了。
导入源码后一直在Scanning Files to index…
方法一:
- 修改android.imi文件,将gen目录放到excludeFolder里面。
- 重启android studio。
- 找到project structure->moudles->gen文件夹。
- 右键gen文件夹选择sources。
- 重启android studio
方法二:
在scanning files to index情况下,无法选择Project Structure这个时候,将代码目录调为project,然后右键根目录,选择Open Modules Settings。
进入Generated source,如果勾选了 Generated source Automatically ,去掉勾选项,然后点击apply。
这个时候会提示错误信息。
进入Structure,手动选择需要的Manifest、Resoureces、Assets、Native lib。
对应的目录分别为:
Manifest File >> /android/frameworks/base/core/res/
Resources directory >> /android/frameworks/base/core/res
Assets directory >> /android/frameworks/base/core/res/assets
Native libs directory >> /android/ frameworks/base/libs
完成设置后,点击apply,点击OK,这个提示就会慢慢消失,为什么说是慢慢消失呢?因为还有可能继续加载文件,但是只加载一次。
- 动手实现Android源码(AOSP)的下载、编译、运行、导入、调试
- Ubuntu14.04下载、编译Android 6.0源码,并导入Android Studio
- ubuntu10.04 编译 android 源码并导入Eclipse 开发
- Android源码编译、下载、导入Android Studio过程记录(MacOS 10.12)
- Android 开发笔记 3:Android 系统源码下载与编译
- Macbook Pro下载并编译Android源码并导入Android Studio
- 【Android Native Code开发系列】三 Android源码的编译环境配置、下载及编译
- Mac OSX Android源码编译-环境搭建、源码下载、源码编译、导入Android Studio
- 下载 编译和运行android源码以及开发第一个app
- 【Android Native Code开发系列】三 Android源码的编译环境配置、下载及编译
- Android系统源码编译全过程——下载Android源文件并编译
- 非官网下载的android 源码编译问题 及解决方法