本地存在一套main分支的aosp代码,由于main分支下的build/make/target/product/ 下不存在sdkx_xxx.mk(这种是带Goldfish模拟器的)这种配置文件,只能lunch aosp_cf_x86_64_phone-xxx这种,这种是Cuttlefish模拟器,所以需要切分支,切到android14-release。
进入.repo/manifests,切manifest仓的分支,并关联远程分支。
git checkout -b android14-release origin/android14-release
,执行git pull
。
然后执行repo sync -j4
,就会拉代码。
执行repo start android14-release --all
,确保所有git仓在此分支下。
使用repo sync的时候总是Failed to remove xxx,删除不存在分git仓库失败。
例如
Deleting obsolete path /F/android/tools/rr_prebuilt
Failed to remove /F/android/tools/rr_prebuilt/.git
error: Failed to delete obsolete path /F/android/tools/rr_prebuilt
remove manually, then run sync again
执行sync.py的时候,失败,无法自动移除不存在于manifest中的仓库。
https://gerrit.googlesource.com/git-repo/+/maint/subcmds/sync.py
一开始我以为是权限问题,给repo 和 aosp目录都配置了权限,但是还是不行,偶然发现的
解决办法:执行下repo init -u
,修改一下url,使用google源,不使用清华源。具体原因未知。
执行
repo init -u https://android.googlesource.com/platform/manifest -b android14-release
default.xml如下所示
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<remote name="aosp"
fetch=".."
review="https://android-review.googlesource.com/" />
<default revision="android14-release"
remote="aosp"
sync-j="4" />
<superproject name="platform/superproject" remote="aosp"/>
<contactinfo bugurl="go/repo-bug" />
<project path="build/make" name="platform/build" groups="pdk" >
<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>
.......
由于android 默认lunch默认选不到镜像,所以首先需要修改mk。
修改build/make/target/product/AndroidProducts.mk文件,添加sdk_phone_x86_64-eng。
注意最后有一行回车。
diff --git a/target/product/AndroidProducts.mk b/target/product/AndroidProducts.mk
index 133dc7354e..a0ecec4c06 100644
--- a/target/product/AndroidProducts.mk
+++ b/target/product/AndroidProducts.mk
@@ -92,3 +92,4 @@ COMMON_LUNCH_CHOICES := \
aosp_arm-eng \
aosp_x86_64-eng \
aosp_x86-eng \
+ sdk_phone_x86_64-eng \
编译
source build/envsetup.sh
lunch sdk_phone_x86_64-eng
make -j10
编译完成后,在此窗口下(确保环境变量)执行emulator
命令即可Goldfish启动模拟器。注意:需确保没有启动VitualBox等虚拟机。