Android Library 上传到 JCenter 之图文总结

前言

本篇博客暂先粗略的总结一下 Jcenter 发布的过程和坑。


注册

刚要跨出第一步就绊倒在注册这一步。

公司试用版和个人免费版注册地址:https://bintray.com/

在这里插入图片描述

切记一定要选择右边这个 Sign Up Here 按钮,不管你是否用 github 第三方登录,并且注册的邮箱不能使用网易和腾讯邮箱!

在这里插入图片描述



发布

点击上图的 Add New Repository 按钮,创建存放代码的仓库。

在这里插入图片描述


创建完仓库后继续创建Package

在这里插入图片描述


在这里插入图片描述

到此,仓库和Package 已经创建完毕,下面配置要上传的项目 (Library) 信息后就可以上传到该仓库了。



配置项目信息

这里我们用极简的拿来主义配置项目~


1.配置根目录的build

buildscript {
    
    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.1.4'

        classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.4'
        classpath 'com.github.dcendents:android-maven-gradle-plugin:1.4.1'
    }
}

2.配置模块的build

apply plugin: 'com.android.library'


android {
    compileSdkVersion 27

    defaultConfig {
        minSdkVersion 15
        targetSdkVersion 27
        versionCode 1
        versionName "1.0"
    }

}

apply from: 'bintray-config.gradle'

3.创建Jcenter配置文件

在要上传的module目录下,与 build.gradle 文件同级 创建 bintray-config.gradle 文件,内容如下。

ext {
    bintrayRepo = 'repository'   //仓库名
    bintrayName = 'package'    //pack名


    //例如build.gradle可以使用依赖 :com.example.uploadmodule:uploadmodule:1.0.1
    publishedGroupId = 'com.example.uploadmodule'   //Model Package Name
    artifact = 'uploadmodule'                   	//Model 名
    libraryVersion = '1.0.0'                   	    //Model 版本号

    //开源库的描述
    libraryName = 'uploadmodule'
    libraryDescription = ''
    siteUrl = ''

    //开源库对应的 github 地址
    gitUrl = ''

    //开发者信息
    developerId = 'xxx'
    developerName = 'xxx'
    developerEmail = '[email protected]'

	//开源协议相关
    licenseName = 'The Apache Software License, Version 2.0'
    licenseUrl = 'http://www.apache.org/licenses/LICENSE-2.0.txt'
    allLicenses = ["Apache-2.0"]
}

apply from: 'https://raw.githubusercontent.com/nuuneoi/JCenter/master/bintrayv1.gradle'
apply from: 'https://raw.githubusercontent.com/nuuneoi/JCenter/master/installv1.gradle'

4. 配置账号身份信息

在根目录的 local.properties 文件中配置用户名和秘钥

sdk.dir=C\:\\Android\\sdk

bintray.user=xxx
bintray.apikey=xxx

在这里插入图片描述


因为我们在 bintray-config.gradle 文件中配置了

apply from: 'https://raw.githubusercontent.com/nuuneoi/JCenter/master/bintrayv1.gradle'
apply from: 'https://raw.githubusercontent.com/nuuneoi/JCenter/master/installv1.gradle'

这两行代码,依赖了上面两个插件,具体可以用浏览器打开查看。
主要是帮我们配置了项目信息和上传Library的配置,所以我们才可以用极简的流程上传Lib~


5. 执行gradle脚本

依次执行以下两个 gradle 命令 :

  1. gradlew install
  2. gradlew bintrayUpload

gradlew install 用于将项目编译、打包生成 pom,aar 等文件;
gradlew bintrayUpload 用于将生成的 pom,aar 等文件上传至 bintray 仓库中;


或者也可以在 Android Studio 的 Gradle 板块中搜索 install , 点击 Expand All 找到 install Task (具体在 :module -> other -> install),因为要上传的是 module 的代码~

在这里插入图片描述

bintrayUpload
在这里插入图片描述


成功上传 Library

在这里插入图片描述

最后在 Maven Central 中将依赖正式发布到 Jcenter 上,项目中就可以直接依赖,例如:

implementation 'com.squareup.okhttp3:okhttp:3.9.1'

我们其实可以直接网页访问 https://jcenter.bintray.com/com/squareup/okhttp3/okhttp/3.9.1/ 下载上传到 Jcenter 的 okhttp 模块依赖。


对于上面我们示例模块,如果上传到 Jcenter 发布后,即可在项目中如下依赖使用 :
implementation 'com.example.uploadmodule:uploadmodule:1.0.0'

对应下载链接 https://jcenter.bintray.com/com/example/uploadmodule/uploadmodule/1.0.0/



踩坑总结

  • 首先注册一定要选择个人免费版!!!
  • HTTP/1.1 404 Not Found [message:Repo ‘maven’ was not found] 注册为企业的账号了!!!
  • Could not create version ‘0.1’: HTTP/1.1 401 Unauthorized [message:This resource requires authentication] : 没有正确配置API key 和 账号
  • Could not create package ‘fighter/xxx/xxx’: HTTP/1.1 404 Not Found [message:Repo ‘xxx’ was not found] : 项目信息配置错误,要对应仓库名,Package
  • Could not upload to ‘https://xxxxxxx.pom’: HTTP/1.1 400 Bad Request [message:Unable to upload files: Maven group, artifact or version defined in the pom file do not match the file path ‘xxxxxxx.pom’] :module的名字和Model下gradle文件配置的artifact不一致导致的

参数说明

bintrayRepo : bintray下的仓库名
bintrayName : bintray仓库下的项目名

publishedGroupId : Model包名
libraryName : Model 名
artifact : Model 名
libraryVersion : Model版本号

‘com.example.uploadmodule:uploadmodule:1.0.0’

publishedGroupId : com.example.uploadmodule 包名
artifact : uploadmodule 模块名
libraryName : uploadmodule 开源库的描述



参考

Android上传Library到Jcenter的坑与解
请叫我大苏的 : 教你一步步发布一个开源库到 JCenter

猜你喜欢

转载自blog.csdn.net/qian520ao/article/details/83345732