Android Library 发布开源库 JCenter & JitPack 攻略

 

对于Android 的开源库,通常经过 JCenter 或者 JitPack 发布开源。两种方式都可~java

当你造了一个好玩有用的东西想要分享给你们时,开源出来即是一种好方式~

1、 上传开源库到 JCenter

一、准备工做

步骤1:注册Bintray帐号

  1. 尽可能不要在官网注册,由于官网注册的是企业版,咱们须要的是我的版
  2. 直接关联 Github帐号进行注册 & 登陆(建议)

PS:若是Github帐户使用了qq邮箱,163邮箱等可能会没法注册,能够尝试给Github帐户 增长一个邮箱例如 Gmailandroid

步骤2:在Bintray上创建仓库

  1. 在我的中心点击 Add New Repository
  2. Name 框填写 仓库名;Type 框 选择 maven
  3. 点击 Create,完成建立

步骤3:在代码项目中建立Module文件夹

  • 步骤以下git

    Android Studio中github

    1. File --> New Module -> Android Library(注意主项目的Project名不要和Library相同,可能会冲突)
    2. 建立成功后,你会发现Module文件夹的结构和 原有的项目文件夹(app)很是相似

步骤4:将须要上传的代码存放到Module文件中

  • 本文 以上传一个 自定义View 为例子
  • 该自定义View代码包括:1个类文件
    在这里插入图片描述

步骤5:将整个项目上传到 Github


二、配置与上传

步骤1:配置 bintray-release 插件

  • Library ModuleGradle文件中配置
    在这里插入图片描述
//Library build.gradle
    
apply plugin: 'com.novoda.bintray-release' // 添加bintray插件


publish {
    userOrg = 'dmingou'             // Bintray用户名
    repoName = 'AnimatedFloatingButton'          // Bintray上的新建的仓库名(Repository)
    groupId = 'qg.odm'        // 依赖名 implemention 'x:y:z'中的包名x
    artifactId = 'AnimatedFloatingButton'        // 依赖名implemention 'x:y:z'中的项目名y
    publishVersion = '1.0.0'          // 依赖名implemention 'x:y:z'中的版本号z
    desc = 'XXXXXXXX'       		// 对该开源组件的说明
    website = 'https://github.com/DMingOu/AnimatedFloatingButton'  // VCS地址
}

注意:尽可能保持你的library module的名字同artifactId同样web

缘由:Bintray上,你的项目的 maven-metadata.xml 文件的路径 为 gruopId+"/"+module名称。api

​ 假设你的groupId=qg.odm,artifactId是AnimatedFloatingButton,但module名称是AnimatedFloatingButtonLibrary。
​ 此时,项目文件在qg.odm.animatedfloatingbuttondemo目录下的,但maven-metadata.xml文件倒是在qg.odm/AnimatedFloatingButtonLibrary目录下的,可能会有冲突。bash

冲突:若你有多个项目groupId同样 & artifactId不同,但module名称都是library的话,maven-metadata.xml文件的地址可能会同样,即都是:gruopId+"/"+module名称,那么就可能产生冲突。oracle

解决方案:保持module名称和artifactId一致。app

  • 在该项目的Gradle文件中配置

在这里插入图片描述

使用插件前应该看下最新版本 Bintray-release 的github地址maven

//Project build.gradle
classpath 'com.novoda:bintray-release:0.9.2'

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

步骤2:上传项目到JCenter中

  • AndroidStudioTerminal输入如下命令
// 每行命令均用空格隔开,此处是为了展现才会分行

<-- Windows版本 -->
gradlew.bat clean build bintrayUpload 
 -PbintrayUser=UserName  // Bintray用户名
 -PbintrayKey=*********  // Bintray上的API key
 -PdryRun=false

<-- Mac版本 -->
./gradlew clean build bintrayUpload 
 -PbintrayUser=carson-ho 
 -PbintrayKey=***************************** 
 -PdryRun=false
//一行命令直接在Terminal执行,例子以下
gradlew clean build bintrayUpload -PbintrayUser=dmingou -PbintrayKey=610e0e8f022cb3f353908e083932167bd0ff -PdryRun=false

在这里插入图片描述

  • 上传成功提示以下:

img

  • 注:通常来讲不会一次成功,可能出错的问题(坑),详情拉到末尾总结

  • 到这一步,你已经将项目上传到 JCenter了,可进入查看到 Package 已被添加进去

在这里插入图片描述

步骤3:添加到JCenter

  • 请按照如下步骤真正添加该项目到JCenter
    1. 进入仓库–>点击对应Package–>点击右上方的 Actions --> 选择 Add to JCenter
    2. 在弹出的对话框中添加 对提交内容的备注,简单描述便可
  • 提交申请后,须要等待 管理员审核经过(x小时),会以 站内私信方式通知

