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 ,详见官方网站
相关推荐
雨白8 小时前
Android 快捷方式实战指南:静态、动态与固定快捷方式详解
android
hqk9 小时前
鸿蒙项目实战:手把手带你实现 WanAndroid 布局与交互
android·前端·harmonyos
LING9 小时前
RN容器启动优化实践
android·react native
恋猫de小郭12 小时前
Flutter 发布官方 Skills ,Flutter 在 AI 领域再添一助力
android·前端·flutter
Kapaseker17 小时前
一杯美式搞懂 Any、Unit、Nothing
android·kotlin
黄林晴17 小时前
你的 Android App 还没接 AI?Gemini API 接入全攻略
android
恋猫de小郭1 天前
2026 Flutter VS React Native ,同时在 AI 时代 VS Native 开发,你没见过的版本
android·前端·flutter
冬奇Lab1 天前
PowerManagerService(上):电源状态与WakeLock管理
android·源码阅读
BoomHe1 天前
Now in Android 架构模式全面分析
android·android jetpack
二流小码农2 天前
鸿蒙开发:上传一张参考图片便可实现页面功能
android·ios·harmonyos