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

来源:互联网 发布:voc0712数据集 编辑:程序博客网 时间:2024/04/29 06:45

转载请注明地址: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 propertiesProperties properties = new Properties()File projectPropertiesFile = project.file("project.properties")if(projectPropertiesFile.exists()){    properties.load(projectPropertiesFile.newDataInputStream())}// read propertiesdef projectName = properties.getProperty("project.name")def projectGroupId = properties.getProperty("project.groupId")def projectArtifactId = properties.getProperty("project.artifactId")def projectVersionName = android.defaultConfig.versionNamedef 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 parametersinstall {    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.jartask 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.jartask javadocJar(type: Jar, dependsOn: javadoc) {    classifier = 'javadoc'    from javadoc.destinationDir}artifacts {    archives javadocJar    archives sourcesJar}// javadoc configurationjavadoc {    options{        encoding "UTF-8"        charSet 'UTF-8'        author true        version projectVersionName        links "http://docs.oracle.com/javase/7/docs/api"        title javadocName    }}// bintray configurationbintray {    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

等待一段时间后提示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 遇到的各种坑

如有问题,欢迎指正~

原创粉丝点击