参考:
- AndroidStuio快速发布开源项目到Jcenter/Bintray
- 创建并发布一个 Android 库
- Android Library上传到GitHub并一键发布到Bintray或JCenter
** 本文只记录操作步骤 **
** 本文只记录操作步骤 **
** 本文只记录操作步骤 **
apikey
登录 bintray 拿到apikey,不需要创建仓库,默认已有maven/nuget等7个仓库,我们用maven就可以,当然也可以创建一个属于自己的maven仓库。
创建库项目
以下是我的项目目录结构,app是示例Android app,pageablelibrary就是我们要发布的module。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| . ├── app ├── build.gradle ├── gradle │ └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradle.properties ├── gradlew ├── gradlew.bat ├── local.properties ├── pageablelibrary │ ├── build.gradle │ ├── libs │ ├── pageablelibrary.iml │ └── proguard-rules.pro ├── PageableLibrary.iml ├── README.md └── settings.gradle
|
安装插件
./build.gradle
1 2 3 4 5 6 7
| dependencies { classpath 'com.android.tools.build:gradle:3.1.3' //新增 classpath 'com.github.dcendents:android-maven-gradle-plugin:1.5' classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.7.2' }
|
./pageablelibrary/build.gradle
1 2 3 4
| apply plugin: 'com.android.library' //新增 apply plugin: 'com.github.dcendents.android-maven' apply plugin: 'com.jfrog.bintray'
|
配置发布信息
./pageablelibrary/build.gradle 在最后一行加入以下内容
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
| // 项目引用的版本号,比如 implementation 'com.kevinvane:demo:1.0.1' group = "com.kevinwen" version = "1.0.1"
def siteUrl = 'https://github.com/kevinvane/PageableLibrary' // 项目主页。 def gitUrl = 'git@github.com:kevinvane/PageableLibrary.git' // Git仓库的url。
install { repositories.mavenInstaller { pom { project { packaging 'aar' //项目描述 name 'Pageable Library For Android'// 可选,项目名称。 description 'The Android Pageable Library.'// 可选,项目描述。 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 'kevinenjoy ' // 开发者的id。 name 'Sam' // 开发者名字。 email 'kevinwenwork@qq.com' // 开发者邮箱。 } }
scm { connection gitUrl developerConnection gitUrl url siteUrl } } } } } task sourcesJar(type: Jar) { from android.sourceSets.main.java.srcDirs classifier = 'sources' } task javadoc(type: Javadoc) { source = android.sourceSets.main.java.srcDirs classpath += project.files(android.getBootClasspath().join(File.pathSeparator)) failOnError false // 忽略注释语法错误,如果用jdk1.8你的注释写的不规范就编译不过。 } 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 = "maven" name = "PageableLibrary"// 发布到Bintray上的项目名字,不是引用的名称 userOrg = user websiteUrl = siteUrl vcsUrl = gitUrl licenses = ["Apache-2.0"] publish = true } }
|
配置隐私信息
以下两行是bintray的用户名称和apikey,这是很重要的信息,我们放在./local.properties
文件保存
1 2
| user = properties.getProperty("bintray.user") // Bintray的用户名。 key = properties.getProperty("bintray.apikey")
|
./local.properties
1 2
| bintray.user=kevinenjoy bintray.apikey=xxxx
|
执行命令发布到 bintray
1 2 3 4 5
| $ ./gradlew install $ ./gradlew bintrayUpload
BUILD SUCCESSFUL in 13s 29 actionable tasks: 2 executed, 27 up-to-date
|
如果有 BUILD SUCCESSFUL
提示信息,表示成功了,登录到 bintray 看一下maven仓库,发现我们的库已经发布上来了。
目前为止,我们已经把库发布到了 bintray
发布到 jcenter
JCenter是Android默认使用的仓库,登录到 bintray,进入库项目,单击 Add to JCenter
按钮,填一下简介信息,提交审核,审核通过就行了。
引用
如果通过审核,直接引用就可以了
1
| implementation 'com.kevinwen:pageablelibrary:1.0.1@aar'
|
没有通过审核一样可以用,只不过要指定repositories
。
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| buildscript { repositories { google() //指定maven仓库为我账号的maven账号 maven { url 'https://dl.bintray.com/kevinenjoy/maven' } jcenter() } dependencies { classpath 'com.android.tools.build:gradle:3.1.2' } }
|
注意:https://dl.bintray.com/kevinenjoy/maven
中的 kevinenjoy/maven
就是我们配置项目的地址,其中kevinenjoy
是我们的账号,maven
是我们账号里面的maven仓库。
总结
jcenter配置还是有点复杂的,而且编译提交容易出现错误,这时候有一个更加简单的仓库JitPack。JitPack不用本地做配置,只要将项目放在github上,release一个版本,将URL放在JitPack上可以了,是不是很方便?简单三步发布自己的开源库到JitPack