使用Android(安卓)Studio发布私有库到仓库中心
介绍
当在我们这行积累到一定程度,都会有自己的一些代码库,这些代码被多个项目使用。之前的做法是每次到新的项目中,就会把之前的代码拷贝过来,升级一下,或许会把一些纯java代码打包成jar包文件,这样项目中只要引用这个jar包就可以了,但是在Android中,我们可能还会用到一些资源文件,这样再想打包成jar包就比较麻烦了。再再升级下,我们可以使用Android Studio生成aar文件,这样就避免了资源文件无法打包的困扰。但是这样每次到新项目,我们还是要将aar文件拷贝过来,这样的维护还是需要些成本。本文将阐述如何将私有代码库发布到maven仓库中心,只要一句简单的配置代码,即可引用自己的代码库,这样是不是更好维护,更简单,逼格更高呢~
创建并配置library项目
作为一个工具类库,首先,我们需要创建一个library项目
然后在project的build.gradle配置以下两句代码
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.0'classpath 'com.github.dcendents:android-maven-gradle-plugin:1.3'
接着在library module的build.gradle增加一些配置:
1、添加插件
apply plugin: 'com.github.dcendents.android-maven'apply plugin: 'com.jfrog.bintray'
2、定义版本
version = "0.0.1"
3、设置项目代码地址
这里我是使用github作为代码开源地址
def siteUrl = 'https://github.com/a631855639/BintrayDemo' // project homepagedef gitUrl = 'https://github.com/a631855639/BintrayDemo.git' // project git
4、定义group
这个group定义的名称将是你之后要引用时会用到的,且要唯一,一般是用包名
group = "com.bintray.library.demo"
如何确定唯一性呢,可以打开这个地址https://bintray.com/bintray/jcenter,然后搜索一下自己的包名,看是否被人使用过了没。
5、定义pom并打包aar
install { repositories.mavenInstaller { // This generates POM.xml with proper parameters pom { project { packaging 'aar' name 'Helen Code For Android'//一些描述 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 '' name '' email '' } } scm { connection gitUrl developerConnection gitUrl url siteUrl } } } }}
6、打包javadoc jar和source jar
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))}task javadocJar(type: Jar, dependsOn: javadoc) { classifier = 'javadoc' from javadoc.destinationDir}javadoc { options{ encoding 'UTF-8' charSet 'UTF-8' author true }}artifacts { archives javadocJar archives sourcesJar}
7、上传到maven仓库,从local.properties读取user和apikey
Properties properties = new Properties()properties.load(project.rootProject.file('local.properties').newDataInputStream())bintray { user = properties.getProperty("bintray.user") key = properties.getProperty("bintray.apikey") configurations = ['archives'] pkg { repo = "maven" name = "BintrayLibraryDemo" // project name in maven websiteUrl = siteUrl vcsUrl = gitUrl licenses = ["Apache-2.0"] publish = true }}
publish = true,代表当改task执行时,就将其发布上去,如果为false就不发布。
这里你需要在项目的local.properties文件里配置bintray.user和bintray.apikey,分别为https://bintray.com/ 网站注册的用户名和密钥。
注意:不要将local.properties文件提交到代码开源库上,防止重要信息泄露,记得使用忽略文件将其忽略提交
项目整体配置
以上步骤算是配置好了,剩下就是到https://bintray.com/ 注册用户,获取bintray.user和bintray.apikey了
来个配置代码全身照吧!
获取bintray.user和bintray.apikey
要获取这两个值,必须要先到https://bintray.com/ 注册,然后点击个人头像—>编辑
如果发布失败,可能是因为你的user填错了。之前,我在注册的时候,使用的用户名是Helen,但是发现发布失败,当我改为小写helen时,成功了!当你不知道你要填大写小写时,你可以看进入你的个人主页时,地址写着是什么就是什么了,比如我的个人主页是https://bintray.com/helen。
发布
配置完以上,最后,打开命令行执行
gradlew bintrayUnload
或者如下图
双击运行bintrayUnload即可。
然后你会在bintray的个人主页下方
说明已经上传成功了,但是还没完,点击上面的项目链接进入项目主页,然后将其“Add to JCenter”提交,等待审核。
等待审核通过之后(这个差不多等半个小时吧),然后就可以使用了。用法就是使用gradle compile group名+module名+版本号
compile 'com.bintray.library.demo:app:0.01'
升级
我们的类库也会不断优化,添加功能,这时候仓库中心的代码也需要升级,这个只要将第二步中的版本号version提高一个版本即可,然后再次执行bintrayUnload。如果没有将版本号升级,就再次发布,会报错
Could not upload to 'https://api.bintray.com/content/helen/maven/BintrayLibraryDemo/0.0.1/com/bintray/library/demo/app/0.0.1/app-0.0.1-javadoc.jar': HTTP/1.1 409 Conflict
提交升级之后,需要等待一段时间。
更多相关文章
- 自动化代码检查优化Lint
- 第三部分:Android(安卓)应用程序接口指南---第二节:UI---第二章 输
- Android直播实现(一)Android端推流、播放
- 解析Android(安卓)Studio创建的第一个Android(安卓)TV项目
- Android之代码写布局
- android原生POST、httpClient4.X实现向PHP服务器上传文件
- android源代码分析一:使用内部(com.android.internal)和隐藏(@hid
- Android(安卓)Studio 3.1.3 使用NDK 编译出现不能error: no such
- 在英特尔® 凌动™ 平台上进行 Android* 应用开发和优化