前言
最近在学习如何搭建自己的依赖库,不太巧的是赶在了Gradle发布了7.0之后,在网上搜的教程大多是7.0之前的,虽然也有7.0的文章,但我遇到的问题有点杂。在写这篇文章的时候,我还没发布成功~,管他呢,先把过程和问题记录下来。三天后,终于解决了所有问题,不过有些问题忘了记录了,也不记得了,应该是小问题,百度一下就能解决,不然我也不会忘记。希望能给看到的你们有一点帮助。
搭建流程
1. 创建Android Library
先创建一个Android Project, 再添加一个Android Module,在创建Module时选择Android Library即可。然后在Module里编写好自己的代码。
2. 添加配置
在Module中的build.gradle文件里加入如下配置
plugins {
...
id 'com.android.library'
id 'maven-publish'
}
android {
...
}
afterEvaluate {
publishing {
publications {
release(MavenPublication){
from components.release
groupId = 'com.github.xxx'
artifactId = 'release'
version = '1.0.0'
}
}
}
}
3. 上传Github
首先得创建本地Git仓库,用命令行进入到项目的根目录,输入
git init,然后回车即可。再回到AS会发现菜单栏上多了一个Git选项。先在AS登录Github账号,我们选择Git -> Github -> Share Project on Github -> 确定,还有很多种方式,这只是其中一种,就不一一列举了。
4. 创建Tag并在Github上发布release
选择你需要发布的节点创建Tag,命名一般为版本号,推送到Github上。接下来在Github上发布
选择刚刚推送的tag,填写发布名称,点击Publish release即可
5. 前往JitPack打包
登录Github
点对应TAG后的
Got it
6. 开始使用
踩过的坑
1. Java11
* What went wrong:
An exception occurred applying plugin request [id: 'com.android.application']
> Failed to apply plugin 'com.android.internal.application'.
> Android Gradle plugin requires Java 11 to run. You are currently using Java 1.8.
You can try some of the following options:
- changing the IDE settings.
- changing the JAVA_HOME environment variable.
- changing `org.gradle.java.home` in `gradle.properties`.
使用Gradle7.0构建时,需要JDK11才能运行。这~好解决,改一下Module的build.gradle文件
compileOptions {
sourceCompatibility JavaVersion.VERSION_11
targetCompatibility JavaVersion.VERSION_11
}
kotlinOptions {
jvmTarget = '11'
}
然后还得在根目录加一个jitpack.yml文件
before_install:
- sdk install 11.0.7.hs-adpt
- sdk use 11.0.7.hs-adpt
jdk:
- openjdk11
提交给JitPack打包,呃呃呃,还报错?我看了下日志
没切过来,还是用的1.8,但我发现第二天就切过来了,我直接黑人问号。后来发现JitCi上能选择JVM版本,建议食用
2. allowInsecureProtocol
* What went wrong:
A problem occurred configuring root project 'app'.
> Could not resolve all dependencies for configuration ':classpath'.
> Using insecure protocols with repositories, without explicit opt-in, is unsupported.
Switch Maven repository 'cache(http://cache)' to redirect to a secure protocol (like HTTPS) or allow insecure protocols.
See https://docs.gradle.org/7.0.2/dsl/org.gradle.api.artifacts.repositories.UrlArtifactRepository.html#org.gradle.api.artifacts.repositories.UrlArtifactRepository:allowInsecureProtocol for more details.
意思是我项目里使用了不安全的http://cache ,像是maven的缓存,但我死活没找到。就这样一直卡着。后来不行了,只能把gradle版本换成4.1.3,结果好了···,我看了一下log,发现了一个奇怪的地方。
图里除了标红的都是我手动加的,但这标红的地方哪里来的?那报错的原因应该是因为这个,猜测是maven的缓存问题,但我不知道怎么去掉,也没查到相关信息。于是这个问题就搁置了两天。我以maven缓存为问题根源一直找资料,看文档,终于让我找到了。
附上链接 构建缓存,不过文档里写的是默认为不开启缓存构建,嘎住了,但确实我在
gradle.properties文件里加入org.gradle.caching=false就好了,我一度认为文档写错了。至于有没有写错,有待考证。
结语
gradle更新到7.0之后坑还挺多的,这几天我也是焦头烂耳,差点放弃直接用旧版本了,但想着无论怎么样以后还是得接受7.0就坚持弄下去了,可能这些都是小问题,所以也反映着自身基本知识的欠缺吧,害,码农还是任重道远啊。
参考链接
Gradle 7.X Maven publish 适配
你确定会在 JitPack 上创建依赖库吗?
Android AGP 7.0 适配,开始强制 JDK 11
使用 Maven Publish 插件
构建缓存