用户登录
用户注册

分享至

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

  • 作者: 嗫?暁雲?
  • 来源: 51数据库
  • 2021-10-06

 

对于android 的开源库,一般通过 jcenter 或者 jitpack 发布开源。两种方式均可~

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

一、 上传开源库到 jcenter

1、准备工作

步骤1:注册bintray账号

  • 注册地址
  1. 尽量不要在官网注册,因为官网注册的是企业版,我们需要的是个人版
  2. 直接关联 github账号进行注册 & 登录(建议)

ps:如果github账户使用了qq邮箱,163邮箱等可能会无法注册,可以尝试给github账户 增加一个邮箱例如 gmail

步骤2:在bintray上建立仓库

  1. 在个人中心点击 add new repository
  2. name 框填写 仓库名;type 框 选择 maven
  3. 点击 create,完成创建

步骤3:在代码项目中创建module文件夹

  • 步骤如下

    android studio中

    1. file --> new module -> android library(注意主项目的project名不要和library相同,可能会冲突)
    2. 创建成功后,你会发现module文件夹的结构和 原有的项目文件夹(app)非常类似

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

  • 本文 以上传一个 自定义view 为例子
  • 该自定义view代码包括:1个类文件

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


2、配置与上传

步骤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 = 'http://www.51sjk.com/Upload/Articles/1/0/278/278742_20210708082711461.jpg'  // vcs地址
}

注意:尽量保持你的library module的名字同artifactid一样

原因:bintray上,你的项目的 maven-metadata.xml 文件的路径 为 gruopid+"/"+module名称。

? 假设你的groupid=qg.odm,artifactid是animatedfloatingbutton,但module名称是animatedfloatingbuttonlibrary。
? 此时,项目文件在qg.odm.animatedfloatingbuttondemo目录下的,但maven-metadata.xml文件却是在qg.odm/animatedfloatingbuttonlibrary目录下的,可能会有冲突。

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

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

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

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

//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://www.51sjk.com/Upload/Articles/1/0/278/278742_20210708082711477.jpg"
        }
    }
}

步骤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
  • 注:获取api key(需回到 jcenter 网站)

  • 上传成功提示如下:

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

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

步骤3:添加到jcenter

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

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

3、查看如何依赖

在对应的 package 页点击对应的版本号,在maven info中可以查看


4、版本更新

当需要进行android library版本更新时,只需要以下2个步骤:

步骤1:在该library modulegradle文件中的配置2中 重新配置版本号,其他的都不用更改!!

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

androidstudioterminal输入以下命令

//一行命令直接在terminal执行,例子如下
gradlew clean build bintrayupload -pbintrayuser=dmingou -pbintraykey=610e0e8f022cb3f353908e083932167bd0ff -pdryrun=false

等待一定时间,就可以看到 bintray网站上更新了android library的新版本。

5、上传到 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。那什么时候执行?怎么执行呢?

步骤1、什么时候执行?

在gradlew clean build 和 gradlew bintrayupload… 两个task之间执行;

步骤2、怎么执行?

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

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

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

二、发布开源库到 jitpack

准备工作

在github上传需要开源的项目,与 上传jcenter步骤中的准备工作对项目代码的操作类似。

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

步骤一、在项目的build.gradle添加

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

ps:jitpack的android-maven-gradle-plugin版本要和gradle版本对应。具体的对应呢?

如下图:

步骤二、配置library的build.gralde

在library的 build.gradle中添加代码

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

如下图所示:

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

步骤三、创建release版本

1、打开项目的github主页,创建一个release或tag

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

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

步骤四、提交到 jitpack

1、将github项目的仓库提交到 jitpack

绑定了账户后,可以在左方的 repositories栏挑选;也可以在输入框中填入 发布release的项目地址

log栏是绿色,代表ok,点击 get it 按钮,版本提交完成后,jitpack会自动生成引用该library的配置信息:

2、在下方可以看到如何引用依赖你刚发布的代码库了

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

 

谢谢阅读的同学~,希望文章能对您有用

软件
前端设计
程序设计
Java相关