Android Gradle Plugin 编译

1. 源码下载:

$ 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 分支。

2. 修改 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",
)

......
 

3. 修改 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 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");
    }
    //.....    
}

4. 在 tools 目录下执行  ./gradlew :publishAndroidGradleLocal  ,详见官方网站

你可能感兴趣的:(Android,android)