前言
我想大家都对Android开发中的代码依赖或多或少有所了解(dependences),作为一名Android开发者,我也经历了从本地lib——jar包——aar——Nexus Maven的过程,其中的各种问题都经历过,从独立开发者到大厂,这个依赖的形式也在不断变化,而对于独立开发者来说,Jitpack这个工具不会用就错失了一件神器,这次起因是自己按照以前的构建方式做依赖库时发现android-maven-gradle-plugin被deprecated了,重新上路,讲一下GitHub上利用Jitpack构建自己的三方依赖库的坑。
重新上路
官方文档使用Maven Publish
解决问题如下,在library的build.gradle中最外层加入:
plugins {
id 'com.android.library'
id 'maven-publish'
}
...
afterEvaluate {
publishing {
publications {
release(MavenPublication) {
from components.release
groupId = 'com.XXX.XXXXXX'
artifactId = 'XXXXX'
version = '1.0.0'
}
}
}
}
xxx自行替换成自己项目的。
github项目release
release自己的版本
每一次改动后都重新发布release的新版本。
Jitpack上build release
去Jitpack官网,登录自己的GitHub账号,输入自己的repository的名称查询(注意:仓库必须设置为public),可以看到各个版本(tag)的构建情况。
Jitpack私有库构建情况
如第一行绿色的get it才算是构建成功,其余的都不行,具体构建log可以点击进去查看。
但取经之路哪有一帆风顺?按照上面的标准流程进行构建后,出现了如下错误(就是点击那个红色的图标进入的日志):
> Configure project :
Gradle version Gradle 7.0.2
FAILURE: Build failed with an exception.
* Where:
Build file '/home/jitpack/build/app/build.gradle' line: 2
* 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`.
gradleplugin要求java 11运行,目前是1.8?
好的我升级java版本,在library的build.gradle中加入:
android{
compileOptions {
sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11
}
}
git push后在GitHub上release新版本,去Jitpack上build,依然报一样的错误。
折腾了好久,也在StackOverflow上查,去GitHub上的jitpack issue#4474 (StackOverflow的解决方案也附上)上看到了解决方案:
具体解决方案
地址附上
翻译一下:就是在项目根目录新建一个jitpack.yml,内容如下:
before_install:
- sdk install java 11.0.10-open
- sdk use java 11.0.10-open
jdk:
- openjdk11
然后按照标准流程,重新git push,release新版本,jipack构建build。
大功告成。
尽情引用自己构造的三方库吧!