Android Studio 编译系统源码

xiaoxiao2021-02-28  95

环境配置 & 下载

参考文章

官方文档 湫水blog 清华镜像 调试 以下所有操作在mac上进行

推荐下载 7.0及以上系统!!!

1.创建磁盘映像(80G)

$ hdiutil create -type SPARSE -fs 'Case-sensitive Journaled HFS+' -size 80g ~/android.dmg

2.安装MacPorts (类似brew) 安装完成后,运行:

// 一路根据提示,选择y,回车 $ POSIXLY_CORRECT=1 sudo port install gmake libsdl git gnupg

如果这里报错了,说找不到port命令,就需要在~/.bash_profile中添加一行: export PATH=/opt/local/bin:$PATH。

(操作步骤–>打开终端–> open .bash_profile –>添加 –> source .bash_profile) Xcode自带,不需要安装

3.设置文件描述符限制

在Mac OS中,默认限制的同时打开的文件数量很少,不能满足编译过程中的高并发需要,因此,在~/.bash_profile中添加下面的命令(步骤同上):

# set the number of open files to be 1024 ulimit -S -n 1024

4.下载Repo

4.1 创建bin目录并指向Path,确保存在bin目录 $ mkdir ~/bin $ PATH=~/bin:$PATH

4.2 然后在命令行中输入下面的命令,下载Repo,并且修改属性(翻墙): $ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo $ chmod a+x ~/bin/repo

4.3 打开并修改Repo文件中 REPO_URL地址为国内镜像(~/bin/repo) REPO_URL = 'https://gerrit-google.tuna.tsinghua.edu.cn/git-repo'

4.4 修改地址, 创建目录 mkdir /Volumes/untitled/xxx cd /Volumes/untitled/xxx

5.下载 选择版本进行同步 repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-android-6.0.1_r79 repo sync

编译

使用下面的命令开始编译源码: # 16为线程数量 make -j16

1.编译过程中可能会失败,我遇到个找不到系统版本的问题一: build/core/combo/mac_version.mk:38: ***************************************************** build/core/combo/mac_version.mk:39: * Can not find SDK 10.6 at /Developer/SDKs/MacOSX10.6.sdk build/core/combo/mac_version.mk:40: ***************************************************** build/core/combo/mac_version.mk:41: *** Stop.. Stop. * 1.1 首先查看系统版本,我的是10.12.2 * 1.2然后找到源码目录,打开build/core/combo/mac_version.mk文件,将mac_sdk_versions_supported改为系统中所装版本 #mac_sdk_versions_supported := 10.6 10.7 10.8 10.9 mac_sdk_versions_supported := 10.12 ``` * 2.问题二,MacOSXSDK 版本不对,10.12不支持

system/core/libcutils/threads.c:38:10: error: ‘syscall’ is deprecated: first deprecated in OS X 10.12 - syscall(2) is unsupported; please switch to a supported interface. For SYS_kdebug_trace use kdebug_signpost(). [-Werror,-Wdeprecated-declarations] “`

2.1下载:https://github.com/phracker/MacOSX-SDKs2.2解压zip包以后将 MacOSX10.11.sdk 拷贝到我的目录 /Users/sun/Downloads/macos/MacOSX10.10.sdk

2.3修改引用

``` sudo ln -s /Users/sun/Downloads/macos/MacOSX10.10.sdk /Applications/XCode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk ```

2.4 然后确保AOSP源码下build/core/combo/mac_version.mk文件中mac_sdk_versions_supported := 10.9 10.10 10.11,不多说,都是泪啊

参考地址

导入Android Studio

1.编译idegen模块

$ mmm development/tools/idegen/ # 如果报错 # 就在源码目录下执行如下指令(点与build之间是有空格的): $ . build/envsetup.sh

2.在根目录生成对应的android.ipr、android.iml IDEA工程配置文件

development/tools/idegen/idegen.sh

3.生成的三个文件:

android.ipr:通常是保存工程相关的设置,比如编译器配置,入口,相关的libraries等 android.iml:则是主要是描述了modules,比如modules的路径,依赖关系等. android.iws:则主要是包含了一些个人工作区的设置.

4 优化配置,减少编译时长 修改android.iml文件,只保留了framworks和packages模块,添加以下代码

<excludeFolder url="file://$MODULE_DIR$/.repo" /> <excludeFolder url="file://$MODULE_DIR$/abi" /> <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$/hardware" /> <excludeFolder url="file://$MODULE_DIR$/libcore" /> <excludeFolder url="file://$MODULE_DIR$/libnativehelper" /> <excludeFolder url="file://$MODULE_DIR$/ndk" /> <excludeFolder url="file://$MODULE_DIR$/out" /> <excludeFolder url="file://$MODULE_DIR$/pdk" /> <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$/tools" />

5.使用Android studio打开任意一个项目,然后选择File->Open,打开根目录下的android.ipr文件夹,然后等待漫长的index完成后,就可以方便查看源码了。 如果访问不了之前创建的磁盘,直接双击android.ipr文件用 Android Studio 打开即可。

6.调试优化参见最上链接。

7.如果你的sh命令执行不了,去下载一个iTerm2终端吧,好使。

最后

嫑放弃,嫑放弃,嫑放弃!哈哈,整了3day,供参考!
转载请注明原文地址: https://www.6miu.com/read-38989.html

最新回复(0)