如何让别人一行代码就能使用自己的library
序:一直很好奇为什么我使用github上的许多开源项目时,只要在gradle上写上一行compile 'com.android.volley:volley:1.0.0'
就OK了。正好这段时间想把自己写的几个自定义view放上去于是花了一天时间终于成功实现了。步骤其实很简单
- 准备工具Android Studio
- 首先要去bintray注册一个账号。
打开在module下的
local.properties
文件,添加一下代码bintray.user=USER_NAME//这里自己替换为刚注册的用户名 bintray.apikey=YOUR_API_KEY//apikey在Your Profile页面的最下面可以看到 #developer developer.id=YOUR_ID//你的昵称,可以随意填 developer.name=YOUR_NAME//真实名字,随意填 developer.email=YOUR_EMAIL//你的邮箱
新建一个
project.properties
文件,如果有就不用新建了。加上一下内容#project project.name= //你的项目名称 project.groupId= //groupId,如果你的包名为com.android.test。一般填com.anroid就可以了 project.artifactId= //项目名,如果你的包名为com.android.test。一般填test就可以了 project.packaging=aar //你是Android项目不用改 project.siteUrl= //填你项目的所在地址,一般填github的路径 project.gitUrl= //git路径,这里我就是在siteUrl上加了个.git #javadoc javadoc.name= //生成的文档的名字,填project.name就可以了
在module下的
build.gradle
后面追加以下代码ext { bintrayRepo = 'maven' bintrayName = 'per.yrj' publishedGroupId = 'per.yrj' libraryName = 'IndexedListView' artifact = 'indexed-list-view' libraryDescription = 'this is a lib'//描述信息 siteUrl = 'https://github.com/mycolorful/IndexedListView' gitUrl = 'https://github.com/mycolorful/IndexedListView.git' libraryVersion = '1.0.1' developerId = 'mycolorful' developerName = '****' //替换为自己的 developerEmail = 'mycolorful@live.com' licenseName = 'The Apache Software License, Version 2.0' licenseUrl = 'http://www.apache.org/licenses/LICENSE-2.0.txt' allLicenses = ["Apache-2.0"] } apply from: "bintrayUpload.gradle"//这一句别忘了,用来引用下面的文件
接下来在module下新建一个
bintrayUpload.gradle
文件(如果你不想做这一步的话那就直接把apply from: "bintrayUpload.gradle"
给删了,然后加上apply from: 'https://raw.githubusercontent.com/nuuneoi/JCenter/master/installv1.gradle'
apply from: 'https://raw.githubusercontent.com/nuuneoi/JCenter/master/bintrayv1.gradle'
效果是一样的,可以直接跳到第7步了)
apply plugin: 'com.github.dcendents.android-maven'
apply plugin: 'com.jfrog.bintray'
version = libraryVersion
if (project.hasProperty("android")) { // Android libraries
task sourcesJar(type: Jar) {
classifier = 'sources'
from android.sourceSets.main.java.srcDirs
}
task javadoc(type: Javadoc) {
source = android.sourceSets.main.java.srcDirs
classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
}
} else { // Java libraries
task sourcesJar(type: Jar, dependsOn: classes) {
classifier = 'sources'
from sourceSets.main.allSource
}
}
task javadocJar(type: Jar, dependsOn: javadoc) {
classifier = 'javadoc'
from javadoc.destinationDir
}
artifacts {
archives javadocJar
archives sourcesJar
}
// Bintray
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 = bintrayRepo
name = bintrayName
desc = libraryDescription
websiteUrl = siteUrl
vcsUrl = gitUrl
licenses = allLicenses
publish = true
publicDownloadNumbers = true
version {
desc = libraryDescription
gpg {
sign = true //Determines whether to GPG sign the files. The default is false
passphrase = properties.getProperty("bintray.gpg.password")
//Optional. The passphrase for GPG signing'
}
}
}
}
group = publishedGroupId // Maven Group ID for the artifact
install {
repositories.mavenInstaller {
// This generates POM.xml with proper parameters
pom {
project {
packaging 'aar'
groupId publishedGroupId
artifactId artifact
// Add your description here
name libraryName
description libraryDescription
url siteUrl
// Set your license
licenses {
license {
name licenseName
url licenseUrl
}
}
developers {
developer {
id developerId
name developerName
email developerEmail
}
}
scm {
connection gitUrl
developerConnection gitUrl
url siteUrl
}
}
}
}
}
至此就差不多完成了。
7. 开始上传:
打开Terminal,输入gradlew install
,如果输出
BUILD SUCCESSFUL
那么恭喜你,我们可以离成功只有一步之遥了。接着输入gradlew bintrayUpload
,如果接着输出了(这个过程可能比较久)
SUCCESSFUL
这就说明你已经将项目成功上传到bintray上了。你可以到bintray在maven下面,就能有一个项目了。
8. 进入你的项目,点击Add to Jcenter
直接点send
等待审核通过(两三个小时)。
9. 在这里你可以看到自己的gradle地址,别人使用你的项目时只需要在Gradle中复制这一行上去就可了
参考链接:如何使用Android Studio把自己的Android library分享到jCenter和Maven Central
Android Studio发布项目到Jcenter
http://www.jianshu.com/p/0e7b8e14f0cd/comments/1050253