随着AS
的更新(Arctic Fox 2020.3.1)
及Android Gradle Plugin版本
(7.0.2)
的升高,原本的jitpack
发布方法都会出现问题,即利用android-maven-gradle-plugin
的方法,记录一下新的方法。
一、配置模块的gradle文件
通过 'maven-publish' 来设置插件:
plugins {
id 'com.android.library'
id 'maven-publish'
}
然后再做对应的发布参数的设置:
afterEvaluate {
publishing {
publications {
// Creates a Maven publication called "release".
release(MavenPublication) {
// Applies the component for the release build variant.
from components.release
// You can then customize attributes of the publication as shown below.
groupId = 'com.cutout.kit'
artifactId = 'ydkit'
version = '1.0'
}
// Creates a Maven publication called “debug”.
debug(MavenPublication) {
// Applies the component for the debug build variant.
from components.debug
groupId = 'com.example.MyLibrary'
artifactId = 'final-debug'
version = '1.0'
}
}
}
}
参考官网 https://developer.android.com/studio/build/maven-publish-plugin#groovy
这里release
和debug
的话,建议根据实际,每次只用一个,注掉另一个。
很简单,这样就配置完了...
二、推代码到GitHub发布版本
当然这里还有个过程,就是我们得把代码推到GitHub
上,过程就不再赘述了,然后去创建库的发布版本:
对应填好参数,拉到下面发布就行了:
三、Jitpack拉取
然后到jitpack
(https://jitpack.io/)去拉取自己的项目就行了,一键操作,这里也不说了。但这个时候你会发现,报错了并没有发布成功:
提示了Android gradle plugin要求使用Java11,这个时候需要新增jitpack.yml文件:
before_install:
- sdk install java 11.0.10-open
- sdk use java 11.0.10-open
jdk:
- openjdk11
好了,那就代码推上去,再走一下GitHub的发布流程,打个新版本,再去jitpack拉取一下。这个时候你会发现,诶还是有问题:
提示说库工程不能设置appId,这里是因为新建Module的时候,相应的配置会默认设置applicationId,去掉即可:
然后提交代码,重新再走个流程,你就会发现发布成功!
对应的红色log就是没发布成功,点进去就能看问题出在哪,绿色就是成功。
四、测试
好了,那就让我们来测试一下,在app模块引入相应的依赖,这里jitpack也会给对应用法提示:
相应的配置完之后你会发现,诶,连编译都编译不过...
我们回头看可以发现,现在根目录的build.gradle文件下,默认并没有生成allprojects这段配置:
allprojects {
repositories {
google()
mavenCentral()
maven { url "https://jitpack.io" }
}
}
那没有这段配置还怎么获取到对应的仓库呢,其实新版本的gradle已经把配置移到了settings.gradle里:
所以我们把对应的jitpack地址配置进去就行了,然后运行就没问题啦。
四、多module发布
这里还有个小问题,那如果同个项目下,我的几个module都要发布呢?
其实一样的,我们只需要在对应的module下的build.gradle做上述的配置,然后一样的操作发布就行,这个时候我们可以看到jitpack的log:
Build artifacts里就会出现我们需要发布的所有库,而至于版本号的话我是直接叠加让两个库保持一致。
1.中间简化的流程可以参考:https://www.jianshu.com/p/b7552cf8983b
2.参考:https://zhujiang.blog.csdn.net/article/details/115391998
3.相关源码:https://github.com/ydstar/CutoutKit