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

【Android】源码开发:源码下载、编译、导入

2019-08-06 10:18 197 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/MouMouMouXianSen/article/details/97777903

参考链接

谷歌开发者教程-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…

方法一:

  1. 修改android.imi文件,将gen目录放到excludeFolder里面。
  2. 重启android studio。
  3. 找到project structure->moudles->gen文件夹。
  4. 右键gen文件夹选择sources。
  5. 重启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,这个提示就会慢慢消失,为什么说是慢慢消失呢?因为还有可能继续加载文件,但是只加载一次。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: