Android—本地library提交到JCenter

个人博客:haichenyi.com。感谢关注

  前面两篇说了怎么生成jar包,aar包及其用法。这篇讲讲android studio的在线依赖——JCenter仓库。早期AS默认的依赖是google和maven仓库,也就是,我们的项目目录下面的build.gradle文件下的这个位置:

allprojects {
    repositories {
        google()
        jcenter()
    }
}

  这里我们看到的是后来把maven替换调的jcenter仓库。

  其实,这个最重要的就是怎么配置的问题。前面其他的我都是简单的说一下。

  第一步:你得有一个bintray帐号,去注册一个,你可能会看到需要公司的信息,你可以选择注册一个个人的。个人的注册地址。个人邮箱是必须的,qq,163邮箱都不能用,我用的是网易的@yeah.net的邮箱,你可以去网易邮箱注册一个, 点我,记得把后缀改成yeah.net的就可以了。

  第二步:新建一个仓库。用你刚才注册的帐号密码,登录bintray,然后,你在屏幕的左边会发现一个Add New Repository按钮,点击。会看到如下界面:

《Android—本地library提交到JCenter》 新建仓库.png

name:名字,也就是你仓库的名字。后面提交的时候会用到

type:类型,选择Maven类型

Licenses:许可,拍照之类的。我选的是Apache-2.0

Description:描述,随便你写。也可以不写

然后,点击新建。其他就不用操作了。添加packages,不用添加,我用的方法是,用命令新建。

  第三步:找到我们的API Key。这个也是最后提交的时候会用到。如下图:

《Android—本地library提交到JCenter》 获取Api-key(1).png
《Android—本地library提交到JCenter》 获取Api-key(2).png
《Android—本地library提交到JCenter》 获取Api-key(3).png

  第四步:新建一个项目,然后new 一个library,(PS:这里的library名字还是比较重要的,它就是你添加依赖的时候第一个冒号和第二个冒号之间的名字,并且,无法更改。比方说:implementation ‘com.android.support:appcompat-v7:27.1.1’,它就是这里的appcompat-v7)写好我们的library,然后,开始配置上传信息。

1、在你的项目build.gradle添加如下代码:

dependencies {
        classpath 'com.android.tools.build:gradle:3.0.0'
        //加入以下两句配置
        classpath 'com.github.dcendents:android-maven-gradle-plugin:2.1'
        classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.7.3'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }

2、打开library的build.gradle,注意,是library的build.gradle。添加如下很长的代码。我这里直接把我自己的library的build.gradle文件全部拷贝过来了。我一行一行的加注释,你可以看。

//这个是自带的,原本就有的。表明这是一个library,并不是application
apply plugin: 'com.android.library'

//插件,下面这两行,就是上面1里面我们加的插件
apply plugin: 'com.github.dcendents.android-maven'
apply plugin: 'com.jfrog.bintray'

//Git项目主页。我做的时候,就是卡在这里,我没有这个东西啊。这个东西其实没啥具体的作用,
//就类似一个中转连接一样,但是必须要有。怎么弄呢?你直接在你的github创建一个仓库就可以了,把链接丢过来就可以了
def siteUrl = 'https://github.com/haichenyi/MyUtils' 
// Git仓库url,就是前面的项目主页后面加一个.git
def gitUrl = 'https://github.com/haichenyi/MyUtils.git' 

//这个照写,不用管。因为,我们要在local.properties这个文件下面写
//我们的bintray.user和bintray.apikey。就是我们的帐号和apikey。不需要写密码。
Properties properties = new Properties()
properties.load(project.rootProject.file('local.properties').newDataInputStream())

//最终引用形式,如compile'com.haichenyi.aloe:utils:1.0.0'
//其中utils就是我们的library名字,我们无法修改
version = "1.0.0" //发布版本号
group = "com.haichenyi.aloe" 

android {
    compileSdkVersion 27
// 随意命名,我不知道干啥用的
    resourcePrefix "wz_" 

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

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

}

//这个是,我这个library里面需要依赖的第三方库
dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation'com.android.support:appcompat-v7:27.1.1'
    implementation 'com.tbruyelle.rxpermissions2:rxpermissions:0.9.4@aar'
    implementation 'io.reactivex.rxjava2:rxjava:2.1.6'
    implementation 'com.squareup.okhttp3:okhttp:3.8.0'
    implementation 'com.google.code.gson:gson:2.8.0'
}

bintray {
//这里就是我们刚说过的user和apikey
    user = properties.getProperty("bintray.user")
    key = properties.getProperty("bintray.apikey")
    pkg {
        repo = 'Utils'//自己创建的仓库名字,要跟Bintray上创建的仓库一样
        name = 'MyUtils'//上传到JCenter的package的名字
        websiteUrl = siteUrl
        vcsUrl = gitUrl //这个好像是必须的,我尝试过传空字符串好像是不成功的
        licenses = ['Apache-2.0']//不能随便写,只能是仓库创建时选择的license type
//        userOrg = 'mumusalibrary' //自己创建的organization名称
        publish = true // 是否是公开项目,公开别人可以引用

        version {
            name = '1.0.0'//版本名,上面好像已经有配置了
            desc = '工具类'//描述,自己定义
            released = new Date()
            vcsTag = 'v1.0.0'
            attributes = ['gradle-plugin': 'com.use.less:com.use.less.gradle:gradle-useless-plugin']
        }
    }
    configurations = ['archives']
}

install {
//这里的xxx按你自己的填就可以了,其他都不用改
//这里的xxx按你自己的填就可以了,其他都不用改
//这里的xxx按你自己的填就可以了,其他都不用改
    repositories.mavenInstaller {
        // This generates POM.xml with proper parameters
        pom {
            project {
                packaging 'aar'
                // Add your description here
                name 'xxx'//项目名
                description 'xxx//项目描述
                url siteUrl
                // Set your license
                licenses {
                    license {
                        name 'Apache-2.0' //和之前自己定义的协议一致
                        url 'https://raw.githubusercontent.com/minggo620/Pluto-Android/master/LICENSE'
                    }
                }
                developers {
                
                    developer {
                        id 'xxxxxx'        //填写bintray或者github的用户名,这里我填的是我的github名
                        name 'xx'         //姓名,这里我填的是Bintray上的昵称
                        email 'xxxx'//邮箱
                    }
                }
                scm {
                    connection gitUrl
                    developerConnection gitUrl
                    url siteUrl
                }
            }
        }
    }
}

task sourcesJar(type: Jar) {
    from android.sourceSets.main.java.srcDirs
    classifier = 'sources'
}
task javadoc(type: Javadoc) {
    failOnError false //必须添加以免出错
    source = android.sourceSets.main.java.srcDirs
    classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
}
task javadocJar(type: Jar, dependsOn: javadoc) {
    classifier = 'javadoc'
    from javadoc.destinationDir
}
artifacts {
    archives javadocJar
    archives sourcesJar
}
javadoc {
    options {
        //如果你的项目里面有中文注释的话,必须将格式设置为UTF-8,不然会出现乱码
        encoding "UTF-8"
        charSet 'UTF-8'
        author true
        version true
        links "http://docs.oracle.com/javase/7/docs/api"
    }
}

  第五步:上传

配置完成之后,上传JCenter,在Android Studio的Terminal下

  1. 编译:(所有模块)gradlew assembleRelease
    (单独模块)gradlew :xxx:assembleRelease

  2. 安装:gradlew :xxx:install

  3. 上传到JCenter仓库:gradlew :xxx:bintrayUpload

这里的xxx就是你的library的名字。然后你就会发现,你的bintray创建的仓库下面,有一个package。你点你的package,你就会发现,如下图片:

《Android—本地library提交到JCenter》 add to jcenter.png

我这里是添加成功了的,你那里应该显示的是add to JCenter,你点击,然后,在新页面点send。提交审核。耐心等待即可。快则半个小时,慢则1到2天。

    原文作者:海晨忆
    原文地址: https://www.jianshu.com/p/8aff600da1ce
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