将项目通过Android Studio发布到Jcenter仓库

匿名 (未验证) 提交于 2019-12-03 00:05:01

什么是Jcenter仓库?

  • 个人认为Jcenter类似于git/svn,是一个项目管理工具,我们可以用它存储一些公共的组件,类库,插件等实现共享功能,同时我们可以对其版本进行控制。那我们在项目的开发过程,当需要某个组件或类库,直接依赖即可,无需复制代码,或依赖一个module了,基本是一句代码可以搞定。

如何将我们的项目发布到JCenter进行共享了?

  • 使用Bintray将项目发布到JCenter

如何配置?

  • 将项目上传到Jcenter,我们需要配置一些插件,常用的有两种

    • gradle-bintray-plugin(配置麻烦)

    • bintray-release(推荐 配置简单,但是现在支持5.0以下的gradle,好像不太支持gradle5.0以上,会出现错误 )

如何使用bintray-release来将项目发布到Jcenter?

  • 1.注册开发者账号,在这里要注意账号体系分为企业账号和普通开发者账号的,企业账号有一个月的试用期限,在刚注册的一个月内,是不能将项目发布到Jcenter的(不提供add to Jcenter按钮),所以我们在注册的时候需要注意了。

  • 2.到github获取bintray-release的版本

  • 3.在Android Studio进行配置

    • 在项目的build.gradle进行配置

      dependencies {      classpath 'com.novoda:bintray-release:0.9.1' } 
    • 在开发过程中,我们会写一些注释,而在发布编译时需要生成对应JavaDoc文档,这时可能会有编码问题,所以我们需要设置编码问题,不然会有编码警告

          buildscript {        dependencies {          classpath 'com.novoda:bintray-release:0.9.1'         }        //注释中有汉字,需要这里处理        tasks.withType(Javadoc) {            options.encoding = "UTF-8"        }           } 
    • 在我们要发布的module的build.gradle文件最后中进行如下配置

         	apply plugin: 'com.novoda.bintray-release'    	    	tasks.withType(Javadoc) {    	    options.encoding = "UTF-8"    	}    	publish {    	    userOrg = 'askedevelop' //bintray账户下某个组织id    	    repoName = 'keepLive' //远程仓库名 可以自定义 如不设置 默认名为maven    	    groupId = 'com.project.keeplivelibrary' //maven仓库下库的包名,一般为模块包名    	    artifactId = 'keepLiveLib' //项目名称    	    publishVersion = '1.0.0' //版本号    	    desc = 'keep live for android' //项目介绍,可以不写    	    website = '' //项目主页,可以不写    	    licences = ['Apache-2.0']    	} 

  • 在Android Studio的Terminal面板中执行下面命令,其中BINTRAY_USERNAME替换为你的binatray用户名,BINTRAY_KEY替换为上面获取的API Key,-PdryRun=false会上传到仓库中,如果为true,只会执行gradle任务,但不会上传。替换完成后回车执行

        gradlew clean build bintrayUpload -PbintrayUser=BINTRAY_USERNAME -PbintrayKey=BINTRAY_KEY -PdryRun=false 

  • 成功之后最终结果

  • 这时候其实我们并没有将项目完全发布到Jcenter,需要进过审核才可以,但是我们已经可以使Maven实现远程依赖了。

      //1.在整个项目的build.gradle配置Maven     allprojects {        repositories {            google()            jcenter()            maven { url 'https://www.jitpack.io' }           //添加我们的maven 地址            maven { url 'https://dl.bintray.com/askedevelop/keepLive' }        }    }     //2.在需要添加依赖库的module中添加依赖    implementation 'com.project.keeplivelibrary:keepLiveLib:1.0.0' 
  • 当我们的依赖库被Jcenter审核通过后,我们可以去掉 maven { url ‘https://dl.bintray.com/askedevelop/keepLive’ },因为Android Studio默认以Jcenter作为默认的中央仓库,所以我们需要点击Add To Jcenter提交Jcetner审核即可

会出现那些坑

  • 问题1

    当前Android Studio的版本已经到了 3.5,gradle的版本达到了5.4.1, 编译上传的时候会报如下错误

      					WARNING: API 'variantOutput.getPackageLibrary()' is obsolete and has been replaced with 'variant.getPackageLibraryProvider()'.   					It will be removed at the end of 2019.   					For more information, see https://d.android.com/r/tools/task-configuration-avoidance. 

    解决方案:将gradle的版本降低至4+

    • 问题2

    . 将项目上传到Jcenter时会上传失败,报如下的错

        HTTP/1.1 404 Not Found [message:Repo 'maven' was not found] 

    解决方案:因为bintrary默认会为项目设置远程仓库名为maven,但是我们在创建项目时其远程仓库名不是maven,所以我们需要根据实际情况设置

  1. 问题3
  • 注册账号时注册成为企业账号,将项目上传到bintrary时,发现没有Add To Jcenter按钮

  • 解决方案:使用正常的注册登入方式,若已经被注册为企业账号,可以取消掉企业账号,转为普通账号,但是创建的项目可能会被清掉

  • 问题4

    GBK编码问题,javadoc编码问题


解决方案:在项目的build.gradle下设置编码,或者在module下build.gradle中添加该注释

  //1.在项目的build.gradle下 	buildscript { 	  ..... 	    //注释中有汉字,需要这里处理 	    tasks.withType(Javadoc) { 	        options.encoding = "UTF-8" 	    } 	  	}       //2.在项目的build.gradle下,与Android 以及dependencies平级   tasks.withType(Javadoc) {    options.encoding = "UTF-8"  } 
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!