android 上传项目到jcenter 最新实践

本文详细介绍了如何将Android项目上传到jcenter,包括注册Bintray账号、创建Maven仓库、配置Android Studio、处理上传过程中的问题,如避免lint和javadoc检查,以及如何将库添加到jcenter。

一、概念

Android Studio根据Module中build.gradle中的定义(最常用的就是远程依赖),从Maven仓库服务器上下载了Library到本地,然后提供给工程使用的。
Apache Maven是Apache开发的一个工具,提供了用于贡献library的文件服务器。有两个比较标准的Android Library文件服务器:jcenter和maven central。
我们在项目的build.gradle文件中如下定义仓库,就能使用jcenter了:

allprojects {
   repositories {
     jcenter()   
     }
 }

Maven Central则是由sonatype.org维护的Maven仓库。

我们在项目的build.gradle文件中如下定义仓库,就能使用Maven Central了:

allprojects {
 repositories {
    mavenCentral()  //关键点是这句
	 }
}

注意:不管是jcenter还是Maven Central,两者都是Maven仓库,只不过由不同的人,在不同的服务器上进行维护而已。android studio 默认使用的是jcenter。
两者的区别:

1、jcenter是maven central的超集。也就是说maven central上有的库,jcenter上都有。但是jcenter上有的库,在maven central上不一定有。

2、上传到jcenter上的库,可以一键发布到maven central上。十分简单。

3、jcenter界面更友好。

4、jcenter通过CDN发送library,下载更快。

二、使用

首先在project 的build.gradle 下配置:

buildscript {
	repositories {
    	google()
  	  jcenter()  //这两行是android studio 默认配置
 	maven {
       url 'https://bintray.com/xxxx/udesk/'//也可以是没加到jcenter的远程的个人仓库 ,还可以是本地的maven仓库 (本文不介绍)
	}
}

如果加入到了jcenter,直接在module下build.gradle中的dependencies 加入一行:

implementation 'com.android.support:multidex:1.0.3'

这样就可以通过这个maven仓库的链接进行下载到本地。

这 com.android.support:multidex:1.0.3 库连接由三部分组成:
groupId: artifactId:version

version: 版本号
groupId: 项目组的id,相当于给库分组
artifactId:项目的id,建议保持你的 library module 的名字同 artifactId 一样。

因为在 Bintray 上你的项目的maven-metadata.xml 文件的路径是 gruopId+"/"+module名称。例如你的 groupId 是 com.example,artifactId 是 test,但 module 名称是 library,这时候项目文件是在 com.example.test 目录下的,但 maven-metadata.xml 文件却是在 com.example.library 目录下的。这样一来如果你有多个项目 groupId 一样,artifactId 不一样,但 module 名称都是 library 的话,可能就会冲突。

三、上传项目到jcenter (坑比较多)

1、登录注册 https://bintray.com/
注意:点击sign up here (不要选第一个, 第一个有期限,此外你会发现在edit profile 左侧会少2个,左侧5个,右侧7个,其中就少一个repositories)

在这里插入图片描述 2、创建账号
注意:邮箱 很多都不支持。而且没提示,就是没反应。qq邮箱肯定不支持,gmail支持。
另外可以通过第三方注册登录。(进去留意下账号旁边有没有使用期限提示,如果有说明注册了第一个。重新注册第二个,一个邮箱只能注册一次)。

在这里插入图片描述 3、创建maven仓库
点击Add New Repository
在这里插入图片描述在这里插入图片描述
注意 第一个和第二个必填。Name 填 就是repo的名字,填写成maven和不是maven对后续上传有影响,后面上传的时候再说,这里留意一下,Type 选择 Maven 即可。

4、android studio 中配置
在项目的 build.gradle 文件的 dependencies 块里面增加下面语句:(建议使用官网最新版本)
GitHub 官网:https://github.com/novoda/bintray-release

 classpath 'com.novoda:bintray-release:0.9.1'

在要上传的 Module 的 build.gradle (第一行)添加如下语句:

apply plugin: 'com.novoda.bintray-release'

在末尾添加

publish {
userOrg = 'xxxxxx'   //账户名
groupId = 'cn.udesk'     //项目组id 建议包名
artifactId = 'UdeskSDKUI'  // 项目名称 建议module 名
publishVersion = '5.1.0'   //版本号
repoName = 'udesksdk'     // jcenter资源库名  刚才如果填写的是maven 不用写这行  如果不是需要写自定义的名字
desc = 'this is the new version 5.1.0'  // 描述
website = 'https://github.com/udesk/UdeskSDK-Android' //开源网址

}

以后引入就是implementation ‘cn.udesk:UdeskSDKUI:5.1.0’
5、上传项目
在 Android Studio 的 Terminal 面板输入命令(window 环境):

gradlew clean build bintrayUpload -PbintrayUser=xxxxx -PbintrayKey=xxxxxx -PdryRun=false

其中 PbintrayUser 指定的是你注册的用户名。PbintrayKey 指定的是你的 API Key。
API Key 在账户下 edit profile 里面 有个API Key
上传的过程中会有坑,后面会列出来几个 。
6、上传完成使用
一种是点击进去项目 然后在右下角点击 add to jcenter,提交审核。审核通过就可以直接在dependencesli 依赖了。
另一种是不提交,引用时就需要配置maven url 远程依赖。(参见使用)

四、上传过程中可能遇到的问题及解决

1、Execution failed for task ‘:core:lint’

	Execution failed for task ':core:lint'. 
     > Lint found errors in the project; aborting build.

在上传过程中执行了lint检查,所以可能会报上面的错误。解决方法就是避免lint的检查,在每个module的gradle 的android下面就要添加如下配置:

lintOptions {
	abortOnError false
}

2、Execution failed for task ‘:core:mavenAndroidJavadocs’.

Execution failed for task ':core:mavenAndroidJavadocs'.
     > Javadoc generation failed. Generated Javadoc options file (useful for troubleshooting): '/Users/zhou/git                         /app/core/build/tmp/mavenAndroidJavadocs/javadoc.options'

在上传过程中执行了javadoc检查,所以可能会报上面的错误。解决方法就是避免javadoc的检查,在项目根目录下的gradle下面就要添加如下配置:

allprojects {
	tasks.withType(Javadoc) {
   	 options.addStringOption('Xdoclint:none', '-quiet')
    	options.addStringOption('encoding', 'UTF-8')
    }
}

3、HTTP/1.1 404 Not Found [message:Repo ‘MyMaven’ was not found]
找不到Maven库,可能是你没有创建,或者是你repoName的值跟你创建的仓库名字不一样,还有可能是你的userOrg也没有写对!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值