简述

目前非常流行将开源库上传至Jcenter仓库中,使用起来非常方便且易于维护,特别是在Android Studio环境中,只需几步配置就可以轻松实现上传和发布。

Library的转换和引用

博主的一个开源项目CustomSwipeListview之前是在Ecplise环境下进行开发且把控件代码和Demo写在了一个Project中,所以在发布开源库前首先是将原项目中的Demo代码提取出来单独新建一个项目,并将原项目转换为一个Library。

  1. 在Android Studio中转换成Library一般有两种方法。
    第一种方法是在Android Studio新建一个Project后,在该Project中再新建一个Library Module,方法很简单,就是在新建Module时选中Android Library即可,详见下图蓝色区域。





    另一种方法是,在Android Studio中新建一个Project后会默认创建一个app module,我们打开这个app module 的bulid.gradle文件会发现它的默认属性是application,所以我们需要将文件中的: apply plugin: 'com.android.application' 替换为apply plugin: 'com.android.library',并把defaultConfig中的applicationId 删除即可。

  2. 在Project转换Library时需要特别注意的是Library的R.java中的资源ID不是常量。 如果代码中你在switch-case语句中使用到了相关的资源ID属性,例如:

    @Override
    public void onClick(View v) {
    switch (v.getId()) {
    case R.id.undo_dialog_btn:
    if (mUndoActionListener != null)
    mUndoActionListener.executeUndoAction();
    break;
    default:
    break;
    }
    dismiss();
    }

    这是Android Studio就会报错,因为case分支后面跟的参数必须是常数,所以我们暂且只能使用if-else语句来完成相应的逻辑判断操作,例如:

    @Override
    public void onClick(View v) {
    if(v.getId()==R.id.undo_dialog_btn){
    if (mUndoActionListener != null){
    mUndoActionListener.executeUndoAction();
    }
    }
    dismiss();
    }

添加全局插件

为了能使得项目能自动的打包发布至jcenter仓库中,我们首先需要在Project的bulid.gradle文件中添加两个插件依赖,具体如下:

dependencies {
classpath 'com.android.tools.build:gradle:1.0.1'
//自动化maven打包插件
classpath 'com.github.dcendents:android-maven-plugin:1.2'
//自动上传至Bintray平台插件
classpath "com.jfrog.bintray.gradle:gradle-bintray-plugin:1.0"
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}

Library配置

这里的Library即是你需要发布的项目Module。

apply plugin: 'com.android.library'
apply plugin: 'com.github.dcendents.android-maven'
apply plugin: 'com.jfrog.bintray' version = "1.0.0" android {
compileSdkVersion 21
buildToolsVersion "21.1.2"
resourcePrefix "customswipelistview_" //这个没搞清什么作用,暂时随意填。 defaultConfig {
minSdkVersion 16
targetSdkVersion 21
versionCode 1
versionName version
} buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
} def siteUrl = "https://github.com/xyczero/custom-swipelistview"
def gitUrl = "https://github.com/xyczero/custom-swipelistview.git" //填写唯一包名
group = "com.xyczero" install {
repositories.mavenInstaller {
// This generates POM.xml with proper paramters
pom {
project {
packaging 'aar' //添加项目描述
name 'CustomSwipeListview for Android'
url siteUrl //设置开源证书信息
licenses {
license {
name 'The Apache Software License, Version 2.0'
url 'http://www.apache.org/licenses/LICENSE-2.0.txt'
}
}
//添加开发者信息
developers {
developer {
id 'xyczero'
name 'xiayuncheng'
email 'xyczero@sina.com'
}
} scm {
connection gitUrl
developerConnection gitUrl
url siteUrl
}
}
}
}
} dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:21.0.3'
} task sourcesJar(type: Jar) {
from android.sourceSets.main.java.srcDirs
classifier = 'sources'
} 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()
properties.load(project.rootProject.file('local.properties').newDataInputStream()) //配置上传Bintray相关信息
bintray {
//读取Bintray帐号和apiKey。
//一般的为了保密和安全性,在项目的local.properties文件中添加两行句话即可:
//bintray.user=username
//bintray.apikey=apikey
user = properties.getProperty("bintray.user")
key = properties.getProperty("bintray.apikey") configurations = ['archives'] pkg {
repo = "maven"//上传的中央仓库名称
name = "CustomSwipeListview"//上传的项目的名字
websiteUrl = siteUrl
vcsUrl = gitUrl
licenses = ["Apache-2.0"]
publish = true //是否发布
}
}

执行打包并发布

  1. 上述文件配置完成后,先Rebuild一下项目,然后在AS的Terminal运行 gradlew install 命令。

    此时你会发现在项目的.idea文件夹下有一个gradle.xml文件,此文件就是该项目相应的gradle格式配置,同时在所要发布的xxx-module/build/outputs/aar文件夹下有已生成aar文件以及在xxx-module/build/poms文件夹下的pom-default.xml(对应maven格式)。

  2. 在完成上述步骤1后,所有必须的文件已在本地生成完毕,然后接着执行 gradlew bintrayUpload 命令上将项目上传到Bintray平台上。

  3. 等待上传结束后,你可以在Bintray上找到你发布的项目,此时你只需要发送一个Request给管理员并耐心等待审批通过即可(博主当时是凌晨发送请求,早上8点多收到的审批通过邮件)。





    至于找到发送请求的途径有很多,可以进入该传送门点击include package输入你的项目名字并点击匹配到的项目,也可以直接在首页搜索你的项目名字并在右下角的Link To点击加入jcenter的申请。

