作為一名Android開發(fā)者,日常開發(fā)工作中肯定會用到一些強(qiáng)大的第三方開源庫,有了這些開源的幫助,開發(fā)工作可謂是如魚得水。很多時候,我們自己寫了一套代碼,為了讓別人體驗到自己代碼的便捷之處,通常我們需要將其部署到github,發(fā)布到j(luò)center,然后生成gradle代碼供他人使用。網(wǎng)上對于這部分的教程很多,不管是通過gradle-bintray-plugin插件或者是bintray-release插件,實現(xiàn)流程幾乎一致,但有些細(xì)節(jié)存在差異,最終都可以通過compile或者implemention引用。具體步驟可以參考以下兩篇文章:
- 通過bintray-release插件發(fā)布:https://blog.csdn.net/lmj623565791/article/details/51148825
- 通過gradle-bintray-plugin插件發(fā)布:https://www.cnblogs.com/AbrahamCaiJin/p/7058147.html
當(dāng)然,發(fā)布過程并不是百分百成功的,難免會遇到以下常見問題:
-
終端輸入
gradlew install命令后出現(xiàn)bash: gradlew: command not found問題:該問題的原因一般是沒有配置gradle的環(huán)境變量,我們可以將gradle所在位置復(fù)制到環(huán)境變量中去,windows較為簡單,Mac比較特殊,這里特別說明一下,可以參考這篇文章:https://blog.csdn.net/u013424496/article/details/52684213
-
權(quán)限問題:
可能會遇到
-bash: /Applications/Android Studio3.0.app/Contents/gradle/gradle-4.1/bin/gradle: Permission denied問題,一般是gradle權(quán)限引起的,我們可以在as終端輸入:$ chmod +x gradle $ chmod +x gradle.bat一般情況下,重新執(zhí)行g(shù)radlew 命令就沒問題了,如果還是不行,可以在
gradlew xxx命令前加上./,如:./gradlew clean build bintrayUpload -PbintrayUser=xxx -PbintrayKey=xxxxxxxxxxxxxxxxxxxxxx -PdryRun=false -
執(zhí)行jcenter發(fā)布命令時出現(xiàn)
Execution failed for task ':library:bintrayUpload'. Bintray user cannot be empty!問題:這種問題可能是user為空,沒有設(shè)置,也可能是發(fā)布命令中間多了空格符合或者換行符號,不要從網(wǎng)上復(fù)制命令直接執(zhí)行,最好先復(fù)制到文本編輯器查看格式是否正確。
library發(fā)布成功后,一定要記得先在jcenter個人倉庫的項目頁點擊
add to jcenter審核通過后才能使用compile和maven。-
如果jcenter審核通過,可以通過
compile....命令復(fù)制到gradle中編譯一下,如果出現(xiàn):Error:(32, 13) Failed to resolve: com.android.support:support-annotations:27.1.0 Install Repository and sync project Show in File.可以嘗試在project到build.gradle文件中添加如下代碼:
allprojects { repositories { maven { url "https://maven.google.com" } jcenter() } }重新編一下看能否通過。
-
如果使用
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:xx'插件,發(fā)布到j(luò)center版本version必須通過library的gradle文件中定義:version = "1.0.0"方可在jcenter正常顯示版本號,否則會出現(xiàn)版本號未知的問題。
-
如果使用
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:xx插件,最終jcenter中的compile依賴項目名會自動使用你library的moudle名作為最終的項目名,如,我的library的moudle名為library,那么最終生成的compile代碼會是:com.moos:library:1.0.0因此,在發(fā)布之前,請務(wù)必確認(rèn)好最終的名字。這里,強(qiáng)烈推薦使用
classpath 'com.novoda:bintray-release:0.x.x'插件來進(jìn)行jcenter發(fā)布操作,真的很方便! -
最后,如果你的library中有中文的注釋,可能會有編碼問題,可以在project的build.gradle文件中添加如下代碼:
allprojects { tasks.withType(Javadoc) { options{ encoding "UTF-8" charSet 'UTF-8' links "http://docs.oracle.com/javase/8/docs/api" } } }?