IDEA 版本 2018.3,grpc-java 版本 Tag-v1.31.1 ,gradle-5.6.1
前期准备
grpc-java tag 下载路径:https://github.com/grpc/grpc-java/tags
gradle 配置为国内镜像:https://blog.youkuaiyun.com/lj402159806/article/details/78422953
代码构建
导入代码,这里通过本地已有的 gradle 进行导入,grpc-java Tag-v1.31.1 默认的 gradle 版本为 6.5.1,故这里尝试用 6.5.1 进行编译。

很快会碰到第一个问题,由于 grpc-java 也是支持 Android,会引入 Android 的插件依赖

这一部分,卡了很久,尝试通过配置 Android SDK 依赖,或者修改 gradle 版本,均未解决,也可能是由于相关资源被墙了,暂未能解决,但由于本次目的是查看 grpc-java 的源码,主要用于后端开发,Android 部分先行忽略,选择删除跟 Android 相关的代码:

同时将 Android 插件引入部分进行注释:
settings.gradle,注释掉 com.android.application 跟 com.android.library
pluginManagement {
plugins {
// id "com.android.application" version "3.5.0"
// id "com.android.library" version "3.5.0"
id "com.github.johnrengelman.shadow" version "2.0.4"
id "com.github.kt3k.coveralls" version "2.0.1"
id "com.google.osdetector" version "1.4.0"
id "com.google.protobuf" version "0.8.12"
id "digital.wup.android-maven-publish" version "3.6.2"
id "me.champeau.gradle.japicmp" version "0.2.5"
id "me.champeau.gradle.jmh" version "0.5.0"
id "net.ltgt.errorprone" version "0.8.1"
id "ru.vyarus.animalsniffer" version "1.5.0"
}
build.gradle,注释掉 com.android.application 跟 com.android.library
plugins {
// id "com.android.application" apply false // Necessary for Android plugin to find its classes
// id "com.android.library" apply false
id "com.google.osdetector" apply false
id "me.champeau.gradle.japicmp" apply false
id "net.ltgt.errorprone" apply false
}
完成后,再进行编译,会卡在:
java.lang.NoClassDefFoundError: org/gradle/api/internal/plugins/DefaultConvention
at org.jetbrains.plugins.gradle.tooling.builder.ProjectExtensionsDataBuilderImpl.buildAll(ProjectExtensionsDataBuilderImpl.groovy:50)
at org.jetbrains.plugins.gradle.tooling.internal.ExtraModelBuilder.buildAll(ExtraModelBuilder.java:67)
at org.gradle.tooling.provider.model.internal.DefaultToolingModelBuilderRegistry$BuildOperationWrappingToolingModelBuilder$1$1.create(DefaultToolingModelBuilderRegistry.java:105)
at org.gradle.api.internal.project.DefaultProjectStateRegistry.withLenientState(DefaultProjectStateRegistry.java:134)

这个是由于 gradle 与 IDEA 的兼容问题,需要对 gradle 版本进行调整
参考:https://blog.youkuaiyun.com/C704058712/article/details/107916061
IDEA 2018.03 支持 gradle 5.6.1,进行回退:
Settings -> Build, Execution, Deployment -> Build Tools -> Gradle ,通过修改 Gradle home 完成:

同时,gradle-wrapper.properties 也需要进行修改

修改为:
distributionUrl=https\://services.gradle.org/distributions/gradle-gradle-5.6.4-all.zip
之后,重新进行构建即可,如果是第一次构建,花费的时间会较长
总结:对 grpc-java 源码阅读环境搭建,其中 Android 的部分是被跳过,后续将继续研究此部分代码如何进行编译
1万+



被折叠的 条评论
为什么被折叠?



