在JitPack上搭建依赖库以及踩坑记录

1,482 阅读3分钟

image.png

前言

最近在学习如何搭建自己的依赖库,不太巧的是赶在了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上发布

image.png

选择刚刚推送的tag,填写发布名称,点击Publish release即可

image.png

5. 前往JitPack打包

登录Github

image.png

点对应TAG后的Got it

image.png

6. 开始使用

image.png

踩过的坑

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打包,呃呃呃,还报错?我看了下日志

image.png

没切过来,还是用的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,发现了一个奇怪的地方。

image.png

图里除了标红的都是我手动加的,但这标红的地方哪里来的?那报错的原因应该是因为这个,猜测是maven的缓存问题,但我不知道怎么去掉,也没查到相关信息。于是这个问题就搁置了两天。我以maven缓存为问题根源一直找资料,看文档,终于让我找到了。

image.png

附上链接 构建缓存,不过文档里写的是默认为不开启缓存构建,嘎住了,但确实我在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 插件
构建缓存