為什么寫
看見標題有人可能會輕蔑一笑,多簡單個事?還至于專門寫一篇文章嗎?
我之前也以為挺簡單的,因為之前自己也上傳過,但是前幾天的經歷告訴我沒有那么簡單,特別是現在安卓 Gradle 升級到 7.0 之后,,,
還可能有人問為什么要在 JitPack 上創建呢?JCenter 、Maven 不香嘛?
因為我之前就在 JitPack 上創建過依賴,有點經驗,所以選擇這個,至于JCenter ,可能大家也知道,直接看官網吧:

懂了吧,,,
為啥沒選 Maven 呢,,,因為我沒想到 JitPack 變得這么麻煩,本來是奔著簡單才選的,如果再給我一次機會我一定不上傳 JitPack 了,,,好了,廢話不多說,直接進入文章主題吧:
流程
上傳依賴到 JitPack 流程很簡單,網上搜博客一搜一大堆,這里就不詳細說了,我簡單過一下吧:
創建 Android Library
首先要創建一個 Android Library ,這其實是廢話,你要上傳的就是依賴不創建 Android Library 創建啥?對不,,,然后在里面寫好你需要作為依賴的代碼,比如寫一些工具類啊啥的,這個看自己的需要吧,就不做演示了,,,
上傳到 Github
代碼寫完了就該上傳到 Github 了,什么?你沒有 Github 倉庫?碼云的也可以,什么?都沒有?玩蛋去,,
這里就假設你有 Github 了,然后在 as 中登錄一下,按照圖片下面的操作直接添加你的賬號就行了:

添加完了之后按照下面圖片中那樣點擊:

點擊完之后會彈出下面的對話框:

注意不要勾選 Private ,勾選了的話你上傳的就成了私有的了,
打 Release 包
上傳成功之后打開 Github 網頁點擊下面圖片中箭頭所指的地方開始打包:

點擊完之后按照下面的格式填寫資訊:

第一個框是版本號,第二個框是標題,第三個框是描述,根據個人情況填寫就行,填寫完之后點擊綠色按鈕進行發布就行了,
JitPack 發布
這里就很簡單了,打開 JitPack 官網:https://jitpack.io/

這塊有兩個選擇,通過右上角登錄你的 Github 賬號或者在搜索框搜索你剛才上傳庫的地址,都可以,自己選擇,選擇之后點擊 Look up 會出現如下:

點擊 Get it 靜靜等待即可,
使用依賴
上面完成之后直接就可以使用了,現在工程級目錄下的 build.gradle 中添加如下代碼:
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
然后在你的 module 級目錄下的 build.gradle 中添加如下代碼:
dependencies {
implementation 'com.github.zhujiang521:Banner:Tag'
}
其實這塊網頁中都寫的有:

問題
本來不想寫上面這一堆,但是感覺不寫也不對,大家理解起來可能有困難,所以就寫了下,
如果是在去年,上面的一套流程完全沒有問題,但是在現在,上面的流程,,,不對,
AndroidMavenPlugin 的問題
為什么說不對呢?如果你現在按照上面的流程走的話,在 JitPack 發布那一塊你肯定會失敗,就是 Get it 失敗,就像下面這樣:

錯了不要緊,看看日志錯在哪了,點擊那個小書的標簽,進入日志,發現報錯資訊如下:
FAILURE: Build failed with an exception.
* Where:
Script '/script/maven-plugin.gradle' line: 2
* What went wrong:
A problem occurred evaluating script.
> Failed to apply plugin 'com.github.dcendents.android-maven'.
> Could not create plugin of type 'AndroidMavenPlugin'.
> Could not generate a decorated class for type AndroidMavenPlugin.
> org/gradle/api/publication/maven/internal/MavenPomMetaInfoProvider
呃呃,這是啥?AndroidMavenPlugin ?Google 了之后才知道 JitPack 使用的就是 AndroidMavenPlugin 來發布依賴的,OK,既然這個東西有問題,那就來看看怎么加上吧:
classpath 'com.github.dcendents:android-maven-gradle-plugin:2.1'
OK,再次提交代碼,打 release 包,然后去 JiaPack 網站點 Get it ,發現依然報這個錯,,,
什么鬼,,,
又去 Github 搜索了下 android-maven-gradle-plugin ,發現人家這個庫已經廢棄了,,,

上面廢棄庫指向的是安卓官方檔案,,,這又是什么鬼,,,也沒人告訴我啊!!!
程序有多艱難這里就不進行描述了,在下面我會簡單說下,經過一番搜索,發現,,,發現我就是個憨批,,,使用 JitPack 不跟著人家官方檔案來,跟什么別人的博客?其實大家以后也是,能看官方檔案就別看三方寫的東西,出錯了都不知道為啥,,,來看下吧:

