使用Android Studio将开源库发布到Jcenter中央库
2015-07-28 09:33
585 查看
首先在 https://bintray.com 注册一个账号,登录后然后从其后台获得一个API Key
在你的项目根目录下的build.gradle文件中加入依赖,最后文件内容就变成了这样子。
在根目录下新建一个gradle文件,将其命名为bintray.gradle,其内容如下
需要注意的是如果你的项目依赖了第三方库,则你也需要加入,比如这里我引用了fastjson,在对应的位置加入依赖代码即可,就像下面这样子,唯一需要注意的就是dependencies 和version 需要用引号扩住,并且后面留一个空格,原因是因为这两个关键字默认会有动作执行,这里投机取巧的将问题解决
然后在你的库module下的build.gradle的最后面加入应用该文件的代码,注意这里的build.gradle是module下的而并非根目录下的。
最后,将对应的变量进行配置即可。在根目录下的gradle.properties文件中加入属性,属性中使用
compile ‘com.android.support:appcompat-v7:22.2.0’
做样例
然后在项目根目录下local.properties中增加两个重要属性,一个是之前注册的账号,一个是账号后台的api key,这个文件不要加入版本控制,存在本地即可。
之后使用android studio进行gradle的task 构建,添加了上面的内容后,你的gradle会多出好几个task。点击android studio右侧的gradle
在你的库文件展开后会有一个publishing/bintaryUpload的task,双击执行它,如果没有错误,就可以在你的后台发现已经上传了。这里避免出错,在执行这个task之前,首先执行三个task生成必须的文件,即other中的javadocJar和sourcesJar以及publishing中的generatePomFileForMavenJavaPublication,目的是生成javadoc.jar,sources.jar以及pom.xml文件,确保build successful后再执行publishing下的bintrayUpload的task,这样就上传到你的后台了。
点击你上传的包,进入管理页面
点击右下角的add to jcenter,直接提交进行审核。这里我已经通过审核了,所以显示的是link to等信息。审核通过后,你就可以直接在gradle中引用了,就拿我这个项目来说就是
在你的项目根目录下的build.gradle文件中加入依赖,最后文件内容就变成了这样子。
buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:1.2.3' classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.0' classpath 'com.github.dcendents:android-maven-plugin:1.2' } } allprojects { repositories { jcenter() } }
在根目录下新建一个gradle文件,将其命名为bintray.gradle,其内容如下
group = PROJ_GROUP version = PROJ_VERSION project.archivesBaseName = PROJ_ARTIFACTID apply plugin: 'com.jfrog.bintray' apply plugin: 'maven-publish' task sourcesJar(type: Jar) { from android.sourceSets.main.java.srcDirs classifier = 'sources' } task javadoc(type: Javadoc) { source = android.sourceSets.main.java.srcDirs classpath += configurations.compile 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 version true links "http://docs.oracle.com/javase/7/docs/api" title PROJ_ARTIFACTID } } artifacts { archives javadocJar archives sourcesJar } def pomConfig = { licenses { license { name "The Apache Software License, Version 2.0" url "http://www.apache.org/licenses/LICENSE-2.0.txt" distribution "repo" } } developers { developer { id DEVELOPER_ID name DEVELOPER_NAME email DEVELOPER_EMAIL } } //这里有引号,并且有个空格,否则生成不了依赖,主要是这里的dependencies并不是build.gradle里的dependencies,而gradle会把他当成自身的dependencies处理 "dependencies " { dependency{ groupId "com.alibaba" artifactId "fastjson" "version " "1.2.6" //同dependencies } } } publishing { publications { mavenJava(MavenPublication) { artifactId PROJ_ARTIFACTID pom{ packaging 'aar' } pom.withXml { def root = asNode() root.appendNode('description', PROJ_DESCRIPTION) root.children().last() + pomConfig } } } } bintray { Properties properties = new Properties() properties.load(project.rootProject.file('local.properties').newDataInputStream()) user = properties.getProperty('BINTRAY_USER'); key = properties.getProperty('BINTRAY_KEY'); configurations = ['archives'] publications = ['mavenJava'] publish = true pkg { repo = 'maven' name = PROJ_NAME desc = PROJ_DESCRIPTION websiteUrl = PROJ_WEBSITEURL issueTrackerUrl = PROJ_ISSUETRACKERURL vcsUrl = PROJ_VCSURL licenses = ['Apache-2.0'] publicDownloadNumbers = true } }
需要注意的是如果你的项目依赖了第三方库,则你也需要加入,比如这里我引用了fastjson,在对应的位置加入依赖代码即可,就像下面这样子,唯一需要注意的就是dependencies 和version 需要用引号扩住,并且后面留一个空格,原因是因为这两个关键字默认会有动作执行,这里投机取巧的将问题解决
"dependencies " { dependency{ groupId "com.alibaba" artifactId "fastjson" "version " "1.2.6" } }
然后在你的库module下的build.gradle的最后面加入应用该文件的代码,注意这里的build.gradle是module下的而并非根目录下的。
apply from: '../bintray.gradle'
最后,将对应的变量进行配置即可。在根目录下的gradle.properties文件中加入属性,属性中使用
compile ‘com.android.support:appcompat-v7:22.2.0’
做样例
PROJ_GROUP=这里改成groupId,比如com.android.support PROJ_VERSION=这里改成库版本,比如22.2.0 PROJ_NAME=这里改成库名字,比如appcompat PROJ_WEBSITEURL=这里改成github地址,比如https://github.com/android/appcompat PROJ_ISSUETRACKERURL=这里改成issue地址,比如https://github.com/android/appcompat/issues PROJ_VCSURL=这里改成版本控制地主,比如https://github.com/android/appcompat.git PROJ_DESCRIPTION=这里改成库的描述信息 PROJ_ARTIFACTID=这里改成库的标示,比如appcompat-v7 DEVELOPER_ID=这里改成开发者id,比如 DEVELOPER_NAME=这里改成开发者名字,比如android DEVELOPER_EMAIL=这里改成开发者邮箱,比如someone@android.com
然后在项目根目录下local.properties中增加两个重要属性,一个是之前注册的账号,一个是账号后台的api key,这个文件不要加入版本控制,存在本地即可。
BINTRAY_KEY=你的API KEY BINTRAY_USER=你的用户名
之后使用android studio进行gradle的task 构建,添加了上面的内容后,你的gradle会多出好几个task。点击android studio右侧的gradle
在你的库文件展开后会有一个publishing/bintaryUpload的task,双击执行它,如果没有错误,就可以在你的后台发现已经上传了。这里避免出错,在执行这个task之前,首先执行三个task生成必须的文件,即other中的javadocJar和sourcesJar以及publishing中的generatePomFileForMavenJavaPublication,目的是生成javadoc.jar,sources.jar以及pom.xml文件,确保build successful后再执行publishing下的bintrayUpload的task,这样就上传到你的后台了。
点击你上传的包,进入管理页面
点击右下角的add to jcenter,直接提交进行审核。这里我已经通过审核了,所以显示的是link to等信息。审核通过后,你就可以直接在gradle中引用了,就拿我这个项目来说就是
compile "cn.edu.zafu:corepage:0.0.1"
相关文章推荐
- android工程不自动生成R文件的解决办法
- Android--利用ViewFlipper实现屏幕切换动画效果
- tabhost实现android菜单切换
- android 弹幕评论效果
- android多媒体框架之概述篇
- Android BaseAdapter notifyDataSetInvalidated()使用思考
- [移动] Android推送方案分析(MQTT/XMPP/GCM)
- Android系列--DOM、SAX、Pull解析XML
- Android Service 两种启动方式的区别
- Android 屏幕旋转时Activity的生命周期
- Android基础_页面布局_TableLayout(表格布局)
- Android程序开发如何处理图像格式类及图像转换
- android AIDL RPC 机制
- android setBackgroundDrawable 的padding问题
- Android打造不一样的EmptyView
- inflate与setcontentview及findviewbyid(一)
- 安卓加载顺序
- Android - ViewHolder优化ListView
- Android开源项目第二篇——工具库篇
- Android Api Demos登顶之路(十一)Persistent state