Android 发布开源库到 JitPack、jCenter

作者: SheHuan | 来源:发表于2017-01-17 21:50 被阅读1420次

    JitPack、jCenter是我们常用的发布Android开源库的网站,发布成功后就可以在Android Studio中通过Gradle方便的引用到项目中了,相比Eclipse时代要方便的多,对于使用者确实简单了,但对于发布者来说可能还略有坎坷,这里记录下发布的过程,以及遇到的坑。

    发布到JitPack

    一、

    准备好项目以及要发布的开源库,并先将其上传到github。



    有一点需要注意,上传到JitPack的开源库默认使用项目的名称,而不是要发布的开源库的名称,所以尽量给项目起一个比较优雅的名字(这里我们使用同名)。

    二、

    这里我们要用到一个的插件android-maven-gradle-plugin

    1、、在项目的build.gradle添加classpath 'com.github.dcendents:android-maven-gradle-plugin:1.5',如下图:


    2、在要上传的library的build.gralde文件添加如下代码:
    // JitPack Maven
    apply plugin: 'com.github.dcendents.android-maven'
    // Your Group
    group='com.github.username'
    

    其中username需要替换为你在github上的用户名
    如下图所示:



    记得将修改后的代码提交到github哦。

    三、

    打开项目的github主页,创建一个Release或Tag,可按如下步骤:
    1、


    2、

    3、

    4、

    四、

    1、将项目的仓库提交到JitPack:https://jitpack.io/


    2、版本提交完成后,JitPack会自动生成引用该library的配置信息:

    最后就可以愉快的在项目中使用了。

    发布到jCenter

    一、

    准备好要发布的library:


    二、

    1、jCenter属于bintray旗下的一个仓库,所以先要注册账号哦,https://bintray.com
    2、按照如下步骤得到API Key,在上传library的时候需要用到。


    3、创建一个名字为maven的Repository

    4、在maven仓库中创建一个package,注意package的名字和要发布的library的名字相同

    三、

    关于上传可以使用gradle-bintray-plugin插件,但是略复杂,所以我们采用bintray-release
    1、在项目的build.gradle添加bintray-release的classpath:classpath 'com.novoda:bintray-release:0.3.4',如下图:


    2、在要上传的library的build.gralde文件添加如下代码:
    apply plugin: 'com.android.library'
    //新添加
    apply plugin: 'com.novoda.bintray-release'
    
    android {
        compileSdkVersion 24
        buildToolsVersion "24.0.3"
    
        defaultConfig {
            minSdkVersion 10
            targetSdkVersion 24
            versionCode 1
            versionName "1.0"
        }
        buildTypes {
            release {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            }
        }
    }
    
    dependencies {
        compile fileTree(dir: 'libs', include: ['*.jar'])
        compile 'com.android.support:appcompat-v7:24.2.1'
        testCompile 'junit:junit:4.12'
        compile 'com.squareup.okhttp3:okhttp:3.5.0'
    }
    
    //新添加
    publish {
        userOrg = 'othershe' //在https://bintray.com上注册的用户名
        groupId = 'com.othershe' //jCenter上的路径
        artifactId = 'dutil' //要上传的library名称(和二、4中的package相同)
        publishVersion = '1.0.0' //library的版本号
        desc = 'A download library,that is based on okhttp' //library的简单描述
        website = 'https://github.com/Othershe/DUtil' //library的开源地址,例如在github上的地址
    }
    

    到这里必须的代码配置就完了,主要的注释都有了,按照上边的编写即可。

    四、

    1、可以在AndroidStudio的Terminal中执行命令:gradlew clean build bintrayUpload -PbintrayUser=BINTRAY_USERNAME -PbintrayKey=BINTRAY_KEY -PdryRun=false
    其中PbintrayUser代表注册的用户名,PbintrayKey就是上边得到的API Key,PdryRun是一个配置参数,当为true的时候,会运行所有的环节,但是不会上传,如下图:


    2、不出意外的话等待2到3分钟即可上传成功。但是呢这一步往往有许多的坑呀,这里简单的记录下:
    • 坑1:



      这个好处理,主要是因为lint检查时报错,因此中断了整个编译过程,在要上传的library的build.gralde文件的android标签里添加如下代码即可。

    android {
        lintOptions {
            abortOnError false
        }
    }
    
    • 坑2:



      网上大部分办法都说在项目的build.gradle文件的allprojects 标签里添加如下代码:

    allprojects {
        tasks.withType(Javadoc) {
            options {
                encoding "UTF-8"
                charSet 'UTF-8'
                links "http://docs.oracle.com/javase/7/docs/api"
            }
        }
    }
    

    之前上传另外一个项目确实可行,但这次确无效了,最后找到了如下方案,在项目的build.gradle文件的allprojects 标签里添加如下代码:

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

    解决了遇到的问题,再执行上传命令,终于成功了:


    五、

    上传成功后就可以在maven仓库中看到我们的library:



    点进去则可以看到详情:



    此时我们还不能在项目中引用该库,要将其添加到jCenter,点击上图右下角的按钮:

    填写一些对library的描述,然后发送。等待数小时审核通过后会邮件通知你的,之后就可以在项目中引用了:


    到这里两种发布方式就介绍完了,布到jCenter的步骤虽然也不算复杂,但很少能一次发布成功,总会被一些问题折腾半天。相比之下发布到JitPack要简单的多,最重要的是省时省力,没有那么多的问题困扰,真是给力呀!如果你也有发布开源库的需求,选择哪种方式相信你也有答案了。

    相关文章

      网友评论

      本文标题:Android 发布开源库到 JitPack、jCenter

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