在这里插入图片描述

  • 收到官方的通知,说明别人就可直接经过 添加你的依赖 来引用你的 Library 了!

三、查看如何依赖

在对应的 Package 页点击对应的版本号,在Maven Info中能够查看

在这里插入图片描述
在这里插入图片描述

四、版本更新

当须要进行Android Library版本更新时,只须要如下2个步骤:

步骤1:在该Library ModuleGradle文件中的配置2中 从新配置版本号,其余的都不用更改!!

在这里插入图片描述

步骤2:从新执行上传代码

AndroidStudioTerminal输入如下命令

//一行命令直接在Terminal执行,例子以下
gradlew clean build bintrayUpload -PbintrayUser=dmingou -PbintrayKey=610e0e8f022cb3f353908e083932167bd0ff -PdryRun=false

等待必定时间,就能够看到 Bintray网站上更新了Android Library的新版本。

五、上传到 Bintray 时遇到的坑

MacOS可能出现的坑

// 错误日志:说明权限有问题
bash: ./gradlew: Permission denied

// 解决方案:得到权限,直接在终端输入如下命令
chmod +x gradlew

坑:Could not publish XXXX HTTP/1.1 404 Not Found [message:Package ‘XXXX’ was not found]

研究一番,相似的错误还有 **Not Found Repo …**网上回答清一色是说配置中写错了或者检查下空格问题。而后我认真检查发现无错后,我直接按原来的命令,再次执行,而后竟然就 Build Successful 了,有点玄学

坑:Please fix the following before submitting a JCenter inclusion request:Add a POM file to the latest version of your package

bintray网站,Package上传成功后,点击“add to jcenter”按钮时,提示以上信息。

  • 上传到bintray的命令行
gradlew clean build bintrayUpload -PbintrayUser=BINTRAY_USERNAME -PbintrayKey=BINTRAY_KEY -PdryRun=false
  • 其实上面的命令行能够分解为2个task:
gradlew clean build
gradlew bintrayUpload.........
  • 点击“add to jcenter”时提示的异常信息,意思是上传的最新版本里面缺乏了pom文件,而经过bintray-release插件上传,执行命令时若是没有生成,则须要咱们手动生成
gradlew clean build bintrayUpload...

解决办法就是手动执行task。那何时执行?怎么执行呢?

步骤一、何时执行?

在gradlew clean build 和 gradlew bintrayUpload… 两个Task之间执行;

步骤二、怎么执行?

首先在android studio 中打开gralde task视图,前后右击run运行下面的两个Task便可;

在这里插入图片描述

执行完之后,对应module下的build目录会生成对应的pom文件

再按照如上操做,而后再去官网点击“add to jcenter”按钮便可顺利进入申请界面

2、发布开源库到 JitPack

准备工做

在Github上传须要开源的项目,与 上传JCenter步骤中的准备工做对项目代码的操做相似。

参照 上传JCenter开源 的 准备工做的 步骤3,步骤4,步骤5

步骤1、在项目的build.gradle添加插件android-maven-gradle-plugin

classpath ‘com.github.dcendents:android-maven-gradle-plugin:2.1’

PS:jitpack的android-maven-gradle-plugin版本要和gradle版本对应。具体的对应呢?查看官方说明~~

以下图:
在这里插入图片描述

步骤2、配置library的build.gralde

在library的 build.gradle中添加代码

// JitPack Maven
apply plugin: 'com.github.dcendents.android-maven'
// 其中username须要替换为你在github上的用户名
group='com.github.username'

以下图所示:
在这里插入图片描述

修改后的部分要提交到github上去!!

步骤3、建立release版本

一、打开项目的github主页,建立一个Release或Tag

在这里插入图片描述

二、填写发布内容
  1. 填写你要发布的release代码库的版本(重要)
  2. 标题名字,通常填写开源库的名字
  3. 本次release提交的描述
  4. 点击 Publish relsease 按钮

在这里插入图片描述

三、发布成功后可查看到记录

在这里插入图片描述

步骤4、提交到 JitPack

一、将Github项目的仓库提交到 JitPack

绑定了帐户后,能够在左方的 Repositories栏挑选;也能够在输入框中填入 发布release的项目地址

Log栏是绿色,表明OK,点击 Get It 按钮,版本提交完成后,JitPack会自动生成引用该library的配置信息:

在这里插入图片描述

二、在下方能够看到如何引用依赖你刚发布的代码库了

在这里插入图片描述

在项目依次添加这两处,就可使用发布的代码库了

 

谢谢阅读的同窗~,但愿文章能对您有用

相关文章
相关标签/搜索