发布 Android Library 到 JCenter 从入门到放弃

来源:互联网 发布:家装网络销售好做吗 编辑:程序博客网 时间:2024/05/18 09:47

最近想倒腾一个小小的 UIKit 到 JCenter,为开源社区贡献一点绵薄之力,于是就有了一系列惨无人道的踩坑史。好,接下来,直奔主题,以下是发布流程。

发布到 JCenter

发布到 JCenter 需要以下几个步骤。

注册 Bintray 账号并创建仓库

Bintray 是 JCenter 库的运营商,首先要去这个网站注册一下账号 https://bintray.com/signup/oss

网上大多数教程会把你带到注册企业账号的地方,这是第一个坑。

注册完后创建一个仓库:

填写一下必填项即可:


在 Type 处选择 Maven。接下来创建一个 Package:


注意下 name 这一栏


填上你要发布的 Library 项目的名字。完成之后大概是这样的:

插件配置

网上有很多教程是用 android-maven-gradle 插件来发布 Library,甚至是官方推荐的 gradle-bintray-plugin,其实这两个配置都比较复杂。下面要推荐的是 bintray-release 插件,配置非常简单。首先在项目的 build.gradle 加上:

buildscript {    repositories {        jcenter()    }    dependencies {        classpath 'com.android.tools.build:gradle:2.2.3'        classpath 'com.novoda:bintray-release:0.4.0'        // NOTE: Do not place your application dependencies here; they belong        // in the individual module build.gradle files    }}

然后打开 Library 的 build.gradle,加入:

apply plugin: 'com.android.library'apply plugin: 'com.novoda.bintray-release'android {    compileSdkVersion 25    buildToolsVersion "25.0.0"    defaultConfig {        minSdkVersion 16        targetSdkVersion 25        versionCode 1        versionName "1.0"        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"    }    lintOptions {        abortOnError false    }}publish {    userOrg = 'KenChoi1992' // 改成你在 bintray 上注册的用户名    groupId = 'cn.jiguang.imui' // 改成你的包名(影响别人引用的第一段)    artifactId = 'chatinput' // 改成你的 Library 名字(影响别人引用的第二段)    publishVersion = '0.0.1' // 版本号 (影响别人引用的第三段)    desc = 'im uikit'    website = 'https://github.com/jpush/imui.git'}

完成了上面的配置之后,别人要引用你的 Library,就可以这样:

// 由 groupId,artifcatId,version 三段组成compile 'cn.jiguang.imui:chatinput:0.0.1'

检查代理

在执行下一步之前,请确保 Android Studio 正确的配置了代理,因为大天朝要科学上网,你懂的。打开 Android Studio 的配置菜单:


点上面的 Check connection,在弹出的窗口输入一个墙外网站:


然后点击 OK,如果成功了,是这样的:

运行任务

最后在 Android Studio 的终端运行:

./gradlew clean build bintrayUpload -PbintrayUser=Username -PbintrayKey=ApiKey -PdryRun=false

将上面的用户名改成自己的,ApiKey 是从 bintray 网站上得到的:
点击 Edit Profile,进入编辑资料界面:

然后点击 API Key 即可查看:

如果执行完上述命令后,成功了,那么恭喜你!你顺利地发布了自己的 Library,在别人的项目中,只要用一行代码就可以引用你的库,实在是高(装)端(逼)大(必)气(备),上档次!请注意,如果失败了,前方高能!非战斗人员撤退!

如果你失败了!请不要惊讶,因为我也失败了!!失败的原因有很多,但是尝试了许多解决方案之后,终于!……我放弃了!!而且尝试了上述的三个插件都失败了!!!所以我并不是标题党……但是!尽管如此,如果轻易放弃,不是吾辈所为!所以我决定手!动!上!传!

说是手动上传,其实也用到了一个工具 release-android-library,在 Library 的 build.gradle 中配置一下:

apply plugin: 'com.android.library'ext {    PUBLISH_GROUP_ID = 'cn.jiguang.imui'    PUBLISH_ARTIFACT_ID = 'chatinput'    PUBLISH_VERSION = '0.0.1'}android {    compileSdkVersion 25    buildToolsVersion "25.0.0"    defaultConfig {        minSdkVersion 16        targetSdkVersion 25        versionCode 1        versionName "1.0"        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"    }    buildTypes {        release {            minifyEnabled false            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'        }    }    lintOptions {        abortOnError false    }}dependencies {    compile fileTree(include: ['*.jar'], dir: 'libs')    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {        exclude group: 'com.android.support', module: 'support-annotations'    })    compile 'com.android.support:appcompat-v7:25.1.1'    compile 'com.android.support:design:25.1.1'    compile 'com.google.android:flexbox:0.2.5'    compile 'com.github.bumptech.glide:glide:3.7.0'    compile 'com.android.support:support-v4:25.1.1'    testCompile 'junit:junit:4.12'}apply from: 'https://raw.githubusercontent.com/blundell/release-android-library/master/android-release-aar.gradle'

主要是加入 ext 和 apply from 这两个相关内容即可。然后在终端中执行命令:

./gradlew clean build generateRelease

完成后,在 build 文件夹下就会生成一个压缩文件:

回到 bintray 的 package 下,点击 New Version:

然后创建一个 version,名字和你要发布的版本号一致,然后点击确定,接着点击上传文件按钮:

在页面中上传刚才的压缩文件:

请注意上面红色方框,一!定!要!勾选这个 Checkbox,否则会发生奇妙的错误,别问我怎么知道的!

然后点击 Save Changes,接着点击页面中的 Publish 按钮,这样就发布了!

接着回到 Package,将 Library 发布到 JCenter。

点击 Add to JCenter,点击后输入一下评论,然后点击 OK 即可,等待几个小时后的审核就可以了。到此为止,我们已经完成了发布!但是!你以为这就完了?接下来介绍一个快捷,简单到令人发指的开源仓库:JitPack

发布到 JitPack

打开 JitPack 网站,使用 GitHub 账号登录即可,很方便,只需要简单的两步即可发布到 JitPack。
- 在 GitHub 上发布一个版本

  • 把 GitHub 的仓库地址粘贴到 JitPack,然后点击 Look up 按钮:

然后在从下面的列表中选择一个版本,然后点击 Get it 即可!接下来,别人只需要在项目的 build.gradle 中加入:

    allprojects {        repositories {            ...            maven { url 'https://jitpack.io' }        }    }

然后在 Module 的 build.gradle 中引用即可:

    dependencies {        compile 'com.github.User:Repo:Tag'    }

就是这样,so easy !

总结

目前来说 JCenter 虽然是 Android 的默认仓库,但是发布的流程还是比较麻烦,而且发布的过程是一个闻者伤心,见者流泪的辛酸血泪填坑史。JitPack 更加简单快捷,使用的方式也相差无几。顺便一提,文中的 chatinput 是一个 IM UIKit,可以方便地为聊天界面集成文字,录音、发图片、视频消息。另外我们也发布了 imui,可以方便地集成聊天界面功能,使用方式:

compile 'cn.jiguang.imui:imui:0.0.1'

更多信息请登录我们的 GitHub 地址:https://github.com/jpush/imui
后续我们也会不断地完善和维护,欢迎大家提 PR。

作者:KenChoi - 极光开发者

原文:发布 Android Library 到 JCenter 从入门到放弃

知乎专栏:极光日报

阅读全文
0 0
原创粉丝点击