手把手教你发布自己的开源库到 Jcenter

android studio 相关说明 | 2018-07-30 21:57

本文由玉刚说写作平台提供写作赞助赞助金额:200元原作者:Mr.S版权声明:本文版权归微信公众号玉刚说所有,未经许可,不得以任何形式转载

想必大家都用过这样的或者那样的依赖吧。

compile 'com.android.support:support-v4:24.2.1'    compile 'com.google.code.gson:gson:2.7'    compile 'com.umeng.analytics:analytics:6.1.4'有谷歌自己家的,还有第三方的比如友盟等等,我们在用的时候会感到极度的方便。不用再像以前eclipse时期需要把library下载下来再进行处理了。只需要一行代码,就可以得到我们想要的。

有时候感觉这种依赖离我们自己很远,感觉这都是大神们的专属,感觉这些很是高级,所以会感觉很陌生。其实说白了,就和你上传到github一个效果,就是一个仓库,我们把我们的Library放上去就可以了。本质上来说是超级简单的。那我就手把手教你发布自己的开源库到Jcenter,让别人也用用咱们的依赖库,面试的时候也可以吹吹牛X。忽悠忽悠面试官。简单拿高薪,赢取白富美。(醒醒,醒醒,兄弟)

很多人都会有这几个疑惑:

什么是Maven

什么是Jcenter

上面这哥俩啥关系

什么是Maven

Maven 是专门用于构建和管理Java相关项目的工具。这里是官方介绍。Java世界中主要有三大构建工具:Ant、Maven和Gradle。经过这几年的发展,Ant差不多已经销声匿迹了、Maven也差不多也快黄了,咱们的Gradle现在可是如日中天。

什么是Jcenter

是由JFrog公司提供的Bintray中的Java仓库。它是当前世界上最大的Java和Android开源软件构件仓库。 所有内容都通过内容分发网络(CDN)使用加密https连接获取。JCenter是Goovy Grape内的默认仓库,Gradle内建支持(jcenter()仓库),非常易于在其他构建工具内进行配置。JCenter相比MavenCenter构件更多,性能也更好。

Maven和Jcenter啥关系

主要分为如下几个步骤。

首先我们要创建一个Library工程。然后给一个高大上的名字。比如FireworkView:

我这里这个Library的功能是给EditText 添加烟花效果(很简单的一个功能)。

前提:科学上网  咳咳咳!你懂得!

我们需要注册一个 Bintray账号。

官网(企业):个人:signup/oss

这里我们要说明一下,一定要点击个人这个链接,官网的注册链接只能注册企业用户,坑坑坑~~~

注册成功之后,我们要创建一个Maven仓库。

好到此为止,我们需要的必要材料都准备齐了。

1、builde.grade(项目根目录下)