结束语

如果看完上述教程有什么不明白之处欢迎留言讨论。

相关文章:使用Gradle发布项目到JCenter仓库

作者:XycZero

查看原文:http://www.xyczero.com/blog/article/19/.

如何在Android Studio中使用Gradle发布项目至Jcenter仓库的更多相关文章

  1. 使用Gradle发布项目到JCenter仓库 (转载)

    原文:使用Gradle发布项目到JCenter仓库 这篇文章介绍通过Gradle把开源项目发布到公共仓库JCenter中,方便你我他的事情,我们都是很懒的嘛.JCenter现在是Android Stu ...

  2. 如何在Android Studio中指定NDK位置?

    如何在Android Studio中指定NDK位置? 问题描述 NDK已经手工下载解包在本地: D:\Portable\android-ndk-r13b 每次创建支持C++项目时,都提示NDK没配置, ...

  3. 如何在Android Studio中添加注释模板信息?

    如何在Android Studio中添加注释模板信息? 在开发程序的时候,我们一般都会给文件自动添加上一些关于文件的注释信息,比如开发者的名字,开发的时间,开发者的联系方式等等.那么在android ...

  4. Android Studio中使用Gradle打包

    首先要注意一点,Android Studio中把proguard.txt已经命名为proguard-rules.pro,由此可见,採用Gradle打包,混淆规则文件的名称是不重要的.能够自己随便命名. ...

  5. [Android Tips] 30.如何在 Android Studio 中一次性格式化所有代码

    在目录上面右击,有 Reformat Code Ctrl + Alt + L 参考 如何在IntelliJ IDEA或Android Studio中一次性格式化所有代码?

  6. Android Studio中由于gradle插件版本和gradle版本对应关系导致的编译失败的问题

    今天在Android Studio中导入新项目,import之后编译报错,报错信息基本都是和版本相关,查询gradle版本相关知识,了解到gradle插件版本和gradle版本有相应的匹配关系,对应如 ...

  7. 如何在android studio中cordova的混合开发

    基于Android Studio 中Cordova的开发 cordova简介 Cordova的前身是PhoneGap 官网: (http://cordova.io) Cordova应是运行在客户端本地 ...

  8. Android Studio中利用JavaDoc生成项目API文档

    1. 在Android Studio中的菜单项中点击Generate JavaDoc

  9. 在 Android studio 中 配置Gradle 做到 “根据命令行提示符生成指定versionCode, versionName,指定apk的打包输出路径”

    需求: 1. 使用 Android studio ,使用 gradle 进行构建 2. 在实际开发中,我们需要使用jenkins进行打包.就需要配置我们的 gradle 脚本以支持参数化的方式. 3. ...

随机推荐

  1. 324. Wiggle Sort II

    这个题真是做得我想打人了.我生起气来连自己都打. 一开始quick select没啥可说的.但是in place把老命拼了都没想出来.. 看网上的答案是3 partition,MAP式子一看就由衷地反 ...

  2. 365. Water and Jug Problem

    莫名奇妙找了个奇怪的规律. 每次用大的减小的,然后差值和小的再减,减减减减减减到差值=0为止.(较小的数 和 差值 相等为止,这么说更确切) 然后看能不能整除就行了. 有些特殊情况. 看答案是用GCD ...

  3. c#语言基础编程-转义符

    C#转义字符: 引言 为了在程序中能够控制字符的输出以及区分开双引号和单引号(双引号和单引号在程序中标示里面的内容为字符串和字符),所以用一种特殊的字符常量:是·以反斜线"\"开头 ...

  4. 获取文件路径 分类: WinForm 2014-07-25 14:27 103人阅读 评论(0) 收藏

    //可获得当前执行的exe的文件名. string str1 =Process.GetCurrentProcess().MainModule.FileName; //获取和设置当前目录(即该进程从中启 ...

  5. x264 编码器选项分析 (x264 Codec Strong and Weak Points) 1

    文章文件夹: x264 编码器选项分析 (x264 Codec Strong and Weak Points) 1 x264 编码器选项分析 (x264 Codec Strong and Weak P ...

  6. java中经常使用的日期格式化(全)

    import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; imp ...

  7. android 41 Environment

    assets通常存储音频视频文件,但不要太大. Environment可以获取sd卡的相关信息,sd卡的根路径:/storage/sdcard activity.java package com.sx ...

  8. iOS-C文件添加到iOS项目中,运行报错

    iOS-C文件添加到iOS项目中,运行报错 问题: 往项目中添加一个空的c文件, 编译运行; 出现2,30个编译错误. 原因: 由于在项目中添加了Pch文件,在文件中所有代码还没有开始运行之前, pc ...

  9. (tomcat访问不了的两种解决方法)Bad Request(Invalid Hostname)

    显示这个页面的时候一般有几中解决方法: 第一种就是如下图所示的方法: 具体步骤是: 1.也就是左下角win的“运行”中输入cmd进入doc窗口中 2.输入代码:netstat -ano 3.找到占用8 ...

  10. CSS的clip-path(转)

    基本概念 clip-path从单词"clip path"的直译上来说,表示的就是裁剪路径.既然有裁剪,咱们就来了解这里面的几个简单的概念. 裁剪就是从某样东西剪切一块.比如说,我们 ...