Android 发布开源库到JitPack

随着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.me.BaseModule'
                artifactId = 'base'
                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发布版本

当然这里还有个过程,就是我们得把代码推到GayHub上,过程就不再赘述了,然后去创建库的发布版本:


tag.png

对应填好参数,拉到下面发布就行了:


release.png

三、Jitpack拉取

然后到jitpack(https://jitpack.io/)去拉取自己的项目就行了,一键操作,这里也不说了。但这个时候你会发现,报错了并没有发布成功:

error_1.png

提示了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拉取一下。这个时候你会发现,诶还是有问题:


error_2.png

提示说库工程不能设置appId,这里是因为新建Module的时候,相应的配置会默认设置applicationId,去掉即可:


setting_1.png

然后提交代码,重新再走个流程,你就会发现发布成功!
jitpack.png

对应的红色log就是没发布成功,点进去就能看问题出在哪。

四、测试

好了,那就让我们来测试一下,在app模块引入相应的依赖,这里jitpack也会给对应用法提示:


use.png

相应的配置完之后你会发现,诶,连编译都编译不过...

我们回头看可以发现,现在根目录的build.gradle文件下,默认并没有生成allprojects这段配置:

allprojects {
    repositories {
        google()
        mavenCentral()
        maven { url "https://jitpack.io" }
    }
}

那没有这段配置还怎么获取到对应的仓库呢,其实新版本的gradle已经把配置移到了settings.gradle里:


gradle_setting.png

所以我们把对应的jitpack地址配置进去就行了,然后运行就没问题啦。

四、多module发布

这里还有个小问题,那如果同个项目下,我的几个module都要发布呢?

其实一样的,我们只需要在对应的module下的build.gradle做上述的配置,然后一样的操作发布就行,这个时候我们可以看到jitpack的log:


multi_module.jpg

Build artifacts里就会出现我们需要发布的所有库,而至于版本号的话我是直接叠加让两个库保持一致。

1.中间简化的流程可以参考:https://www.jianshu.com/p/b7552cf8983b
2.参考:https://zhujiang.blog.csdn.net/article/details/115391998
这位博主说的一个观点很有道理,遇到问题不要第一时间想着去百度看人家踏的坑,官方文档始终是最新最有用的。另外,Google一定要放到第一位,别问我为什么。
3.相关源码:https://github.com/JaupeanChen/BaseModule

你可能感兴趣的:(Android 发布开源库到JitPack)