Mac搭建Android10源码环境

1 篇文章 0 订阅
1 篇文章 0 订阅

一、硬件资源

  1. MacBook Pro:Apple M1 Pro芯片+8核+32+512GB。
  2. 固态移动硬盘一个,最好是大于300GB(如果自身电脑配置足够可以不用考虑),我这边提供的是WD Elements SE 2TB。
  3. git账号,没有的可以前往https://github.com注册。
  4. 电脑安装好Xcode(可以在App Store直接下载)和git(git需要配置好git账户)。

二、创建磁盘镜像

将移动固态硬盘连接电脑,打开启动台->其他->磁盘工具。

打开磁盘工具,文件->新建映像->空白映像

 按照图片,选择或填写存储为、位置、名称、大小和格式信息,要注意大小不能小于200GB,格式要选择Mac OS扩展(区分大小写,日志式)

 点击存储后,你可以在固态硬盘中看到创建成功的映像。

三、创建SSH Key并绑定Github账号

此步骤若已操作请忽略。

查看本地已有SSH

ls -al ~/.ssh

新建SSH

ssh-keygen -t ed25519 -C "your github account"

先确认SSH Key文件位置,一般按照默认位置即可;

输入密码,再次确认密码。

输入以下命令(这个命令会启动ssh-agent进程并设置必要的环境变量来使用它。ssh-agent是一个在后台运行的程序,用于保存您的私钥。当您使用SSH连接到远程服务器时,ssh-agent将为服务器提供您的私钥进行身份验证。"eval"命令用于将"ssh-agent -s"命令的输出作为shell命令执行): 

eval "$(ssh-agent -s)"

编辑config文件,没有则创建:

touch ~/.ssh/config
vim ~/.ssh/config

在config文件中写入以下内容:

Host *
  AddKeysToAgent yes
  UseKeychain yes
  IdentityFile ~/.ssh/id_ed25519

将私钥添加到SSH身份验证代理中:

ssh-add -K ~/.ssh/id_ed25519

将创建的公钥复制到剪贴板:

ssh-add -K ~/.ssh/id_ed25519

登陆github,点击头像->Settings->SSH and GPG keys->New SSH key

四、下载Android10源码

创建目录并设置环境变量:

mkdir ~/bin
PATH=~/bin:$PATH

下载链接并修改权限:

curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo > ~/bin/repo
chmod 777 ~/bin/repo

修改REPO_URL链接,替换镜像地址为:https://mirrors.tuna.tsinghua.edu.cn/git/git-repo

vim ~/bin/repo 

配置git缓冲区大小:

git config --global http.postBuffer 1048576000
git config --global https.postBuffer 1048576000

 进入创建好的镜像目录:

cd /Volumes/AndroidSystem/

创建用于保存Android10的源码目录并进入:

mkdir Android10 
cd Android10

设置下载分支:

repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest

拉取指定分支代码可以查看分支列表:

cd .repo/manifests 
git branch -a | cut -d / -f 3

例如选择android-10.0.0_r30:

repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android-10.0.0_r30

同步执行:

repo sync

下载完毕后查看下载的目录

五、编译Android10源码

编译Android10源码前,需要下载Xcode,可以直接在App Store搜索下载。

需要在github上下载android sdk,后续编译会用到,下载地址如下:Releases · phracker/MacOSX-SDKs · GitHub

下载完成后,在源码目录执行以下命令:

source build/envsetup.sh 
make SELINUX_IGNORE_NEVERALLOWS=true -j8 CFLAGS="-isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk"

备注:make命令解释,SELINUX_IGNORE_NEVERALLOWS=true可以避免执行treble_sepolicy_tests命令时分段错误,-j后面跟的数字是根据电脑核心数来的。双引号的参数是指定Android SDK的版本,Android SDK下载地址为:https://github.com/phracker/MacOSX-SDKs/releases,下载后放到指定目录即可。

不指定SELINUX_IGNORE_NEVERALLOWS=true会报以下错误。

查看自己电脑的核心数:

 执行编译过程中,如果出现不能找到一个支持的mac sdk错误,可以编辑以下文件,添加自己安装的sdk版本即可:

vim build/soong/cc/config/x86_darwin_host.go

 再次编译出现以下错误:

可以直接打开报错的文件,将”PAGE_SIZE”先替换为10,让编译通过。

再次编译,出现以下错误:

错误原因原因是out/target/product/generic/obj/PACKAGING/vndk_intermediates/libs.txt和build/make/target/product/gsi/29.txt文件内容不一致导致,根据提示的差异内容和文本对比工具进行差异对比,将libs.txt的内容完全复制到29.txt即可。

若出现以下错误,是因为编译器认为sprintf函数不安全,按照对应语法替换为snprintf函数即可:

找不到python的文件目录

 可以使用which python查看安装路径,到对应的文件修改即可。

在解决完上述问题后,依次执行以下命令:

source build/envsetup.sh 
lunch

 选择对应的系统版本:

执行完成后,继续执行编译命令:

source build/envsetup.sh 
make SELINUX_IGNORE_NEVERALLOWS=true -j8 CFLAGS="-isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk"

等待编译完成后,展示如下:

 居然构建了4.5小时。

六、导入Android10源码到Android Studio

Android Studio官网根据自己电脑型号选择对应版本下载即可。

依次执行以下命令:

bash
source build/envsetup.sh
mmm development/tools/idegen/

development/tools/idegen/idegen.sh

Traversed tree也花费了22分钟。 

完成后,在项目目录下会生成android.ipr文件。

给文件授权:

sudo chmod 777 android.i*

 打开Android Studio,选择打开已存在的andorid项目,选择android.ipr,等待导入即可,第一次导入时间可能较长:

七、使用Android10源码编译C++项目

将示例代码Array放到android10源码的external目录下,并执行以下命令,生成compile_commands.json文件:

#进入zsh
bash
source build/env_setup.sh
#指定架构
lunch aosp_arm64-eng
#编译代码
mm external/Array/
#生成complie_commands.json文件
du -hs -L compile_commands.json

八、使用编译数据库方式扫描C++项目

在Array项目根目录下配置 sonar-project.properties配置文件:

sonar.projectKey=项目key,在SonarQube新建页面时获取

sonar.projectName=项目名称

sonar.projectVersion=项目版本

sonar.sources=源码地址,例如:src

sonar.cfamily.compile-commands=compile_commands.json

sonar.branch.name=代码分支,例如:master

sonar.sourceEncoding=源码编码格式,UTF-8

sonar.host.url=SonarQube地址,http://127.0.0.1:9000

sonar.login=SonarQube登陆账号,也可以使用sonar.token替换,token在SonarQube创建项目时获取

sonar.password=SonarQube登陆密码,也可以使用sonar.token替换,token在SonarQube创建项目时获取

sonar.language=指定扫描的语言,可以不填,例如:Java

使用sonar-scanner命令扫描项目。

参考文档: 

MAC下载Android源码下载 Android10详解_android10镜像文件下载_JFrosty的博客-CSDN博客

MAC编译Android源码10_JFrosty的博客-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值