buildscript {    repositories {        jcenter()    }//  dependencies表明项目依赖对应版本的Gradle构建工具    dependencies {       classpath 'com.android.tools.build:gradle:3.0.0'        //加上这两行        classpath 'com.github.dcendents:android-maven-gradle-plugin:2.1'        classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.7.3'    }}allprojects {    repositories {        jcenter()    }}至于最新版本号,大家可以去官网自行更改:

Jfrog Bintray:

2、builde.grade(Library目录下)

//  apply plugin表明应用的插件的类型,apply plugin: 'com.android.library'//添加这两行 apply plugin: 'com.github.dcendents.android-maven'apply plugin: 'com.jfrog.bintray'android {    compileSdkVersion 26    lintOptions {        abortOnError false    }    defaultConfig {        minSdkVersion 16        targetSdkVersion 26        versionCode 1        versionName "1.0"    }    buildTypes {        release {            minifyEnabled false            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'        }    }}dependencies {    implementation fileTree(dir: 'libs', include: ['*.jar'])}//项目主页def siteUrl = ''//项目的git地址def gitUrl = '.git'//发布到JCenter上的项目名字def libName = "FireworksView"//发布到组织名称名字,必须填写 //(com.ssy.fireworkstextview)这样写是不好的,项目名会拼上去//我手欠然后最后就是这样了,大家引以为戒//compile 'com.ssy.fireworkstextview:fireworkstextview:1.0.0'group = "com.ssy"// 版本号,下次更新是只需要更改版本号即可version = "1.0.0"//上面配置后上传至JCenter后的编译路径是这样的: compile 'me.songning.CircleView:library:1.0.0'//生成源文件task sourcesJar(type: Jar) {    from android.sourceSets.main.java.srcDirs    classifier = 'sources'}//生成Javadoc文档task javadoc(type: Javadoc) {    source = android.sourceSets.main.java.srcDirs    classpath += project.files(android.getBootClasspath().join(File.pathSeparator))}//文档打包成jartask javadocJar(type: Jar, dependsOn: javadoc) {    classifier = 'javadoc'    from javadoc.destinationDir}//拷贝javadoc文件task copyDoc(type: Copy) {    from "${buildDir}/docs/"    into "docs"}//上传到JCenter所需要的源码文件artifacts {    archives javadocJar    archives sourcesJar}// 配置maven库,生成POM.xml文件install {    repositories.mavenInstaller {        // This generates POM.xml with proper parameters        pom {            project {                packaging 'aar'                //项目描述,随意填                name 'Input text with fireworks.'                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 'baidianxiao'                        name 'ShiShaoYan'                        email ''                    }                }                scm {                    connection gitUrl                    developerConnection gitUrl                    url siteUrl                }            }        }    }}//上传到JCenterProperties properties = new Properties()properties.load(project.rootProject.file('local.properties').newDataInputStream())bintray {    user = properties.getProperty("bintray.user")    //读取 local.properties 文件里面的 bintray.user    key = properties.getProperty("bintray.apikey")   //读取 local.properties 文件里面的 bintray.apikey    configurations = ['archives']    pkg {        //注意:这里的repo值必须要和你创建Maven仓库的时候的名字一样        repo = "ssy"        //发布到JCenter上的项目名字        name = libName        //项目描述        desc = 'Input text with fireworks'        websiteUrl = siteUrl        vcsUrl = gitUrl        licenses = ["Apache-2.0"]        publish = true    }}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

将user和key写到这个文件之中。

ndk.dir=/Users/shishaoyan/Library/Android/sdk/ndk-bundlesdk.dir=/Users/shishaoyan/Library/Android/sdk##下面这两个bintray.apikey=93200ffcf836**********c8e78425e9cf9967abintray.user=baidianxiao通过如下步骤可以在bintray上面获取user和apikey:

1、打开Android Studio底部工具栏的Terminal,输入命令:

windows:gradlew install

mac:./gradlew install

2、上传到Bintray

windows:gradlew bintrayUpload

mac:./gradlew bintrayUpload

OK,完美,成功了吗?

再点进去

compile 'com.ssy:fireworkstextview:1.0.0'我们迫不及待的要加入我们的项目引用一下了,且慢,你还没有发布呢?看右边的Add to JCenter按钮,发布成功后才可以让大家来使用,直接点击Send发送就可以了。

//这两个都可以使用,但是存在命名规范的问题//前缀 com.ssy.fireworkstextview 多余的失误compile 'com.ssy.fireworkstextview:fireworkstextview:1.0.0'//Library命名单词错误的失误compile 'com.ssy:fireworkstextview:1.0.0'不知道大家有没有发现了我的一个错误:fireworkstextview这个单词是我创建项目的时候打错的,本来应该是FireworksView。

//发布到JCenter上的项目名字def libName = "FireworksView"坑总是意外操作的时候出现的,趟过坑之后就是一片坦途了。终于把步骤全部走完了。我们感觉貌似有点麻烦啊。能不能更简单点呢?答案是肯定的。

1、新建一个仓库

2、我们可以看到Import from GitHub (前提是你已经关联Github账号,按步骤来就可以了很简单)直接可以引用Public的项目,私有的是需要Bintray账号付费升级的。

3、我们选择我们的项目(我这里随便选了一个)

两种方法,一个复杂,一个简单,其实我是推荐大家使用Github这种方式,一来版本好控制,二来方便快捷。

其实就是这么简单,没有我们想的那么难。当然,大家肯定会遇到一些莫名其妙的坑,有坑的同学可以看看这篇文章Android 发布项目到 JCenter 遇到的各种坑。我遇到了java 10 .0.1 区分不出来版本号的问题,无奈只能JDK降级,换了8的,解决了问题。

VirtualAPK的Jcenter上传脚本:

参考文章一步一步教你在JCenter发布开源库:

— — — END — — —

近期文章回顾