AOSP 的所有 git 项目都由 repo 工具克隆,该工具读取以下 xml:https ://android.googlesource.com/platform/manifest/+/refs/heads/master/default.xml 。
AOSP 指南说,为了构建,我们应该source build/envsetup.sh在 repo 克隆所有存储库的文件夹上运行。因此,让我们看看platform/build清单存储库中的 default.xml。我们得到
<project path="build/make" name="platform/build" groups="pdk" >
<copyfile src="core/root.mk" dest="Makefile" />
<linkfile src="CleanSpec.mk" dest="build/CleanSpec.mk" />
<linkfile src="buildspec.mk.default" dest="build/buildspec.mk.default" />
<linkfile src="core" dest="build/core" />
<linkfile src="envsetup.sh" dest="build/envsetup.sh" />
<linkfile src="target" dest="build/target" />
<linkfile src="tools" dest="build/tools" />
</project>
我们确认envsetup.sh 所在的位置。, 它在platform/build. 它定义了m根据 AOSP 指南构建整个 AOSP 项目的功能:
function _trigger_build()
(
local -r bc="$1"; shift
if T="$(gettop)"; then
_wrap_build "$T/build/soong/soong_ui.bash" --build-mode --${bc} --dir="$(pwd)" "$@"
else
echo "Couldn't locate the top of the tree. Try setting TOP."
fi
)
function m()
(
_trigger_build "all-modules" "$@"
)
好的,看起来build/soong/soong_ui.bash是我们运行m函数时调用的地方,所以这个脚本应该构建所有内容。
这是soong_ui.bash。它来源source ${TOP}/build/soong/scripts/microfactory.bash然后调用soong_build_go soong_ui android/soong/cmd/soong_ui
我们build_go在build/blueprint 的 microfactory.bash 中找到:
看起来所有这些都是为了构建microfactory.go项目。我认为这与宋构建系统有关。
我现在迷路了。构建 microfactory.go 后,会发生什么?实际的 Android 代码在哪里构建?
microfactory.sh 说 build_go 这样做:Bootstrap microfactory from source if necessary and use it to build the requested binary.请求的二进制文件是android/soong/cmd/soong_ui
我正在尝试查找android/soong/cmd/soong_ui,但我不知道它是什么/在哪里,但我猜是很快的构建系统,而不是 AOSP 项目。
我假设song_ui是很快的可执行文件。它应该在Android.bp上查找${TOP},但我认为在 repo 克隆所有内容的地方没有。
喵喵时光机
慕仙森
相关分类