几分钟完成发布开源库到jCenter
来源:互联网 发布:voc0712数据集 编辑:程序博客网 时间:2024/04/29 06:45
转载请注明地址:http://blog.csdn.net/u012402124/article/details/78189675
在AndroidStudio中导入开源库一般就是一句话的事: compile 'xxx.xx.xx:xx'
。 实际上我们也可以通过这种方式来导入自己的开源库,方便自己的使用。AndroidStudio执行compile 'xxx.xxx.xx:xx'
会先到jCenter上查找该开源库,所以需要我们把自己的开源库库发布到jCenter上。无法直接在jCenter上发布开源库,要通过它的托管商–Bintray(Bintray托管着很多仓库,jCenter只是其中一个)来完成。
把自己平时经常用到的一些代码写到一起上传到jCenter,以后不管做什么项目一句话就能导入,算来还是一个比较实用的功能。
总体步骤概览
1. 注册Bintray账号并创建仓库
2. 准备开源库
3. 修改gradle文件
4. 编译并上传至Bintray
5. linked to jCenter
1. 注册Bintray账号并创建仓库
使用Bintray当然要先注册个账号,注册地址
我选的是Sign up with Github
。
注册登录之后应该是这个样子, 点击Add New Repository
- Name:仓库的名字,写了之后不能再改,记住该名字,后面上传时会用到;
- Type:仓库类型,选择
Maven
; - License:开源协议,随便选一个就好;
- Description:仓库描述,随便写;
点击Create
完成仓库创建,到此第一步完成。
2. 准备开源库
备好你想要上传的开源库,有两种方式:
1. AndroidStudio中new一个project,然后在project中new一个Module,类型选择Android Library
;
2. 直接修改当前Module的build.gradle(注意区分project的build.gradle文件和Module的build.gradle文件,前者在project根目录下,后者在对应的Module目录下)文件,将第一行的apply plugin: 'com.android.application
改为 apply plugin: com.android.library
,再把下面的applicationId "你的包名"
这一行删除(library是不允许有applicationId的);
两种方式最终结果都是得到了一个Android Library
类型的Module,在Module里添加你想要上传的开源库代码(我随便弄了一个,里面有个我常用到的加载App Icon的方法)。
到此第二步准备开源库完成
3. 修改gradle文件
还是那句话,注意区分project的build.gradle文件和Module的build.gradle文件,前者在project根目录下,后者在对应的Module目录下
修改project的build.gradle文件,添加下面这两句话
Maven Github地址:对应里面的说明选择使用的版本号
Bintray Github地址:对应里面的说明选择使用的版本号修改Module的build.gradle文件(这步有点乱,认真看)
需要配置3个信息:- Bintray账号配置和Developer信息,告诉AndroidStudio传到哪及开发者介绍;
- Project信息,开源库的介绍;
- 上传配置,对以上3个信息的调用以及其他一些配置;
为了看起来条理清晰,我把能独立的部分都独立到单独文件里了,便于阅读,以下分别说明。
1. Bintray账号信息和Developer信息 AndroidStudio
创建项目时默认会在project根目录下创建local.properties
文件并添加到了.gitignore
文件中(如果没有请自行创建并添加至.gitignore
中),在其中添加以下内容:
- bintray.user:Bintray注册的用户名
- bintray.apikey:Bintray的API key
- developer.id:开源社区的昵称(一般指github,或是使用的其他开源社区)
- developer.name:姓名
- developer.email:邮箱地址
查看API key方法:
2. Project信息配置
在开源库Module目录下新建project.properties
文件,添加以下内容:
- project.name:开源库名字
- project.groupId:项目组ID,写包名
- project.artifaceId:项目ID,写Module名
- project.packaging:打包方式,写aar
- project.siteUrl:项目主页,没有就写github地址
- project.gitUrl:项目仓库地址
- javadoc.name:javadoc主页显示的名称,写项目名字就好
3. 上传配置
在开源库Module目录下新建bintrayUpload.gradle
文件,添加以下内容:(内容较多,直接贴源码了,阅读可能不太美观)
apply plugin: 'com.github.dcendents.android-maven'apply plugin: 'com.jfrog.bintray'// load propertiesProperties properties = new Properties()File projectPropertiesFile = project.file("project.properties")if(projectPropertiesFile.exists()){ properties.load(projectPropertiesFile.newDataInputStream())}// read propertiesdef projectName = properties.getProperty("project.name")def projectGroupId = properties.getProperty("project.groupId")def projectArtifactId = properties.getProperty("project.artifactId")def projectVersionName = android.defaultConfig.versionNamedef projectPackaging = properties.getProperty("project.packaging")def projectSiteUrl = properties.getProperty("project.siteUrl")def projectGitUrl = properties.getProperty("project.gitUrl")def javadocName = properties.getProperty("javadoc.name")File localPropertiesFile = project.rootProject.file("local.properties")if(localPropertiesFile.exists()){ properties.load(localPropertiesFile.newDataInputStream())}def developerId = properties.getProperty("developer.id")def developerName = properties.getProperty("developer.name")def developerEmail = properties.getProperty("developer.email")def bintrayUser = properties.getProperty("bintray.user")def bintrayApikey = properties.getProperty("bintray.apikey")group = projectGroupId// This generates POM.xml with proper parametersinstall { repositories.mavenInstaller { pom { project { name projectName groupId projectGroupId artifactId projectArtifactId version projectVersionName packaging projectPackaging url projectSiteUrl licenses { license { name 'The Apache Software License, Version 2.0' url 'http://www.apache.org/licenses/LICENSE-2.0.txt' } } developers { developer { id developerId name developerName email developerEmail } } scm { connection projectGitUrl developerConnection projectGitUrl url projectSiteUrl } } } }}// This generates sources.jartask 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))}// This generates javadoc.jartask javadocJar(type: Jar, dependsOn: javadoc) { classifier = 'javadoc' from javadoc.destinationDir}artifacts { archives javadocJar archives sourcesJar}// javadoc configurationjavadoc { options{ encoding "UTF-8" charSet 'UTF-8' author true version projectVersionName links "http://docs.oracle.com/javase/7/docs/api" title javadocName }}// bintray configurationbintray { user = bintrayUser key = bintrayApikey configurations = ['archives'] pkg { repo = "maven" name = projectName websiteUrl = projectSiteUrl vcsUrl = projectGitUrl licenses = ["Apache-2.0"] publish = true }}
上传开源库的配置基本都是这样,不用改动什么,值得注意的是bintray
节点的repo
指的是第一步中创建的Maven仓库的名字,这两个名字要一致;此外开源库的版本号默认取的是project的版本号def projectVersionName = android.defaultConfig.versionName
,如果有需要也可把这两个属性抽取到project.properties
文件中,便于管理。
最后一个操作,在开源库Module的build.gradle
文件末尾中添加如下代码apply from: 'bintrayUpload.gradle'
来调用配置文件。
至此第3步配置gradle文件完成。
4. 编译并上传至Bintray
- 编译:打开AndroidStudio的Terminal窗口(一般在底部,没有的话点击
顶部工具栏
->View
->Tools Windows
->Terminal
),输入命令并回车:
gradlew install
等待一段时间后提示BUILD SUCCESSFUL
,表示成功。
- 上传,同样在Terminal中输入以下命令并回车:
gradlew bintrayUpload
等待一段时间后提示BUILD SUCCESSFUL
,表示成功。
至此第4步编译并上传完成。
5. Linked to jCenter
按照上面4步,发送include request之后等待Bintray团队审核,审核完成后会收到邮件和站内信。
至此第5步Linked to jCenter完成。
如果遇到问题,请参考这两篇文章
- Android 项目打包到 JCenter 的坑
- Android 发布项目到 JCenter 遇到的各种坑
如有问题,欢迎指正~
- 几分钟完成发布开源库到jCenter
- 10分钟发布android library到jcenter
- Android发布开源库到jcenter
- 发布开源库到 JitPack.io + jcenter
- 【Android】5分钟发布Android Library项目到JCenter
- 发布开源库到Jcenter和Maven Central
- 如何快速发布开源库到jcenter中
- 百度几分钟内完成闪电裁员
- JCenter发布开源库
- 发布项目到jcenter
- 发布项目到Jcenter
- 使用Android Studio发布开源库到Bintray/Jcenter(新)
- 使用Android Studio发布开源库到Bintray/Jcenter(新)
- 这道题你能在几分钟内完成?
- Android Studio发布到Jcenter
- Android发布项目到JCenter
- 发布lib到mavenCenter&jcenter
- Android 发布项目到jcenter
- centos7安装完 yum 不可用解决方法
- 这是我的第一个程序
- 9. Palindrome Number
- Laravel 框架 容器解析具体的某一个类 的执行 流程
- 搜索引擎和知识图谱
- 几分钟完成发布开源库到jCenter
- Tensorlow 中文API:tf.zeros() tf.ones()tf.fill()tf.constant()
- RecycleView实现拖拽效果
- jdbcType DATE 和 TIMESTAMP 区别
- String类型根据逗号分隔转为list
- Android 通过adb命令同步手机(user_debug版本系统)和电脑时间
- 技术之路概览及网页资源
- HTML中DOM解析篇1--nodeType\nodeValue\nodeName
- oracle delete、truncate、drop语句区别