linux gradle仓库位置,如何在Android Studio中使用Gradle发布项目至Jcenter仓库

简述

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

Library的转换和引用

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

在Android Studio中转换成Library一般有两种方法。

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

06183e10fbe8695a3a891cb2f4ccaa53.png

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

在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帐号和密码。

//一般的为了保密和安全性,在项目的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 //是否发布

}

}

执行打包并发布

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

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

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

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

f1f277c931642d5312e69cee45883671.png

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

结束语

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

Gradle 的详细介绍:请点这里

Gradle 的下载地址:请点这里

0b1331709591d260c1c78e86d0c51c18.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值