MacOS编译Android 源码aapt2工具

缘起

最近在查看aapt2的源码,这中间自然少不了要下载编译源码了,其中ubuntu系统的编译相对简单,使用ubuntu系统下载编译能省不少步骤。

最近在mac系统上编译,遇到了一些问题,在这里记录下。

折腾过程

下载源码

mac系统本身是大小写不敏感的,而Android系统的源码及编译是需要大小写敏感(linux系统原生就是这样),因此需要使用如下步骤创建并挂载(注意完全编译需要不少空间,可以分配个几百GB)。

hdiutil create -volname "aapt" -type SPARSE -fs 'Case-sensitive Journaled HFS+' -size 500g aapt.dmg

hdiutil attach aapt.dmg.sparseimage -mountpoint /Volumes/aapt

拉取源码

这个步骤不赘述,建议参考国内镜像,比如中科大的镜像http://mirrors.ustc.edu.cn/help/aosp.html

编译

使用如下步骤即可

source build/envsetup.sh

# j1是因为使用mac电脑配置较低单线程,高配随意
mmm -j1 frameworks/base/tools/aapt2

中间出现了一些编译问题,解决过程如下:

不支持的sdk版本[10.0,10.1,10.2,10.3]

出现这个原因是没有按照xcode或者xcode版本不对,比如这里要求10.0-10.3的sdk,可以安装xcode-9.4版本,下载地址在https://developer.apple.com/download/all/?q=xcode

-lrt 不支持错误

出现此问题,应该是和macOS的版本有关系,我们在这里直接通过修改出问题的Android.bp文件,删除相关选项解决。

error: external/v8/Android.bp:181:16: module "v8_bytecode_builtins_list_generator" variant "darwin_x86_64": host_ldlibs: Host library `-lrt` not available

比如这里出现问题的就是external/v8/Android.bp,删除文件出问题的lrt的几行即可(注意是删除,不是把-lrt换成空的引号)

参考文档

https://github.com/lizhangqu/aapt-cmake-buildscript

https://sunytan.github.io/2021/11/08/Mac编译Android 源码记录/#valine-comments


发表评论

必填

选填

选填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。