开源库发布到Bintray

每个开发者都会封装一些开源库,或者给自己封装一些自用的工具库

那么我们有两个仓库可选择:

  1. maven { url “https://jitpack.io” }
  2. jcenter()

这里我选择 jcenter() ,因为studio项目默认库就是它。接下来我们把项目发布到 jcenter()仓库里 它在Bintray网站里。

准备工作

  1. AndroidStudio、Gradle和自己的开源项目。(必须有)
  2. Jcenter是Bintray下的一个仓库,所以Bintray帐号必须的。
  3. 网络必须是畅通的,要能访问 https://bintray.com

Studio 、 Gradle 应该都会有吧!开源项目或许有些人还不会。就说一下咯

  1. 创建一个项目 (例如:sampleDemo)
  2. 创建一个Library (例如:Log)

这里切换项目到Android项目模式下 会看到生成三个 build.gradle

  1. build.gradle(Project sampleDemo)【这里sampleDemo是你项目名 是项目Gradle】
  2. build.gradle(Module:app)【这个是你的app Gradle】
  3. build.gradle(Module:Log)【这个是Library库名 是library的Gradle】

修改项目Gralde【build.gradle(Project sampleDemo)】

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    
    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.1.3'
        // 开源到bintray.com添加
        classpath 'com.github.dcendents:android-maven-gradle-plugin:1.4.1'
        classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.4'
    }
}

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

task clean(type: Delete) {
    delete rootProject.buildDir
}

修改Library Gradle【build.gradle(Module:Log)】

apply plugin: 'com.android.library'
apply plugin: 'com.github.dcendents.android-maven'
apply plugin: 'com.jfrog.bintray'
android {
    compileSdkVersion 28
}


// 项目引用的版本号
version = "1.0.0"

// 定义两个连接(这里的连接是github的)【需要更改】
def siteUrl = 'https://github.com/Townwang/Log' // 项目主页。
def gitUrl = 'git@github.com:Townwang/Log.git' // Git仓库的url。

// 唯一包名 【需要更改】
group = "com.townwang"
install {
    repositories.mavenInstaller {
        // 生成pom.xml和参数
        pom {
            project {
                packaging 'aar'
                // 项目描述 【需要更改】
                name 'Log For Android'// 可选,项目名称。
                description 'Breaking android log word limits and automatically formatting json.'// 可选,项目描述。
                url siteUrl // 项目主页

                // 软件开源协议(无需更改)
                licenses {
                    license {
                        name 'The Apache Software License, Version 2.0'
                        url 'http://www.apache.org/licenses/LICENSE-2.0.txt'
                    }
                }

                //开发者基本信息 【需要更改】
                developers {
                    developer {
                        id 'townwang' // 开发者的id。
                        name 'Townwang' // 开发者名字。
                        email 'android@townwang.com' // 开发者邮箱。
                    }
                }

                // SCM(无需更改,上面定义了)
                scm {
                    connection gitUrl // Git仓库地址。
                    developerConnection gitUrl // Git仓库地址。
                    url siteUrl // 项目主页。
                }
            }
        }
    }
}
// 生成jar包的task(无需更改)
task sourcesJar(type: Jar) {
    from android.sourceSets.main.java.srcDirs
    classifier = 'sources'
}
// 生成jarDoc的task(无需更改)
task javadoc(type: Javadoc) {
    source = android.sourceSets.main.java.srcDirs
    classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
    // destinationDir = file("../javadoc/")
    failOnError false // 忽略注释语法错误,如果用jdk1.8你的注释写的不规范就编译不过。
}
// 生成javaDoc的jar(无需更改)
task javadocJar(type: Jar, dependsOn: javadoc) {
    classifier = 'javadoc'
    from javadoc.destinationDir
}
artifacts {
    archives javadocJar
    archives sourcesJar
}

// 这里是读取Bintray相关的信息,我们上传项目到github上的时候会把gradle文件传上去,所以不要把帐号密码的信息直接写在这里,写在local.properties中,这里动态读取。
Properties properties = new Properties()
properties.load(project.rootProject.file('local.properties').newDataInputStream())
bintray {
    user = properties.getProperty("bintray.user") // Bintray的用户名。
    key = properties.getProperty("bintray.apikey") // Bintray刚才保存的ApiKey。

    configurations = ['archives']
    pkg {
        repo = "Log"  // 上传到maven库。(这里填改成你创建的仓库的名字。)
        name = "logutils"  // 发布到Bintray上的项目名字(就是library)
        userOrg = user // Bintray的用户名
        websiteUrl = siteUrl
        vcsUrl = gitUrl
        licenses = ["Apache-2.0"]
        publish = true // 是否是公开项目(true 公开 false 不公开)
    }
}

修改完毕后 准备发布吧!

运行gradle命令来发布

gradle install   

gradle Bintray

执行完毕这两条命令即可

发布成功之后需要 Add to Jcetner 让管理员审核 【审核通过会有右键通知你】

使用方法

一切准备就绪后:


implementation '你的包名:你的Libray名:你的版本号'

例如:


implementation 'com.townwang:logutils:1.0.0'

推荐环节

开源了几个东东

日志封装,突破字符限制,格式化Json

插入联系人

手机信息识别工具类

抖音插件(突破抖音视频限制15秒)