使用gradle发布aar到jcenter仓库
一、前言
目前Android Studio 新建工程时 ,在工程路径下的build.gradle 中 默认生成如下
repositories {
google()
jcenter()
}
默认支持 jcenter,其他如maven 还要手动添加 例如
repositories {
maven{ url"https://maven.google.com"}
mavenCentral()
maven { url "https://jitpack.io" }
}
二 、准备工作
1 注册bintray账号
1 进入 https://bintray.com/ 注册账号 ,注册需要翻墙,
注意不能使用 qq.com 结尾这样的邮箱,果然 调整汉子顺序不影响阅读,搞笑一下 我们继续撸。
2 注册完成后,需要登录邮箱点击链接激活;当然也可以选择第三方登录,比如github 。
2 获取api key
登录后,选择 Edit Profile
或 打开https://bintray.com/profile/edit
左边菜单的最下面有API Key选项,点击后:
image.png
输入密码点击 submit ,会显示Your API key,复制API key,gradle 配置中会用到。
3 创建仓库
点击 New Repository
image.png
name:仓库名称 可以随便取 ,复制name,gradle配置中需要
type: 仓库类型 我们选择 Maven
Licenses :许可证 ,不太了解,跟gradle配置中保持一致就行了。
仓库创建好了 我们就可以上传jar了。
三、配置gradle项目
1 创建 Android Studio 项目,
添加一个module 比如我的是 permission ,在permission中进行相关功能的处理
2 配置gradle
1 在工程目录下的gradle 中添加发布项目的插件.
dependencies {
classpath 'com.android.tools.build:gradle:3.3.0'
//两个帮助发布项目的插件
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.7.1'
classpath 'com.github.dcendents:android-maven-gradle-plugin:1.5'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
2 在 module 目录中添加 gradle.properties(如果没有的话)内容如下:
image.png
3 在 local.properties 中配置用户名和apikey(bintrary.com刚申请的)
image.png
4 在module 的gradle 中配置
根节点添加 如下:
// 上传插件
apply plugin: 'com.github.dcendents.android-maven'
apply plugin: 'com.jfrog.bintray'
version = MAVEN_VERSION
def siteUrl = 'https://github.com/xxx/xxxx' // project homepage
def gitUrl = 'https://github.com/xxx/xxxx.git' // project git
group = MAVEN_GROUP_ID// Maven Group ID for the artifact
// 根节点添加
install {
repositories.mavenInstaller {
// This generates POM.xml with proper parameters
pom {
project {
//version MAVEN_VERSION
//groupId MAVEN_GROUP_ID
//artifactId MAVEN_ARTIFACT_ID
packaging MAVEN_PACKAGING
description MAVEN_DESCRIPTION
name MAVEN_NAME
url MAVEN_URL
inceptionYear MAVEN_INCEPTION_YEAR
scm {
tag "1.0"
url siteUrl
connection gitUrl
developerConnection gitUrl
}
licenses {
license {
name 'The Apache Software License, Version 2.0'//刚才创建仓库时的许可证
url 'http://www.apache.org/licenses/LICENSE-2.0.txt'
//distribution "repo"
}
}
developers {
developer {
id POM_DEVELOPER_ID
name POM_DEVELOPER_NAME
email POM_DEVELOPER_EMAIL
}
}
}
}
}
}
//打包 sourcesjar
task sourcesJar(type: Jar) {
from android.sourceSets.main.java.srcDirs
classifier = 'sources'
}
//打包 javadocjar
task javadoc(type: Javadoc) {
source = android.sourceSets.main.java.srcDirs
classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
}
task javadocJar(type: Jar, dependsOn: javadoc) {
classifier = 'javadoc'
from javadoc.destinationDir
}
artifacts {
archives javadocJar
archives sourcesJar
}
Properties properties = new Properties()
boolean isHasFile = false
if (project.rootProject.file('local.properties') != null){
isHasFile = true
properties.load(project.rootProject.file('local.properties').newDataInputStream())
}
bintray {
user = isHasFile ? properties.getProperty("bintray.user") : System.getenv("bintray.user")
key = isHasFile ? properties.getProperty("bintray.apikey") : System.getenv("bintray.apikey")
configurations = ['archives']
pkg {
repo = "maven"//仓库名称
name = MAVEN_NAME//项目名称 project name in jcenter
websiteUrl = siteUrl
vcsUrl = gitUrl
licenses = ["Apache-2.0"]
publish = true
}
}
备注 :
1 repo :仓库名称 是在bintrary 创建的仓库名,能找到就行了
2 gitUrl : 项目链接地址 不能为空地址。
5 上传
1 最方便的方式 选择如下
image.png
2 在Terminal中 输入命令行方式
麻烦 就不写出来了。
如果出现此种错误
image.png
在上传过程中执行了javadoc检查,所以可能会报上面的错误,解决方法就是避免进行javadoc的检查。
1 注释
artifacts {
//archives javadocJar
archives sourcesJar
}
2 在工程根目录下的 build.gradle下面添加如下配置:
allprojects {
repositories {
google()
jcenter()
}
tasks.withType(Javadoc) {
options.addStringOption('Xdoclint:none', '-quiet')
options.addStringOption('encoding', 'UTF-8')
}
}
审核结果
1 登录 https://bintray.com
选择 Repository -> 上传的项目 --> 点击项目详情--->进入具体版本
找到 Add To jcenter,点击进入后,写一些该库的描述 就可以提交了。
注意 :右上角 包含一个Edit按钮,点击进入后,可以删除当前版本。
2 审核等待两三个小时 就会有结果,
通过或通不过都会有通知和邮件提示。
如上形式 说明审核通过了,就可以愉快的使用我们的jar了
此外还可以根据你上传的groupId,访问该网站
https://jcenter.bintray.com/你的groupId
例如https://jcenter.bintray.com/com/github/zuochunsheng/如能引用,则可以看到如下:image.png
依赖使用
1 Maven Info 含有jar依赖方式
image.png
在需要的工程 gradle dependencies中 添加如下
compile 'com.github.zuochunsheng:permission:0.3'
就能使用这个 6.0权限申请的库了。
简单介绍一下 ,如下 使用还挺简单,方便。
//工具类 使用方式
PermissionUtil.getInstance(this)
.requestRunTimePermission(new String[]{Manifest.permission.CALL_PHONE,
Manifest.permission.WRITE_EXTERNAL_STORAGE},
new IPermission() {
@Override
public void onGranted() {
Toast.makeText(MainActivity.this,"所有权限都同意了",Toast.LENGTH_SHORT).show();
}
@Override
public void onDenied(List<String> deniedPermission) {
for (String permission :deniedPermission) {
Toast.makeText(MainActivity.this,"被拒绝权限:" + permission,Toast.LENGTH_SHORT).show();
}
}
}
);
需要注意一点 ,同一个版本的包只能上传一次 ,除非把该版本删除 ,
需要更新 则需要增加版本号 ,上传成功后可以直接使用 不在需要 add to jcenter 等待审核,更新相当方便。由此 并不能保证更新版本的准确性,bintray更新就是, 只管上传成功 哪管是好是坏。
网友评论