美文网首页
发布项目到Jcenter

发布项目到Jcenter

作者: 做梦枯岛醒 | 来源:发表于2019-08-27 15:52 被阅读0次

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

    1. 注册

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

    首页

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

    别点绿色按钮!

    别点绿色按钮!

    别点绿色按钮!

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

    注册

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

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

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

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

    上网自行处理。

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


    首页

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


    新建
    出现如上界面,这几个字段分别如下:
    • Name : maven(注意必须要这么写)
    • Type:选择maven
    • Default Licenses:选Apache2.0即可
    • 最后一项是描述,随便写。
      提交即可。

    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,下篇文章见。

    相关文章

      网友评论

          本文标题:发布项目到Jcenter

          本文链接:https://www.haomeiwen.com/subject/qvveectx.html