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 ,详见官方网站
相关推荐
网安蟹佬霸2 分钟前
Webshell免杀与检测实战:从一句话木马到加密流量
android·安全·web安全·网络安全·黑客·网安·渗透测试·
阿巴斯甜3 小时前
Android SharedMemory 详细使用
android
sun0077003 小时前
android的dns的常见错误resolv
android
恋猫de小郭4 小时前
Flutter A2UI 的正确用法,怎么把 AI 和动态 UI 结合有效生产
android·前端·flutter
余额瞒着我当琳4 小时前
C++--vector第二讲:手写 C++ STL:vector 源码剖析与迭代器失效分析
android·java·c++
程序员-珍4 小时前
安卓开发:同名 styles.xml 在不同分支/文件夹的合并规则
android·xml·前端
我命由我123454 小时前
Compose Codelab 学习 - Compose 中的基本布局
android·java·java-ee·kotlin·android studio·android-studio·android runtime
ii_best4 小时前
手机自动化脚本按键精灵实战:随机布局安全数字键盘的自动化输入方案
android·运维·ios·自动化·手机
2601_965798474 小时前
Boutique Business Consulting WordPress Architecture & SEO Setup
android·theme·wordpress
三少爷的鞋5 小时前
Android 架构进阶:为什么项目越大,越需要把对象创建权拿走
android