发布项目到Jcenter

2019-08-27  本文已影响0人  做梦枯岛醒

使用别人的项目,一行gradle就可以用了,感觉非常爽,那么自己能不能造一些轮子给别人用呢?于是拿出我蹩脚的代码,写了一个库,发布到了jcenter库里,这样以后自己用和别人用都很方便,但是发布的过程可是踩足了坑,下面就来回顾一下吧!

1. 注册

首先我们访问网址:https://bintray.com,打开之后我们会看到如下页面。

首页

点击图上我标黄字体,并且打了蓝圈的按钮
最大字体提醒 【坑1】:

别点绿色按钮!

别点绿色按钮!

别点绿色按钮!

好奇么?告诉你,那是企业版,注册进去你后面的操作将不会再有效。
一定要注册个人版。

注册

注册的时候填入相应的名字,密码(名字不能跟别人重复)
最大字体提醒 【坑2】:

用Google邮箱,不能用QQ,163邮箱!

用Google邮箱,不能用QQ,163邮箱!

用Google邮箱,不能用QQ,163邮箱!

上网自行处理。

注册完我们就登录进来,然后我们新建一个库


首页

这里又要提醒了,我们必须建立一个叫maven的库,可以看到图片上我已经建立过了,这里我演示一下怎么建立,点击蓝色圈的地方。


新建
出现如上界面,这几个字段分别如下:

2. 准备项目

现在就要准备项目了。
这里有两种方法。
一是新建一个项目,然后在项目内新建一个module,在新建的module中写你的库,在app项目中写测试demo
另一个方式是新建一个项目,写完你的库,然后再新建一个项目导入你的库,然后在后者中写测试demo。

我都是习惯用第二种,我说一下步骤,举个栗子,我写一个叫PikaQ的库

  1. 新建项目PikaQ,然后写完其中的内容。

  2. 新建项目PikaQDemo,然后导入PikaQ,导入步骤如下。
    在Android Studio中,依次点击File->New->Import Module,打开如下页面。


    new

    选择我们刚才的PikaQ的路径,选择后点击右边的Import复选框,会让你修改模块名,我们要改成合适的名字(比如PikaQ),确定后即可导入。

  3. 修改PikaQ的Gradle,第一行的

apply plugin: 'com.android.application'

改成

apply plugin: 'com.android.library'

并且将版本配置里的第一行applicationId删掉

defaultConfig {
        applicationId "cn.surine.coursetableviewapp"
        minSdkVersion 21
        targetSdkVersion 26
        versionCode 1
     
         ……      
  
    }

结果如下:



画圈的地方是我修改后的,其中第二个划掉的我们是一会会写的,暂时不用管他。

  1. 在PikaQDemo的build.gradle(app)的dependencies{}中导入库(和导入依赖一样)
compile project(':你写的模块名')

现在应该就没啥问题,如果出现了文件名冲突,合并冲突等等的还需要修改文件名, 具体的可以遇到问题去查询一下。

  1. 可以在PikaQ的页面中调用使用PikaQ了,并且写好Demo给其他要用你的库的人用。

3.发布

发布之前,我们配置了项目,但是还有很多关于Jcenter的东西还没配置,我们打开build.gradle(Project),修改内容如下:

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    
    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.0.0'
        //下面是新添加的
        classpath 'com.novoda:bintray-release:0.8.0'

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

allprojects {
    repositories {
        google()
        jcenter()
    }

   //下面这个语句段是新添加的
    tasks.withType(Javadoc) {
        options.addStringOption('Xdoclint:none', '-quiet')
        options.addStringOption('encoding', 'UTF-8')
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

为了方便直观,我直接把所有代码贴上来了,我主要在默认的gradle文件中添加了2个内容(在注释上我都写了)
一个是(简化发布流程的库)

        classpath 'com.novoda:bintray-release:0.8.0'

另一个是(JavaDoc中文防止乱码)

  tasks.withType(Javadoc) {
        options.addStringOption('Xdoclint:none', '-quiet')
        options.addStringOption('encoding', 'UTF-8')
    }

这两个必须写,其他的一不一样不用管,以你默认的为主。
加好了之后同步,成功之后我们打开build.gradle(PikaQ)(就是你的库的gradle)

修改代码如下,下面我们看一下有哪些新添加的。
共三个地方。

apply plugin: 'com.android.library'
//新添加的
apply plugin: 'com.novoda.bintray-release'
android {
    compileSdkVersion 26
    defaultConfig {
        minSdkVersion 21
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
   //新添加的
    lintOptions {
        abortOnError false
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:26.1.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}

//新添加的
publish{
    userOrg = 'suriner'//bintray.com你的用户名
    groupId = 'cn.surine'//jcenter上的路径
    artifactId = 'CourseTableView'//项目名称
    publishVersion = '1.0.1'//版本号
    desc = 'Android-简洁的课程表控件'//描述,不重要
    website = 'https://github.com/surine/CourseTableView'
}

一是,第二行,我刚才提过不用管,现在该加上了。
二是lintOptions那一块,我加注释了。
三是最后的publish那一块。
除了这三块,其他的不一样也不用管。

我详细说下最后的一块。

publish{
    userOrg = 'suriner'     //bintray.com你的用户名
    groupId = 'cn.surine'      //jcenter上的路径
    artifactId = 'CourseTableView'   //项目名称
    publishVersion = '1.0.1'//版本号
    desc = 'Android-简洁的课程表控件'//描述,不重要
    website = 'https://github.com/surine/CourseTableView'
}

我注释写的很详细,userOrg是你刚才注册的用户的用户名,groupId是你的访问路径(一般跟你项目用的包名前缀一样就行了),下面是项目名,下面是版本号,以后要更新的话,注意向上加哦,再下面是描述,最后写一个github地址就行了(没来的急发布github的,先写上,然后再发,别告诉我你不知道github的项目链接长啥样。)

4. 真的要发布了

打开终端,AndroidStudio内置的那个



输入命令

gradlew clean build bintrayUpload  -PbintrayUser=你的用户名 -PbintrayKey=一个密钥 -PdryRun=false

上面有两个需要根据你自身情况写,一个是用户名,写你自己的注册用户名,另一个是密钥,在哪里呢?随我来看!

这是我们刚才的首页,右上角会有一个Edit Profile的按钮,点击它



点击最后一项 API Key:


会要求你输入密码,输入之后有一串值,这就是key


复制到终端填入即可。
回车
等待几分钟,当看到构建成功的绿色字样就是发布成功了,你可以在bintray的首页看到你刚才建立的maven库里面已经有你刚才上传的库了。

那么现在你需要Add to Jcenter才能行。
点开我们刚才上传的库,我这里拿我之前的库演示一下。
右上角,有个action按钮,点击里面会有add to jcenter,但是我这里没有,主要是因为我已经发过了,而且过审了。

点击后会弹窗,让你填申请理由,就随便填,其他的不用管提交即可。
但是很有很能会提示你的VCS地址(github地址)是404,这时候先去把整个项目发布到github吧,注意要是有仓库名字不对应的情况(比如你的仓库叫PikaQDemo,而Jcenter库叫PikaQ,在github的仓库设置页面改一下仓库的名字,改成与Maven库里的这个项目的VSC上面用的这个名字),好绕好绕。

改完了再提交,一般一会,几个小时就过审了。
现在你可以去完善你的Github文档了。

bye,下篇文章见。

上一篇下一篇

猜你喜欢

热点阅读