美文网首页
Android Library 发布开源库 JCenter &

Android Library 发布开源库 JCenter &

作者: DMingO | 来源:发表于2020-02-06 16:12 被阅读0次

    对于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

    image

    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、在下方可以看到如何引用依赖你刚发布的代码库了
    在这里插入图片描述

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

    相关文章

      网友评论

          本文标题:Android Library 发布开源库 JCenter &

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