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 ,详见官方网站
相关推荐
rocpp5 小时前
Android 相册选择与拍照接入实践:MediaStore 分页、权限适配与 FileProvider
android
Flynt6 小时前
升级Flutter 3.44,我踩了HCPP和AGP 9的坑
android·flutter·dart
白色牙膏7 小时前
Cocos Creator 2.4.x 接入 AdMob 插件的迁移实践
android
我命由我123458 小时前
C++ - 面向对象 - 常成员函数
android·java·linux·c语言·开发语言·c++·算法
tryqaaa_9 小时前
学习日志(四)【php反序列化魔术方法以及pop构造配实战】
android
Java小学生丶11 小时前
记录一下我的 Gradle 开发环境配置过程
android·java·gradle·maven·安卓
问心无愧051311 小时前
ctf show web 入门256
android·前端·笔记
霸道流氓气质11 小时前
MySQL 索引设计实战指南
android·数据库·mysql
R语言爱好者12 小时前
叠氮酸介绍
android
方白羽12 小时前
Android WebView 中实现第三方 QQ 登录的架构与流程详解
android·app