几分钟完成发布开源库到jCenter

转载请注明地址:http://blog.csdn.net/u012402124/article/details/78189675

在AndroidStudio中导入开源库一般就是一句话的事: compile 'xxx.xx.xx:xx'。 实际上我们也可以通过这种方式来导入自己的开源库,方便自己的使用。AndroidStudio执行compile 'xxx.xxx.xx:xx' 会先到jCenter上查找该开源库,所以需要我们把自己的开源库库发布到jCenter上。无法直接在jCenter上发布开源库,要通过它的托管商–Bintray(Bintray托管着很多仓库,jCenter只是其中一个)来完成。

把自己平时经常用到的一些代码写到一起上传到jCenter,以后不管做什么项目一句话就能导入,算来还是一个比较实用的功能。

总体步骤概览

1. 注册Bintray账号并创建仓库
2. 准备开源库
3. 修改gradle文件
4. 编译并上传至Bintray
5. linked to jCenter


1. 注册Bintray账号并创建仓库

使用Bintray当然要先注册个账号,注册地址

注册界面

我选的是Sign up with Github
注册登录之后应该是这个样子, 点击Add New Repository

这里写图片描述

这里写图片描述

  • Name:仓库的名字,写了之后不能再改,记住该名字,后面上传时会用到;
  • Type:仓库类型,选择Maven
  • License:开源协议,随便选一个就好;
  • Description:仓库描述,随便写;

点击Create 完成仓库创建,到此第一步完成。


2. 准备开源库

备好你想要上传的开源库,有两种方式:
1. AndroidStudio中new一个project,然后在project中new一个Module,类型选择Android Library
2. 直接修改当前Module的build.gradle(注意区分project的build.gradle文件和Module的build.gradle文件,前者在project根目录下,后者在对应的Module目录下)文件,将第一行的apply plugin: 'com.android.application 改为 apply plugin: com.android.library ,再把下面的applicationId "你的包名" 这一行删除(library是不允许有applicationId的);

两种方式最终结果都是得到了一个Android Library 类型的Module,在Module里添加你想要上传的开源库代码(我随便弄了一个,里面有个我常用到的加载App Icon的方法)。

到此第二步准备开源库完成


3. 修改gradle文件

还是那句话,注意区分project的build.gradle文件和Module的build.gradle文件,前者在project根目录下,后者在对应的Module目录下

  • 修改project的build.gradle文件,添加下面这两句话
    这里写图片描述
    Maven Github地址:对应里面的说明选择使用的版本号
    Bintray Github地址:对应里面的说明选择使用的版本号

  • 修改Module的build.gradle文件(这步有点乱,认真看)
    需要配置3个信息:

    1. Bintray账号配置和Developer信息,告诉AndroidStudio传到哪及开发者介绍;
    2. Project信息,开源库的介绍;
    3. 上传配置,对以上3个信息的调用以及其他一些配置;

为了看起来条理清晰,我把能独立的部分都独立到单独文件里了,便于阅读,以下分别说明。

1. Bintray账号信息和Developer信息
AndroidStudio创建项目时默认会在project根目录下创建local.properties 文件并添加到了.gitignore 文件中(如果没有请自行创建并添加至.gitignore 中),在其中添加以下内容:

这里写图片描述

  • bintray.user:Bintray注册的用户名
  • bintray.apikey:Bintray的API key
  • developer.id:开源社区的昵称(一般指github,或是使用的其他开源社区)
  • developer.name:姓名
  • developer.email:邮箱地址

查看API key方法:
这里写图片描述
这里写图片描述

2. Project信息配置

开源库Module目录下新建project.properties文件,添加以下内容:

这里写图片描述

  • project.name:开源库名字
  • project.groupId:项目组ID,写包名
  • project.artifaceId:项目ID,写Module名
  • project.packaging:打包方式,写aar
  • project.siteUrl:项目主页,没有就写github地址
  • project.gitUrl:项目仓库地址
  • javadoc.name:javadoc主页显示的名称,写项目名字就好

3. 上传配置

开源库Module目录下新建bintrayUpload.gradle文件,添加以下内容:(内容较多,直接贴源码了,阅读可能不太美观)

apply plugin: 'com.github.dcendents.android-maven'
apply plugin: 'com.jfrog.bintray'