官方檔案中清清楚楚、明明白白地寫著需要配置Gradle插件我不配置偏偏要去百度上面出現的錯誤!!!真的是,,,憨批!
來吧,看下安卓的檔案吧:https://developer.android.com/studio/build/maven-publish-plugin

詳細內容大家去官網看吧,這里直接寫下解決問題的代碼吧:
plugins {
id 'com.android.library'
id 'kotlin-android'
id 'maven-publish'
}
afterEvaluate {
publishing {
publications {
release(MavenPublication) {
from components.release
groupId = 'com.zj.banner'
artifactId = 'banner'
version = '1.0.0'
}
}
}
}
OK,提交代碼,打 release 包,然后再去 JiaPack 網站點 Get it ,大部分人應該就可以成功了,但是,,,我的還是不行的,,,
Java 11 的問題
為啥還是不行呢?不要緊,看看日志錯在哪了,點擊那個小書的標簽,進入日志,發現報錯資訊如下:
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`.
嗯,,,這是什么情況?
其實上面也提到過,Android Gradle 在升級到 7.0 之后就必須使用 Java 11 以及之后的版本才可以,而我目前使用的是 Java 1.8,
嗯,既然需要 Java 11 那就升級下,改下 module 級 build.gradle 中的代碼:
android {
...
compileOptions {
sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11
}
kotlinOptions {
jvmTarget = '11'
useIR = true
}
}
大家要注意,每次修改完代碼都需要先把代碼 push 到 Github 中,然后重新按照上面的步驟打一個 release 包,再去 JitPack 網頁中點擊你打的包的那個版本的 Git it 才行,
提交完了之后執行,發現,,,竟然還在報錯,報的還是這個錯!這是什么玩意?
其實我在這塊卡了很久,一直以為是我本地的代碼問題,但后來想明白應該是 JitPack 的問題,因為本地運行是沒有任何問題的,
想清楚這一點,我來到了 JitPack 的 Github 倉庫,點開了倉庫的 Issues ,直接搜索 Java 11,果然,找到了這個問題:

上面的圖片中有個 JitPack 的幫助檔案,點擊打開:

但之前其實還有個疑問,我在代碼中國呢已經設定了 Java 的版本,為什么還是報錯呢?看上面的圖片大家應該也已經知道了,JitPack 默認使用的是 OpenJDK Java 8 編譯專案,但是咱們需要 Java 11 ,你必須按照上面那樣在根目錄添加一個 jitpack.yml 檔案才可以,OK,那就添加吧:
before_install:
- sdk install java 11.0.10-open
- sdk use java 11.0.10-open
jdk:
- openjdk11
再次提交代碼,打 release 包,然后去 JiaPack 網站點 Get it ,發現依然報這個錯,,,
我的天,我當時真的不知道該怎么搞,以為我 jitpack.yml 這個檔案格式寫的有問題 JitPack 識別不出來?還是別的什么問題?然后改來改去改了幾十遍,,,為什么我知道是幾十遍呢?下面是我的提交記錄:

這只是其中一部分,下面是我 Github 的一部分提交記錄:

看到上面的提交記錄,你就應該能明白當時我的無助,,,,
索性不管了,明天再說吧,,,
然而,奇怪的事情發生了,第二天我再次使用相同版本進行 Get it 的時候,雖然還是失敗,但是問題竟然變了!!!什么鬼?看下日志:
Kotlin: 1.4.31
Groovy: 3.0.7
Ant: Apache Ant(TM) version 1.10.9 compiled on September 27 2020
JVM: 11.0.2 (Oracle Corporation 11.0.2+9)
OS: Linux 4.14.63-xxxx-std-ipv6-64 amd64
通過日志可以看到 Java 已經設定為了 11 ,我的天,昨天搞了一天這玩意沒成功,其實已經成功了,我估計是 JitPack 中有快取,,,害死我了,,,
OK,再次提交代碼,打 release 包,然后去 JiaPack 網站點 Get it ,然后就是漫長的等待,,,
終于, Git it 按鈕變為了綠色,成功了,,,
總結
沒什么好總結的,因為感覺自己腦子不夠用,遇到問題首先想到的一直是復制錯誤去百度、去 Google ,從來沒想著去最權威的東西——官方檔案,老想著別人可能也遇到過這個問題,直接去拿現成的,這是個不好的習慣,得改,
希望大家能以此為戒,努力,共勉,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/271924.html
標籤:AI
