最近本人自己写了个简单的开源库,放在github上。就想想我们工程中平时用一些第三方的网络框架和图片框架,都支持Gradle一句话依赖使用,如果是eclipse,要导入jar,所以就想自己也上传到Jcenter/Bintray.
1.必要的准备工作
AndroidStudio、Gradle和自己的开源项目这个必须有。
Jcenter是Bintray下的一个仓库,所以Bintray帐号必须的,没有的同学看下文如何申请。
网络必须是畅通的,要能访问https://bintray.com
如何申请Bintray帐号
没有Bintray帐号的同学到Bintray官网申请,进入页面后点击右上角的Sign In登录,如果有帐号的人可以直接登录了,没有帐号的同学点击下面的Sign Up注册帐号,操作流程如图所示:
点击Sign In按钮登陆或者注册。
第二步,登录或者到注册页面
有帐号直接登录,或者用第三方帐号(Github、Twwiter,Google+)登录,如果没有帐号就点击Sign Up注册:
根据提示输入相关信息注册,邮件地址灰常重要,一定填自己最常用的,找回密码等用得到,注册好之后会收到一封激活的邮件,根据提示激活就好了。
apikey是我们发布项目到Jcetner时必须要用的,拿到ApiKey后保存起来等下要用,步骤如下:
拿到apikey必须要先登录,登录成功后,右上角原来显示Sign In的地方显示的自己的用户名,鼠标指向用户名的时候有一个下拉菜单,我们需要点击Your Profile,出现的页面左偏上角你的头像和用户名下面有一个[Edit],图示:
点击Edit后出来的新页面,选择左侧的[API Key],会出来如下页面,输入你登录密码点击下方的Submit后会显示一个ApiKey,图示:
输入密码后点击Submit后显示如下,鼠标选中文字后复制并保存(注意不要点击Revoke it,这是撤销这个ApiKey的意思):
第五步,就是创建一个Maven创库
点击add创建跳入如下页面:
这里需要注意的是: 这个Name 和 选择Maven重要,Name在Studio里面上传时Jcenter时需要这个名字的
创建成功后会跳到下个页面,然后点击 Add New Package 开始 创建自己项目库,这边有3个字段是必须 要填
(1) Name (2)Licenses这里一般选择Apache-2.0与你Studio里面配置一致 (3)Version control 版本号 如:1.0.1
以上的步骤做完后,下面就是在我们的工程里面进行配置
配置项目gradle和local.properties
(一)配置项目的gradle文件
我们项目一般会有多个gradle配置文件,第一步要配置的是项目的gradle,而不是module/library的gradle,也就是上图[项目的gradle]标注的文件,你的项目中应该只有dependencies节点下的代码不一样:
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.1.0'
classpath 'com.github.dcendents:android-maven-gradle-plugin:1.3' //添加这行
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.4' //添加这行
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
(二)配置要上传的library/module的gradle文件
applyplugin:'com.android.library'
applyplugin:'com.github.dcendents.android-maven' //添加这行
applyplugin:'com.jfrog.bintray' //添加这行
android {
compileSdkVersion23
buildToolsVersion"23.0.1"
defaultConfig {
minSdkVersion15
targetSdkVersion23
versionCode1
versionName"1.0"
}
buildTypes {
release {
minifyEnabledfalse
proguardFilesgetDefaultProguardFile('proguard-android.txt'),'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir:'libs',include: ['*.jar'])
testCompile'junit:junit:4.12'
compile'com.android.support:appcompat-v7:23.0.0'
}
/**以下都是需要配置的**/
version="1.0.1"
// 定义两个链接,下面会用到。
defsiteUrl ='https://github.com/15189611/PullRefreshRecycleView'// 项目主页。
defgitUrl='https://github.com/15189611/PullRefreshRecycleView.git'// Git仓库的url。
// 唯一包名,比如compile 'com.charles:pullrefreshlibrary:1.0.1''中的
com.charles就是这里配置的。
pullrefreshlibrary : 这个就是你module的项目名称,一般你创建一个项目都是app,你可以修改此名字
1.0.1
group="com.charles"
install {
repositories.mavenInstaller{
// 生成pom.xml和参数
pom{
project{
packaging'aar'
// 项目描述,复制我的话,这里需要修改。
name'PullRefreshRecycleView'// 可选,项目名称。
description'The Android PullRefreshRecycleView.'// 可选,项目描述。
urlsiteUrl// 项目主页,这里是引用上面定义好。
// 软件开源协议,现在一般都是Apache License2.0吧,复制我的,这里不需要修改。
licenses {
license{
name'The Apache Software License, Version 2.0'
url'http://www.apache.org/licenses/LICENSE-2.0.txt'
}
}
//填写开发者基本信息,复制我的,这里需要修改。
developers{
developer{
id'151896911'// 开发者的id。
name'mcharles'// 开发者名字。
email'18670342259@163.com'// 开发者邮箱。
}
}
// SCM,复制我的,这里不需要修改。
scm{
connectiongitUrl// Git仓库地址。
developerConnectiongitUrl// Git仓库地址。
urlsiteUrl// 项目主页。
}
}
}
}
// 生成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/")
failOnErrorfalse// 忽略注释语法错误,如果用jdk1.8你的注释写的不规范就编译不过。
}
// 生成javaDoc的jar,不需要修改。
task javadocJar(type: Jar,dependsOn:javadoc) {
classifier='javadoc'
fromjavadoc.destinationDir
}
artifacts {
archives javadocJar
archives sourcesJar
}
// 这里是读取Bintray相关的信息,我们上传项目到github上的时候会把gradle文件传上去,所以不要把帐号密码的信息直接写在这里,写在local.properties中,这里动态读取。
Properties properties =newProperties()
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"// 上传到maven库。 注意:这里填写你刚刚创建的库的名称 而不是maven
name ="PullRefreshRecycleView"// 发布到Bintray上的项目名字,这里的名字是你创建项目的名称,比如:PullRefreshRecycleView
websiteUrl = siteUrl
vcsUrl =gitUrl
licenses = ["Apache-2.0"]
publish =true// 是否是公开项目。
}
}
(三)在local.properties中为module/libraray配置用户隐私信息
我们会在local.properties中配置很多变量,别的地方动态引用或者读取,这样就可以做到修改一个地方,其它地方都可以不用改了:
sdk.dir=你的sdk路径
# 其实你只需要添加下面两行,第一个填你的用户名,比如我的是mcharles
1 bintray.user=mcharles
2 bintray.apikey=fa*******************aab
注意下我这里为了不泄漏我的ApiKey,就用*代替了,你的要写你的完整的ApiKey喔。
(四) 设置Studio的编码格式为UTF-8 这边如果你的代码有中文注释的话,就会影响到报错,设置编码这边就不贴图了·相信大家都会.(特别注意)
上传项目到Jcenter
准备工作都做完啦,最后一步就是上传操作了,点击AndroidStudio底部的Terminal,观察下Terminal显示的路径是否是你当前项目的root。
1.这里如果你系统配置了gradle的用户环境,输入gradle install,如果没有配置gradle用户环境,输入gradlew install ,需要下载。
这边我教大家一个配置gradle环境,一般我们用Studio开发已经下载过gradle环境这边我们只需要找到相对于的位置
像配置jdk的path一样如:
找到自己的studio安装位置: 比如我的是:E:\android-studio\android-studio\gradle\gradle-2.10\bin
然后复制目录配置到Path里面去就ok
正确的环境路径应该是C:\Users\Administrator\.gradle\wrapper\dists\gradle-3.3-all\55gk2rcmfc6p2dg9u9ohc3hw9\gradle-3.3\bin 这样就可以咯
配置完后你重启Studio,可以输入直接在控制台输入: gradle install
如果没有问题过个几分钟后就会显示BUILD SUCCESSFUL。
2.如果你看到了生成javadoc时编译不过,那么要看下在gradle中task javadoc下有没有failOnError false这句话,在刚才编写gradle时提示过了。如果加了这句而你的javadoc写的不规范会有警告,你不用鸟它。
3.最后一步,运行gradle install后看到BUILD SUCCESSFUL后,再输入上传命令gradle bintrayUpload,等一分钟左右就执行完了,会提示SUCCESSFUL。
4.浏览器https://bintray.com/后会看到你的项目。
上传完成咯,你会发现在项目gradle中依赖如下代码后依赖失败:
这是你还没有将你的项目提交给Bintray的管理员审核,所以不能用。
最后步骤:将上传后的项目提交
原因是我们项目上传完成后还需要Bintray的管理员审核,所以在刚才项目页面点击进去查看详情,点击Add to Jcetner:
之后的页面中填写项目信息,交给Bintray管理员审核:
发送后就所有的步骤完成了,现在就是坐等你的注册邮箱收信息吧,一般时间蛮快的,半天左右吧。
审核通过后你就可以在项目中依赖了·好运码农们~~~~~