zoukankan      html  css  js  c++  java
  • Android Library 发布开源库 JCenter & JitPack 攻略

    对于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 = 'https://github.com/DMingOu/AnimatedFloatingButton'  // 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://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 了!

    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添加插件android-maven-gradle-plugin

    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、在下方可以看到如何引用依赖你刚发布的代码库了

    在这里插入图片描述

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

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

  • 相关阅读:
    天梯赛5-12 愿天下有情人都是失散多年的兄妹 【dfs】
    poj2718 Smallest Difference【贪心】
    HDU problem 5635 LCP Array【思维】
    codeforces 782C Andryusha and Colored Balloons【构造】
    HDU 4278 Faulty Odometer【进制转换】
    codeforces B. The Meeting Place Cannot Be Changed【二分】
    POJ 3264 Balanced Lineup 【线段树】
    HDU 1850
    CodeForces-714C
    HDU Problem 1247 Hat's Words 【字典树】
  • 原文地址:https://www.cnblogs.com/DMingO/p/12790052.html
Copyright © 2011-2022 走看看