AndroidStudio 发布开源库Library到jcenter(填了N个坑)

前言:

将自己编写的功能库开源出来,方便他人交流,查找问题,同时,gradle 依赖方式也快捷使用。

前期准备工作

1. 注册账户

点击进入bintray注册页面。

输入相关信息,如下图所示:
AndroidStudio 发布开源库Library到jcenter(填了N个坑)_第1张图片
创建成功后,出现等待激活页面,如下图所示:
AndroidStudio 发布开源库Library到jcenter(填了N个坑)_第2张图片
打开谷歌邮箱,点击激活的邮件,如下所示:

AndroidStudio 发布开源库Library到jcenter(填了N个坑)_第3张图片

2. 创建maven仓库

查看对应的仓库是否存在,输入https://bintray.com/用户名/仓库名,这里,个人输入https://bintray.com/hexingen/maven,发现该代码仓库不存在,如下所示:
AndroidStudio 发布开源库Library到jcenter(填了N个坑)_第4张图片
因此,需要手动创建该仓库。登入账号后,进入edit your profile页面,点击打开Repositories,如下所示:
AndroidStudio 发布开源库Library到jcenter(填了N个坑)_第5张图片
点击new repository,创建相应的代码库,如下图所示:
AndroidStudio 发布开源库Library到jcenter(填了N个坑)_第6张图片
3. 获取到api key

登录后,点击右上角头像初的edit profile,进入编辑页面,如下图所示:
AndroidStudio 发布开源库Library到jcenter(填了N个坑)_第7张图片

点击API Key,就可以看到你一段key字符串,把这个copy下放一边,一会上传要用。

AndroidStudio上的配置上传操作

1. 在项目的build.gradle中添加

buildscript {
    
    repositories {
        google()
        jcenter()
    }
dependencies {
        classpath 'com.android.tools.build:gradle:3.1.2'
        //修改此处版本号为 0.8.0---修改之前是0.3.4(AS版本3.1.4改为0.8.0)
        classpath 'com.novoda:bintray-release:0.8.0'
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        google()
        jcenter()
    }
    解决编码GBK的不可映射字符,中文注释问题
    tasks.withType(Javadoc) {
        options{
            encoding "UTF-8"
            charSet 'UTF-8'
            links "http://docs.oracle.com/javase/7/docs/api"
        }
    }
}

重点:这里存在一些坑,不同的studio版本需要选择不同的bintray-release版本

2. 在Library Module的builde.gradle中添加

添加bintray插件,和配置bintray的相关信息。

apply plugin: 'com.novoda.bintray-release'//添加


android {

    //取消lint检查
    lintOptions {
        abortOnError false
    }
}

//添加
publish {
    userOrg = 'hexingen'//bintray.com用户名
    groupId = 'com.xingen'//jcenter上的路径
    artifactId = 'androidjslib'//项目名称
    publishVersion = '1.0.0'//版本号
    desc = 'Oh hi, this is a nice description for a project, right?'//描述,不重要
    website = 'https://github.com/13767004362/WebViewLib'//网站,github上的地址
}

3. terminal窗口中执行命令行

执行上传操作,输入相关命令行,运行等待上传结果,如下图所示:

在这里插入图片描述

 gradlew clean build bintrayUpload 
 -PbintrayUser=hexingen 
 -PbintrayKey=xxxxxxxxxxxxxxxxxxxxxx 
 -PdryRun=false

解释说明

  • PbintrayUser:用户名
  • PbintrayKey :前面拷贝的api key
  • PdryRun : 配置参数,当为true的时候,会运行所有的环节,但是不会上传
    上传成功后,如下图所示:
    在这里插入图片描述

Bintray网站上的操作

  1. 打开浏览器输入https://bintray.com/自己的用户名/仓库名,这里是https://bintray.com/hexingen/maven,出现上传成功的库,如下图:
    AndroidStudio 发布开源库Library到jcenter(填了N个坑)_第8张图片

  2. 打开该库,查看相关信息,如下图所示:
    AndroidStudio 发布开源库Library到jcenter(填了N个坑)_第9张图片

3.点击add to Jecenter,跳转提交信息页面,如下所示:

AndroidStudio 发布开源库Library到jcenter(填了N个坑)_第10张图片

4.输入简单信息,提交完信息后,等待审核通过。等待几小时后,通过审核,会受到消息,如下图所示:

AndroidStudio 发布开源库Library到jcenter(填了N个坑)_第11张图片

最后一步,在gradle中进行依赖,方便快捷使用该库了,如下图所示:

AndroidStudio 发布开源库Library到jcenter(填了N个坑)_第12张图片

该库的项目链接: https://github.com/13767004362/WebViewLib


遇到的问题

1. 提交完项目后,没有Add To jcenter按钮

注册或者登入账号,应该选择For Open Source account方式登录

2. 遇到HTTP/1.1 404 Not Found [message:Repo 'maven' was not found]

Execution failed for task ':androidjslib:bintrayUpload'.
> Could not create package 'hexingen/maven/androidjslib': HTTP/1.1 404 Not Found [message:Repo 'maven' was not found]

查询才知道,原来需要自己去创建maven仓库。

解决方式:手动创建maven仓库

3. androidstudio3.0 遇到Unable to load class ‘org.gradle.api.internal.component.Usage’问题。

解决方式: 来源网上答案

buildscript {
    
    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.1.2'
        //修改此处版本号为 0.5.0---修改之前是0.3.4(AS版本3.1.4改为0.8.0)
        classpath 'com.novoda:bintray-release:0.5'
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

4. 遇到编码GBK的不可映射字符

解决方式:

//解决编码GBK的不可映射字符
allprojects {
    tasks.withType(Javadoc) {
        options{
            encoding "UTF-8"
            charSet 'UTF-8'
            links "http://docs.oracle.com/javase/7/docs/api"
        }
    }
}

5.遇上Execution failed for task ':core:lint'.

关闭lint检查

解决方式:

    lintOptions {
        abortOnError false
    }

资源参考

  • https://blog.csdn.net/lmj623565791/article/details/51148825

  • https://github.com/novoda/bintray-release

  • https://github.com/13767004362/WebViewLib

你可能感兴趣的:(Android,应用层开发)