Android 源码编译出错

Ubuntu 20.04 编译 Android 源码

问题一 —— 2022-02-22

错误 log:
[100% 1/1] out/soong/.bootstrap/bin/soong_build out/soong/build.ninja
FAILED: out/soong/build.ninja
out/soong/.bootstrap/bin/soong_build -t -l out/.module_paths/Android.bp.list -b out/soong -n out -d out/soong/build.ninja.d -globFile out/soong/.bootstrap/build-globs.ninja -o out/soong/build.ninja Android.bp
Clang SA is not enabled

可能的解决方案(仅适用于部分情况):

可能是分区的原因:
1. 查看一下当前系统中是否有分区以及分区的使用情况
	-> free -h
出现以下:Swap 就是分区大小情况【我的是扩展之后的 swap 分区,内存: 32G】
               total        used        free      shared  buff/cache   available
Mem:           15Gi       4.2Gi       7.3Gi       219Mi       3.9Gi        10Gi
Swap:          31Gi       9.0Gi        23Gi

2. 如果在编译源码的时候 swap 分区的 free 为 0 的时候,就要考虑是不是分区太小导致的编译失败
3. 扩展 swap 分区大小
	3.1 首先删除系统默认的分区
		-> sudo swapoff /swapfile
		-> sudo rm /swapfile
	3.2 新建 swap 分区,假设我们想创建一个内存为 32G 的 swap 分区
		-> sudo fallocate -l 32G /swapfile
	3.3 分区固化
		-> sudo chmod 600 /swapfile
		-> sudo mkswap /swapfile
		-> sudo swapon /swapfile
		-> sudo swapon --show
		查看一下 swap 分区是否创建成功
		-> free -h
		如果出现第一步中的内存数据,即创建成功
		接着使自己创建的分区固化下来
		-> sudo cp /etc/fstab /etc/fstab.bak
		-> echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

	finished!

此处是分割线 -> 此处是分割线 -> 此处是分割线 -> 此处是分割线 -> 此处是分割线 -> 此处是分割线 -> 此处是分割线 -> 此处是分割线

问题二 —— 2022-03-09

出错信息:使用 make 编译某个 APP 的时候 [比如编译 Music APP],使用 "make Music" 编译报错
log message:
[100% 2/2] out/soong/.bootstrap/bin/soong_build out/soong/build.ninja
[ 50% 1/2] glob art
ninja: error: unknown target 'Music', did you mean 'linker'?
11:03:48 ninja failed with: exit status 1

#### failed to build some targets (01:04 (mm:ss)) ####

可能的解决方案(仅适用于部分情况):

可能在 Android 源码的目录里 Music APP 的目录是 Music,但是 Android.mk 文件中不是 Music
解决方案:
1. 打开 APP 的根目录,使用 "gedit Android.mk" 打开 "Android.mk" 文件
2. 按 Ctrl + F 键搜索 "LOCAL_PACKAGE_NAME"
3. 查看 "LOCAL_PACKAGE_NAME" 定义的 APP 名字是什么,比如我的是:"LOCAL_PACKAGE_NAME := Music_APP"
4. 查看了一下,是 Android.mk 文件中定义的 APP 名字和我编译的 APP 名称不一样导致的编译失败
5. 返回到编译的目录,使用 "make Music_APP" 等待,如果代码写的没有问题,等待则会编译成功。

以上仅适用于部分 Android 源码编译出现错误的情况。

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Android编译的命令包括以下几个步骤: 1. 在Android码根目录下执行build/envsetup.sh脚本,该脚本用于设置Android编译环境。\[1\] 2. 使用lunch命令选择要编译的目标。\[1\] 3. 使用make命令编译整个Android系统。\[1\] 此外,还有一些其他的编译命令可以使用: - 使用m命令对整个Android代码进行编译,它是对make命令的简单封装。\[2\] - 使用mm命令对Android码中的指定模块进行编译,它也是通过make命令来实现的。\[2\] - 使用mmm命令对Android码中的指定模块进行编译,与mm命令类似,但需要指定Android.mk文件的相对路径。\[2\]\[3\] 综上所述,编译Android码的常用命令包括build/envsetup.sh、lunch和make,而m、mm和mmm命令是对make命令的封装,用于更方便地编译Android码或指定模块。 #### 引用[.reference_title] - *1* [android平台的三个编译命令----make,mm,mmm](https://blog.csdn.net/xiangyuxiangyu123/article/details/54098153)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [Android代码编译命令m/mm/mmm/make分析【转载】](https://blog.csdn.net/weixin_30411997/article/details/95102327)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Bu Sir

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值