5

我正在尝试使用 AOSP 构建一个外部工具。我的操作系统是 Linux,发行版 ArchLinux (i3wm),但要编译 AOSP,我在 Docker 中使用 Ubuntu ( https://android.googlesource.com/platform/build/+/master/tools/docker )

第一步:

# init repo
repo init -u https://android.googlesource.com/platform/manifest -b android-8.0.0_r36 --depth=1
repo sync
. build/envsetup.sh # set up environment
lunch aosp_arm-eng # select target to build

第二步:选择工具并构建

cd external/selinux
mma -j48

输出:

ninja: error: unknown target 'MODULES-IN-'
15:41:55 ninja failed with: exit status 1
make: *** [run_soong_ui] Error 1
make: Leaving directory `/home/user/aosp'

#### make failed to build some targets (6 seconds) ###

另一个工具

cd external/wpa_supplicant_8
mma -j48

输出:

ninja: error: unknown target 'MODULES-IN-external-wpa_supplicant_8'
15:41:55 ninja failed with: exit status 1
make: *** [run_soong_ui] Error 1
make: Leaving directory `/home/user/aosp'

#### make failed to build some targets (2 seconds) ###

任何 aosp 通用目标都会发生这种情况:

Lunch menu... pick a combo:
     1. aosp_arm-eng                    # fails
     2. aosp_arm64-eng                  # fails
     3. aosp_mips-eng                   # fails
     4. aosp_mips64-eng                 # fails
     5. aosp_x86-eng                    # fails
     6. aosp_x86_64-eng                 # fails
     7. full_fugu-userdebug             # works
     8. aosp_fugu-userdebug             # works
     9. car_emu_arm64-userdebug         # fails
     10. car_emu_arm-userdebug          # fails
     11. car_emu_x86_64-userdebug       # fails
     12. car_emu_x86-userdebug          # fails
     13. mini_emulator_arm64-userdebug  # fails
     14. m_e_arm-userdebug              # fails
     15. m_e_mips64-eng                 # fails
     16. m_e_mips-userdebug             # fails
     17. mini_emulator_x86_64-userdebug # fails
     18. mini_emulator_x86-userdebug    # fails
     19. aosp_dragon-userdebug          # works
     20. aosp_dragon-eng                # works
     21. aosp_marlin-userdebug          # works
     22. aosp_marlin_svelte-userdebug   # works
     23. aosp_sailfish-userdebug        # works
     24. aosp_angler-userdebug          # works
     25. aosp_bullhead-userdebug        # works
     26. aosp_bullhead_svelte-userdebug # works
     27. hikey-userdebug                # works

我想在所有arch中编译一些二进制工具:arm、arm64、x86和x86_64。

为什么 aosp_arm-eng 不起作用?或者如何从非通用 aosp 目标更改 CPU 架构?

使用tapas不起作用。

4

5 回答 5

3

在尝试使用mm...快捷方式之前,您可能需要进行完整的 AOSP 构建 - 看起来某些构建脚本文件尚未生成。

于 2019-07-17T08:32:52.183 回答
2

使用命令清除 /out 目录中的所有二进制文件,make clean然后尝试进行完整构建

于 2021-02-25T16:32:36.843 回答
0

实际上没有必要做一个完整的构建。只需打开您要构建的模块的 Android.mk 或 Android.bp,然后查找变量 MODULE_NAME。

然后从项目的根目录make

mm $MODULE_NAME

它应该首先构建您需要的所有依赖项。

于 2020-01-13T09:57:48.440 回答
0

使用以下命令从根目录编译模块

  1. 转到根目录
  2. 打扫干净
  3. 源构建/envsetup.sh
  4. 午餐“选择选项”
  5. 制作“模块名称”-j8
于 2021-10-07T18:31:57.343 回答
0

我建议使用 mmm 命令进行构建。还要确保您指向的目录包含 Android.bp 或 Android.mk

mmm /external/selinux 

另外我建议通过删除 out 目录或简单地运行来清理输出:

make clean

如果您仍然有这个问题,请删除 repo init 上的 --depth=1 参数并再次同步。该参数限制了从远程分支获取的提交。

于 2020-10-09T12:09:14.660 回答