前段时间又重新导入了系统源码,于是有了这篇笔记。作者在ubuntu上编译好了源码后直接复制到windows上,然后Android Studio打开,大概步骤如下。
一、下载repo
repo是一款工具,可以使我们在Android环境中更轻松使用GIT。具体不作介绍
-
安装GIT
sudo apt-get install git
-
创建bin,并加入path:
mkdir ~/bin
PATH=~/bin:$PATH
-
下载repo ,这里选择清华的镜像
curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo > ~/bin/repo
如果执行时出现有关curl的错误,请检查curl是否安装
扫描二维码关注公众号,回复: 3748750 查看本文章sudo apt-get install curl
-
权限设置
chmod a+x ~/bin/repo
-
验证repo是否安装成功
直接输入repo ,出现 use ''repo init'' to install it here 等说明成功
二、下载源码
-
建立AOSP工作目录
mkdir AOSP
cd AOSP
-
初始化仓库
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-8.0.0_r1
如果出现error:GitError:manifests var: .... 错误,请配置好GIT,例如以下:
git config --global user.email "[email protected]"
git config --global user.name "your name"
如果出现
fatal:cannot get https://gerrit.googlesource.com/git-repo/clone.bundle
fatal:error [Errno 101] Network is unreachable
那么需要复制以下语句到 ~/.bashrc (隐藏文件,直接vim打开)文件里,然后重启终端模拟器,这是因为repo在运行过程中尝试访问官方Git源更新自己。
export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/'
-
同步源码
repo sync
-
等到下载完毕,大概28G
三、确认linux系统或者linux虚拟机有没有安装JAVA和生成必要文件
-
输入java ,报错,请安装java 版本1.8.x
如果多个版本使用 sudo update-alternatives --config java 选择java8 ,
因为之前下载的源码是8.0.0.1版,编译是需要用到1.8.x,
这里有不同源码版本与java版本映射关系,自行搜索。
注意编译使用的是Open JDK 不是Oacle JDK
-
idegen.jar
进入到源码根目录,运行以下命令source build/envsetup.sh
mmm development/tools/idegen/ 执行第二行代码可能会遇到错,一般是由于make命令导致的吧,检查一下
第二行代码主要是在out/host/linux-x86/framework目录下生成idegen.jar文件
-
android.iml 和 android.ipr
在源码根目录下执行以下命令
development/tools/idegen/idegen.sh
然后就会在根目录生成android.iml 和 android.ipr文件了
四、导入源码
这两个文件是Android Studio的工程配置文件,放到源码根目录,这时候就可以直接导入源码了,但是我们并不是源码内所有文件都需要导入,所以除了frameworks模块和packages模块外,其他模块都给过滤掉,打开android.iml文件,搜索excludeFolder,在后面添加以下代码,然后等待或者invalidate and restart
<excludeFolder url="file://$MODULE_DIR$/.repo" /> <excludeFolder url="file://$MODULE_DIR$/art" /> <excludeFolder url="file://$MODULE_DIR$/bionic" /> <excludeFolder url="file://$MODULE_DIR$/bootable" /> <excludeFolder url="file://$MODULE_DIR$/build" /> <excludeFolder url="file://$MODULE_DIR$/cts" /> <excludeFolder url="file://$MODULE_DIR$/dalvik" />
<excludeFolder url="file://$MODULE_DIR$/developers" />
<excludeFolder url="file://$MODULE_DIR$/development" />
<excludeFolder url="file://$MODULE_DIR$/device" />
<excludeFolder url="file://$MODULE_DIR$/docs" />
<excludeFolder url="file://$MODULE_DIR$/external" />
<excludeFolder url="file://$MODULE_DIR$/external/bluetooth" />
<excludeFolder url="file://$MODULE_DIR$/external/chromium" />
<excludeFolder url="file://$MODULE_DIR$/external/emma" />
<excludeFolder url="file://$MODULE_DIR$/external/icu4c" />
<excludeFolder url="file://$MODULE_DIR$/external/jdiff" />
<excludeFolder url="file://$MODULE_DIR$/external/webkit" />
<excludeFolder url="file://$MODULE_DIR$/frameworks/base/docs" />
<excludeFolder url="file://$MODULE_DIR$/hardware" />
<excludeFolder url="file://$MODULE_DIR$/kernel" />
<excludeFolder url="file://$MODULE_DIR$/libcore" />
<excludeFolder url="file://$MODULE_DIR$/libnativehelper" />
<excludeFolder url="file://$MODULE_DIR$/out" />
<excludeFolder url="file://$MODULE_DIR$/out/eclipse" />
<excludeFolder url="file://$MODULE_DIR$/out/host" />
<excludeFolder url="file://$MODULE_DIR$/out/target/common/docs" />
<excludeFolder url="file://$MODULE_DIR$/out/target/common/obj/JAVA_LIBRARIES/android_stubs_current_intermediates" />
<excludeFolder url="file://$MODULE_DIR$/out/target/product" />
<excludeFolder url="file://$MODULE_DIR$/pdk" />
<excludeFolder url="file://$MODULE_DIR$/platform_testing" />
<excludeFolder url="file://$MODULE_DIR$/prebuilt" />
<excludeFolder url="file://$MODULE_DIR$/prebuilts" />
<excludeFolder url="file://$MODULE_DIR$/sdk" />
<excludeFolder url="file://$MODULE_DIR$/system" />
<excludeFolder url="file://$MODULE_DIR$/test" />
<excludeFolder url="file://$MODULE_DIR$/toolchain" />
<excludeFolder url="file://$MODULE_DIR$/tools" />