- 源码下载:
$ mkdir studio-main
$ cd studio-main
$ repo init -u https://android.googlesource.com/platform/manifest -b studio-main
$ repo sync -c -j4 -q
这个官方网址让下载 studio-master-dev 分支,这个分支很老旧了,我这里直接下载 studio-main 分支。
- 修改 studio-main/tools/base/bazel/toplevel.WORKSPACE 文件,注释掉如下带删除线的部分
......
new_local_repository(
name = "studio_jdk",
build_file = "prebuilts/studio/jdk/BUILD.studio_jdk",
path = "prebuilts/studio/jdk",
)
#-----delete begin-----
#local_repository(name = "blaze",
path = "tools/vendor/google3/blaze",
repo_mapping = {
"@local_jdk": "@studio_jdk",
},
#)
#vendor_repository(
name = "vendor",
bzl = "@//tools/base/bazel:vendor.bzl",
function = "setup_vendor_repositories",
#)
#load("@vendor//:vendor.bzl", "setup_vendor_repositories")
#setup_vendor_repositories()
#-----delete end-----
local_repository(
name = "io_bazel_rules_kotlin",
path = "tools/external/bazelbuild-rules-kotlin",
)
local_repository(
name = "windows_toolchains",
path = "tools/base/bazel/toolchains/windows",
)
......
- 修改 studio-main/tools/buildSrc/src/main/java/com/android/tools/internal/bazel/BazelPrebuiltsBuildService.java,注释掉 args.add("--config=without_vendor");
private void invokeBazel() throws IOException {
File bazel = getParameters()
.getRootDir()
.file(getBazelExe())
.get()
.getAsFile();
List<String> args = new ArrayList<>();
args.add("run");
if (!getParameters().getRootDir().dir("vendor").get().getAsFile().isDirectory()) {
Logging.getLogger(BazelPrebuiltsBuildService.class).lifecycle("Running in AOSP mode");
//args.add("--config=without_vendor");
}
if (getParameters().getUseReleaseVersion().get()) {
args.add("--config=release");
}
//.....
}
- 在 tools 目录下执行 ./gradlew :publishAndroidGradleLocal ,详见官方网站