我正在尝试使用AOSP构建外部工具。我的操作系统是Linux,发行版ArchLinux(i3wm),但是要编译AOSP,我在Docker(https://android.googlesource.com/platform/build/+/master/tools/docker)中使用Ubuntu
第一步:
# 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
无效。
答案 0 :(得分:2)
使用 make clean
命令清除 /out 目录中的所有二进制文件,然后尝试进行完整构建
答案 1 :(得分:1)
在尝试使用mm...
快捷方式之前,您可能需要进行完整的AOSP构建-似乎尚未生成某些构建脚本文件。
答案 2 :(得分:0)
实际上,不需要进行完整构建。只需打开要构建的模块的Android.mk或Android.bp,然后查找变量MODULE_NAME。
然后从项目的根目录开始
mm $MODULE_NAME
它应该首先构建您需要的所有依赖项。
答案 3 :(得分:0)
我建议使用mmm命令进行构建。还要确保您指向的目录包含一个Android.bp或Android.mk
mmm /external/selinux
我还建议通过删除out目录或直接运行来清理输出:
make clean
如果仍然有问题,请删除repo init上的--depth = 1参数,然后再次进行同步。该参数限制了从远程分支获取提交。