最新 Android studio 发布Library库到JCenter服务器

前言:

在经历了从eclipse到Android studio过渡之后,引入第三方库的操作也变得相对简单起来,再也不是自己去下载相应的jar,而只需要在build.gradle一句简单的配置信息即可。如下:

compile 'com.voctex.banner:banner:1.0.7'

其实Android studio在配置了这句信息之后,在build的时候会去jCenter服务器去下载相应的库到本地引用,而不需要我们自己去下载包再引用,这么简单的一句代码就帮我们做了很多事了。

我们接下来就是要把我们自己的library库上传到jCenter服务器上,然后让别人也可以方便引用。

准备工作:

首先我们要先对gradle有一定的了解,还有Android studio这个工具有一定的熟悉,这样操作起来才不会老是觉得问题一大堆,而是简简单单的直接成功,基本功还是需要的。以下我会以我的一个项目作为栗子。

首先新建个app项目,默认有个app模块,再新建个module,这个module作为library的模块,如下图

image

然后需要注册一个可以国际通用的邮箱,在我测试之后,QQ邮箱(@qq)和网易邮箱(@163)都不行,其他没测过,有人说要注册谷歌邮箱(@gmail)就行了,可谷歌在天朝都被墙了,每次用都要翻墙,也不是最好的选择,然后试了一下阿里邮箱(@aliyun),发现可以。接下来就要用到这个邮箱了。

邮箱注册完毕之后就要注册一个Bintray账号了,在这里会有一个坑,特别注意,直接搜Bintray进入官网,然后注册的时候会是注册组织的账号,而且还是试用一个月的期限,这里要通过以下链接去注册一个个人账号:

https://bintray.com/signup/oss

创建仓库

进入了Bintray之后,因为是个人账号,这时候你可以自己建立一个组织,或者直接忽略这操作,因为你是个人开发者,我就直接忽略了。

创建仓库
————————————图片分割线——————————
image

在上面一系列操作之后,就会得到一个空的仓库,有了仓库就可以上传我们的项目上去了,当然,这是下一步要操作的内容。

配置gradle

需要配置三个文件,分别是项目根目录下的build.gradle文件,library模块根目录下的build.gradle文件,以及项目根目录下的local.properties。

1、项目根目录下的build.gradle

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.2.3'
        //加入以下两句配置
        classpath 'com.github.dcendents:android-maven-gradle-plugin:1.5'
        classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.7.3'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        jcenter()
    }
}

2、library模块下的build.gradle的配置,这一步的配置信息有点多,基本只要注意那些加了注释的就行了,然后改成你自己的信息。

apply plugin: 'com.android.library'
//插件
apply plugin: 'com.github.dcendents.android-maven'
apply plugin: 'com.jfrog.bintray'



def siteUrl = 'https://github.com/voctex/VtBanner'    // Git项目主页
def gitUrl = 'https://github.com/voctex/VtBanner.git' // Git仓库url

Properties properties = new Properties()
properties.load(project.rootProject.file('local.properties').newDataInputStream())

version = "1.0.0" //发布版本号
group = "com.voctex.banner" //最终引用形式,如compile 'com.voctex.banner:banner:1.0.0',其中banner在后面配置

android {
    compileSdkVersion 24
    buildToolsVersion "24.0.2"
    resourcePrefix "vt_" // 随意命名

    defaultConfig {
        minSdkVersion 14
        targetSdkVersion 24
        versionCode 1
        versionName "1.0"

    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.android.support:appcompat-v7:24.2.1'
    compile 'com.github.bumptech.glide:glide:3.7.0'
}

bintray {
    user = properties.getProperty("bintray.user")
    key = properties.getProperty("bintray.apikey")
    pkg {
        repo = 'maven'//自己创建的仓库名字,要跟Bintray上创建的仓库一样
        name = 'vtbanner'//上传到JCenter的名字,最终引用的名字
        websiteUrl = siteUrl
        vcsUrl = gitUrl //这个好像是必须的,我尝试过传空字符串好像是不成功的
        licenses = ['MIT']//不能随便写,只能是仓库创建时选择的license type
//        userOrg = 'mumusalibrary' //自己创建的organization名称
        publish = true // 是否是公开项目,公开别人可以引用

        version {
            name = '1.0.0'//版本名,上面好像已经有配置了
            desc = 'voctex open library.'//描述,自己定义
            released  = new Date()
            vcsTag = 'v1.0.0'
            attributes = ['gradle-plugin': 'com.use.less:com.use.less.gradle:gradle-useless-plugin']
        }
    }
    configurations = ['archives']
}


install {
    repositories.mavenInstaller {
        // This generates POM.xml with proper parameters
        pom {
            project {
                packaging 'aar'
                // Add your description here
                name 'Android Banner'//项目名
                description 'open library.'//项目描述
                url siteUrl
                // Set your license
                licenses {
                    license {
                        name 'MIT' //和之前自己定义的协议一致
                        url 'https://raw.githubusercontent.com/minggo620/Pluto-Android/master/LICENSE'
                    }
                }
                developers {
                    developer {
                        id 'voctex'        //填写bintray或者github的用户名,这里我填的是我的github名
                        name 'jreproxy'         //姓名,这里我填的是Bintray上的昵称
                        email 'voctex@aliyun.com'//邮箱
                    }
                }
                scm {
                    connection gitUrl
                    developerConnection gitUrl
                    url siteUrl
                }
            }
        }
    }
}
task sourcesJar(type: Jar) {
    from android.sourceSets.main.java.srcDirs
    classifier = 'sources'
}
task javadoc(type: Javadoc) {
    failOnError false //必须添加以免出错
    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
}

javadoc {
    options{
        //如果你的项目里面有中文注释的话,必须将格式设置为UTF-8,不然会出现乱码
        encoding "UTF-8"
        charSet 'UTF-8'
        author true
        version true
        links "http://docs.oracle.com/javase/7/docs/api"
    }
}

3、配置项目根目录下面的local.properties信息

sdk.dir=/Users/yidont/Library/Android/sdk
bintray.user=jreproxy(Bintray的名字)
bintray.apikey=xxx(这里需要填写你的key,需要去bintray取获取,如下图)

image

执行gradle命令

这里先说明一下windows系统和mac系统执行命令的些许区别,比如

(windows)
gradlew -v
(mac)
./gradlew -v

因为我用的mac电脑,所以其他人要注意区别。

还有一个要注意的点就是,要对单独模块进行编译,如果在执行命令的时候不顺便指定模块的话,每一次都会默认执行所有模块,所以这里要养成一个好习惯。要对单独模块进行操作的做法就是加入模块名,如下

(所有模块)
./gradlew assembleRelease
(单独模块)
./gradlew :app:assembleRelease

然后在Android studio下面的Terminal敲gradle命令,先执行

./gradlew :banner:install

安装一些需要的东西,然后就把该项目上传到Bintray中的仓库里,执行

./gradlew :banner:bintrayUpload

然后耐心等待,等出现了BUILD SUCCESSFUL字眼就说明上传成功了,这时候你就可以去你的Bintray上查看你的项目了,进入项目之后还有最后一步需要你操作,就是add to jCenter,然后等待审核,有人十分钟就搞定了,有人审核很慢,我一般都是等了上半天才被审核成功。

这里写图片描述
————————————图片分割线——————————
这里写图片描述
————————————图片分割线——————————
这里写图片描述

最后

到这里就告一段落了,基本都很简单,这么简单就可以把自己封装的库上传到jCenter中,瞬间有点高大上的样子。当然,我只是简单的分享一下我的经验而已,方便别人也可以简单学会。

QQ:361561789
有事可直接加Q联系

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值