Android系统快速编译方式ninja

随着Android版本的更迭,尤其是Androd10和Android11源码的编译,单编模块的时间也特别慢,每次都需要半个小时甚至更长,因为每次单编都会重新加载所有mk文件,再生成ninja编译,此过程很慢,实际编译过程很快。
因此我们可以使用google提供的一种快速编译方式:ninja,使用ninja编译的话基本上十几秒就能快速编完一个模块,ninja编译只适用于修改项目的代码,如果涉及到文件的增减就必须用mm/make重新编译了。

使用方法

./prebuilts/build-tools/linux-x86/bin/ninja -f out/combined-xxx.ninja相当于make,xxx为对应的lunch项,

示例

编译Settings
./prebuilts/build-tools/linux-x86/bin/ninja -f out/combined-xxx.ninja Settings -j32
编译selinux
./prebuilts/build-tools/linux-x86/bin/ninja -f out/combined-xxx.ninja selinux_policy -j32
编译Framework
./prebuilts/build-tools/linux-x86/bin/ninja -f out/combined-xxx.ninja framework -j32
全编译
./prebuilts/build-tools/linux-x86/bin/ninja -f out/combined-xxx.ninja -j32 2>&1 |tee ninja_build.log

相关拓展

Android.mk、Ninja、Soong、Blueprint、kati、Android.bp的概念之间的联系为:
在这里插入图片描述
Android.mk、Ninja、Soong、Blueprint、kati 和 Android.bp 都是 Android 源代码构建系统(Build System)的不同组成部分。

  1. Android.mk 是构建系统早期版本中使用的 Makefile 格式文件,包含用于编译源代码和生成二进制文件的规则和依赖关系。

  2. Ninja 加粗样式是一款高效的并行编译工具,用于在较短时间内完成源码的编译,取代了 Android.mk 在构建系统中的核心作用。

  3. Soong 取代了旧有的 Android.mk 构建系统,提供了更灵活和可扩展的模块化设计。

  4. Blueprint 是 Soong 中的一个配置语言,对于每个模块的编译过程,它为系统定义了一组规则和约束条件。

  5. kati 是基于 GNU Make 的增强版,可以解析 Android.mk 文件和 GNU Make 规则,并将其转换为 Ninja 的语法格式。

  6. Android.bp 是 Soong 中的 Build Blueprint 文件,①提供了一种更简洁和易读的语法来描述源代码和构建规则,②同时允许进行更细粒度的控制以及高度优化。

总之,这些不同的部分共同组成了 Android 源代码构建系统的各个环节,它们相互配合,使得 Android 操作系统开发人员可以更加有效地创建和构建自己的代码,并生成最终的 Android 应用和操作系统。

  • 6
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
编译 Android Auto 系统需要具备以下条件: 1. 下载 AOSP 源代码 2. 安装编译工具和依赖库 3. 配置编译环境 4. 编译 Android Auto 系统 以下是详细步骤: 1. 下载 AOSP 源代码 首先,你需要从 AOSP 的官方网站或者镜像站点下载源代码。下载的源代码大小为约 80 GB,因此你需要确保你的硬盘空间足够。下载完成后,你需要执行以下命令将源代码解压缩到指定目录中: ``` tar xf aosp_xyz.tar.xz -C /path/to/your/source/code ``` 2. 安装编译工具和依赖库 为了编译 Android Auto 系统,你需要安装以下编译工具和依赖库: - JDK 8 或以上版本 - Python 2.7 - GNU Make - Git - ccache - Ninja - curl - zlib1g-dev:i386 - g++-multilib - libssl-dev:i386 - libncurses5:i386 - libstdc++6:i386 - lib32z1 - libbz2-1.0:i386 - lib32stdc++6 - lib32gcc1 - lib32ncurses5 - lib32z1-dev 你可以通过以下命令安装这些编译工具和依赖库: ``` sudo apt-get install openjdk-8-jdk python git ccache ninja-build curl zlib1g-dev:i386 g++-multilib libssl-dev:i386 libncurses5:i386 libstdc++6:i386 lib32z1 libbz2-1.0:i386 lib32stdc++6 lib32gcc1 lib32ncurses5 lib32z1-dev ``` 3. 配置编译环境 在编译 Android Auto 系统之前,你需要配置编译环境。首先,你需要设置环境变量 `JAVA_HOME`,将其指向你的 JDK 安装目录。其次,你需要添加以下环境变量: ``` export PATH=/path/to/your/source/code/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9/bin:$PATH export PATH=/path/to/your/source/code/prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9/bin:$PATH export PATH=/path/to/your/source/code/prebuilts/clang/host/linux-x86/clang-r383902/bin:$PATH export PATH=/path/to/your/source/code/prebuilts/misc/linux-x86/ccache:$PATH export CCACHE_EXEC=$(which ccache) export CCACHE_COMPRESS=1 export USE_CCACHE=1 ``` 其中,`/path/to/your/source/code` 是你下载的 AOSP 源代码所在的目录。 4. 编译 Android Auto 系统 配置完成后,你可以执行以下命令编译 Android Auto 系统: ``` source build/envsetup.sh && lunch aosp_auto-userdebug && make -j4 ``` 其中,`aosp_auto-userdebug` 是你要编译Android Auto 系统的版本。你可以根据需要更改这个版本号。`-j4` 表示使用 4 个线程进行编译,你可以根据你的 CPU 核心数来调整这个值。 编译完成后,你可以在 `out/target/product/auto` 目录下找到编译生成的 Android Auto 系统镜像。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值