// load properties
Properties properties = new Properties()

File projectPropertiesFile = project.file("project.properties")
if(projectPropertiesFile.exists()){
    properties.load(projectPropertiesFile.newDataInputStream())
}

// read properties
def projectName = properties.getProperty("project.name")
def projectGroupId = properties.getProperty("project.groupId")
def projectArtifactId = properties.getProperty("project.artifactId")
def projectVersionName = android.defaultConfig.versionName
def projectPackaging = properties.getProperty("project.packaging")
def projectSiteUrl = properties.getProperty("project.siteUrl")
def projectGitUrl = properties.getProperty("project.gitUrl")
def javadocName = properties.getProperty("javadoc.name")


File localPropertiesFile = project.rootProject.file("local.properties")
if(localPropertiesFile.exists()){
    properties.load(localPropertiesFile.newDataInputStream())
}
def developerId = properties.getProperty("developer.id")
def developerName = properties.getProperty("developer.name")
def developerEmail = properties.getProperty("developer.email")

def bintrayUser = properties.getProperty("bintray.user")
def bintrayApikey = properties.getProperty("bintray.apikey")


group = projectGroupId

// This generates POM.xml with proper parameters
install {
    repositories.mavenInstaller {
        pom {
            project {
                name projectName
                groupId projectGroupId
                artifactId projectArtifactId
                version projectVersionName
                packaging projectPackaging
                url projectSiteUrl
                licenses {
                    license {
                        name 'The Apache Software License, Version 2.0'
                        url 'http://www.apache.org/licenses/LICENSE-2.0.txt'
                    }
                }
                developers {
                    developer {
                        id developerId
                        name developerName
                        email developerEmail
                    }
                }
                scm {
                    connection projectGitUrl
                    developerConnection projectGitUrl
                    url projectSiteUrl
                }
            }
        }
    }
}

// This generates sources.jar
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))
}

// This generates javadoc.jar
task javadocJar(type: Jar, dependsOn: javadoc) {
    classifier = 'javadoc'
    from javadoc.destinationDir
}

artifacts {
    archives javadocJar
    archives sourcesJar
}

// javadoc configuration
javadoc {
    options{
        encoding "UTF-8"
        charSet 'UTF-8'
        author true
        version projectVersionName
        links "http://docs.oracle.com/javase/7/docs/api"
        title javadocName
    }
}

// bintray configuration
bintray {
    user = bintrayUser
    key = bintrayApikey
    configurations = ['archives']
    pkg {
        repo = "maven"
        name = projectName
        websiteUrl = projectSiteUrl
        vcsUrl = projectGitUrl
        licenses = ["Apache-2.0"]
        publish = true
    }
}

上传开源库的配置基本都是这样,不用改动什么,值得注意的是bintray 节点的repo 指的是第一步中创建的Maven仓库的名字,这两个名字要一致;此外开源库的版本号默认取的是project的版本号def projectVersionName = android.defaultConfig.versionName,如果有需要也可把这两个属性抽取到project.properties 文件中,便于管理。

最后一个操作,在开源库Modulebuild.gradle 文件末尾中添加如下代码apply from: 'bintrayUpload.gradle' 来调用配置文件。

至此第3步配置gradle文件完成。


4. 编译并上传至Bintray

  • 编译:打开AndroidStudio的Terminal窗口(一般在底部,没有的话点击顶部工具栏->View->Tools Windows->Terminal),输入命令并回车:

gradlew install

install若因为javadoc失败,则可以在project的build.gradle最后加一行代码:
tasks.getByPath(":app:javadoc").enabled = false;
等待一段时间后提示BUILD SUCCESSFUL,表示成功。

  • 上传,同样在Terminal中输入以下命令并回车:

gradlew bintrayUpload

等待一段时间后提示BUILD SUCCESSFUL,表示成功。

至此第4步编译并上传完成。


5. Linked to jCenter

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

按照上面4步,发送include request之后等待Bintray团队审核,审核完成后会收到邮件和站内信。

这里写图片描述

至此第5步Linked to jCenter完成。


如果遇到问题,请参考这两篇文章

  1. Android 项目打包到 JCenter 的坑
  2. Android 发布项目到 JCenter 遇到的各种坑
如有问题,欢迎指正~
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值