MacOs编译AndroidQ

一、准备工作

1.1 系统介绍

Mac系统版本: 12.3.1

内存: 16GB

**CPU: ** 4核i5 2GHz

磁盘180GB

笔者曾在 Ubuntu中编译该版本,最后占用磁盘空间为154GB。具体请查看 Ubuntu16.04编译Android10源码并刷机Pixel

1.2 AOSP版本选择
  1. 编译选择user、user-debug、eng的区别
1.3 磁盘准备

MacOS会在一个保留大小写,但是不区分大小的文件系统中运行。git不支持。所以需要开辟一块磁盘空间,并重新设计其格式。

在Mac Pro中,格式一块大小为 175GB的磁盘。

hdiutil create -type SPARSE -fs 'Case-sensitive Journaled HFS+' -size 175g ~/Downloans/android10.dmg

执行命令后:

image-20220525151140669

如果后期需要调整磁盘空间,可以使用:

hdiutil resize -size <new-size-you-want>g ~/android.dmg.sparseimage

挂载磁盘: 可以将挂架命令封装为一个函数,放在shell中,便于后面使用

# mount the android file image
function mountAndroid { hdiutil attach ~/android.dmg -mountpoint /Volumes/android; }

挂载出错:

image-20220525152021220

解决办法:

macOS打开dmg安装包提示 “资源忙”的解决方案

将disk相关的任务杀掉。

二、源码下载

2.1 Python2.7安装(可选)

[python2.7 安装包](链接: https://pan.baidu.com/s/1_rxHpvv10FTOm77pl83hxQ 提取码: ndl6
–来自百度网盘超级会员v6的分享)

2.2 repo工具下载安装
mkdir ~/bin
PATH=~/bin:$PATH
curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o ~/bin/repo
chmod +x repo

由于repo指向的google的源码镜像,考虑到网速的问题,要将其换为国内镜像:

方式一: 在 ~/.bash_profile中新增:

export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo'

执行 source ~/.bash_profile

方式二:

修改 repo文件: 将

REPO_URL = 'https://gerrit.googlesource.com/git-repo'

改为:

REPO_URL = 'https://mirrors.tuna.tsinghua.edu.cn/git/git-repo'
2.3 源码下载
  1. 打开termal,将目录切换到 挂载之后的自盘目录(/Volumes/android10/)

  2. 创建源码存放的文件夹 WORKING_DIRECTORY,并进入该目录

    mkdir WORKING_DIRECTORY
    cd WORKING_DIRECTORY
    
  3. 初始化aosp仓库(笔者要下载的是android-10.0.0_r1)

    repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android-10.0.0_r1  
    
  4. 开始下载(开启4个线程去同步源码)

    repo sync -j4
    

    同步阶段,有一个同步进度:

    image-20220525173211144

    同步代码,花去了2.5h

    image-20220525185746740

    源码同步完成后,占用磁盘空间如下(大概101GB):

    image-20220525195230980

三、源码编译

3.1 编译环境准备

1. 驱动下载:

image-20220525173608954

为什么选择这个驱动,可以参考笔者另一篇文章

2. 安装xcode命令行工具

xcode-select --install

3.安装MacPorts工具

image-20220525194722412

并在.bash_profile中添加如下内容:

export PATH=/opt/local/bin:$PATH

source ~/.bash_profile

4.安装依赖库

POSIXLY_CORRECT=1 sudo port install gmake libsdl git gnupg

如果是Mac OSX v10.4 还需要安装bison

POSIXLY_CORRECT=1 sudo port install bison
3.2 编译
//1. 建立android-q开发分支:
repo start android_q --all
source build/envsetup.sh
lunch

// 接下来 等待30s,等待终端弹出 可编译的版本号,然后进行选择
// saifish****userdebug 对应的16
16

make -j8 // 8代表你想要开启的线程数,笔者电脑是4核8线程

经过漫长的等待(大约3.5小时),终于编译成功了:

image-20220526065034126

编译后,整个磁盘占用情况如下(165GB):

image-20220526065202930

3.3 编译遇到的坑
3.3.1 Xcode SDK 版本选择

由于笔者系统版本比较新(12.3) , 但是aosp需要的SDK版本,最高到10.14,之前的解决版本,就是在支持的版本上新增12.3 。 但是经过尝试,发现不断出错。因此 选择下载一个10.14的SDK, 并将系统支持的最低SDK版本改为10.14

  1. 下载一个10.14SDK

  2. 修改系统支持的最小SDK版本

    通过xcode修改 /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/info.plist文件

    由于该文件目录和文件有权限限制 ,需要先复制到当前用户有权限修改的目录下,然后修改,待完成修改后,复制回去:

    如:

    cp /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/info.plist ~/Downloads
    

    image-20220526071438748

    3.3.2 FAILED: out/target/product/sailfish/obj/ETC/treble_sepolicy_tests_27.0_intermediates/treble_sepolicy_tests_27.0
    vim system/sepolicy/tests/Android.bp
    

    将stl: “libc++_static” 注释掉

    static_libs: [
           "libbase",
           "libsepol",
       ],
       // stl: "libc++_static",
       sanitize: {
           never: true,
       },
    

四、刷机

刷写设备的官方文档

ANDROID_PRODUCT_OUT=/Volumes/android10/WORKING_DIRECTORY/out/target/product/sailfish

#解锁
fastboot flashing unlock    #对于新款设备(2015 年及之后发布的设备)
fastboot oem unlock         #对于老款设备(2014 年及之前发布的设备)
fastboot flashing unlock_critical     #这条命令只有我这个奇葩机型需要,不过别的机型可能需要别的,哈哈哈
#注:很多设备可能只需第一条命令fastboot flashing unlock即可


adb reboot bootloader     #进入fastboot模式(或长按Volume Down + Power键)
fastboot flashall -w      #刷机

五、参考链接

  1. mac下编译android源码避坑指南(新)
  2. MacBook下载和编译Android AOSP源码
  3. Mac OS10.12 编译Android源码8.1
  4. macOS Big Sur 编译Android11.0源码过程总结
  5. Android官网 编译AOSP
  6. macOS Big Sur 编译Android11.0源码过程总结
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值