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

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

)

......

  1. 修改 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");

}

//.....

}

  1. 在 tools 目录下执行 ./gradlew :publishAndroidGradleLocal ,详见官方网站
相关推荐
kymjs张涛13 小时前
OpenClaw 学习小组:初识
android·linux·人工智能
范特西林16 小时前
实战演练——从零实现一个高性能 Binder 服务
android
范特西林17 小时前
代码的生成:AIDL 编译器与 Parcel 的序列化艺术
android
范特西林17 小时前
深入内核:Binder 驱动的内存管理与事务调度
android
范特西林18 小时前
解剖麻雀:Binder 通信的整体架构全景图
android
范特西林18 小时前
破冰之旅:为什么 Android 选择了 Binder?
android
奔跑中的蜗牛66619 小时前
一次播放器架构升级:Android 直播间 ANR 下降 60%
android
测试工坊21 小时前
Android 视频播放卡顿检测——帧率之外的第二战场
android
Kapaseker1 天前
一杯美式深入理解 data class
android·kotlin
鹏多多1 天前
Flutter使用screenshot进行截屏和截长图以及分享保存的全流程指南
android·前端·flutter