文章版权声明:http://blog.csdn.net/qq_23179075/article/details/71123452
我们在AS中要使用别人开源库基本都是用下面的方式:
compile ‘org.greenrobot:eventbus:3.0.0’
这样使用我们不用单独去下载别人的源文件、jar包之内的
如果想把自己写的开源项目放在上面怎么弄? 下面是教程和我当时踩过的一些天坑
地址:https://bintray.com/signup/oss (需要科学上网)
一定要点击下图标记的地方,或者直接打开下面的网址,不然上传不起项目
如果你不想单独注册也可直接选择用GitHub登录/谷歌邮箱登录
我这里选择的从谷歌邮箱登录如果直接注册用国内的QQ或者163邮箱可能不能识别
登录成功进入下面的界面
点击上图的 Add New Repostitory
创建自己的maven仓库如下:
创建成功后就可以看到我们刚刚创建的仓库如下图
创建成功后点击右下角的 Add New Package
创建一个新的包,也就是我要上传的项目
新建Library项目或者打开已有的项目, 在Project中的 build.gradle
加入以下代码:
classpath 'com.novoda:bintray-release:0.3.4'
在Library中的 build.gradle
加入以下代码:
android {
...
}
dependencies {
...
}
/** 以下开始是将Android Library上传到jcenter的相关配置**/
apply plugin: 'com.novoda.bintray-release'//添加
//项目主页
def siteUrl = 'http://git.oschina.net/zhengliang_blog/shadow-view'
publish{
repoName = 'MyMaven'//远程仓库名字,不指明,默认是上传到maven
userOrg = 'zhengliang1995'//bintray.com的用户名
groupId = 'com.zhengliang'//jcenter上的路径
artifactId = 'shadow-view'//项目名称
publishVersion = '1.0.0'//版本号
desc = '一个控件阴影效果,支持阴影大小和颜色设置,可以设置控件上下的阴影'//描述,不重要
website = siteUrl//项目主页
}
tasks.withType(Javadoc) {//防止编码问题
options.addStringOption('Xdoclint:none', '-quiet')
options.addStringOption('encoding', 'UTF-8')
options.addStringOption('charSet', 'UTF-8')
}
回到JFrog Bintray个人主页点击Edit
选择API Key
然后复制那一长串的key值
回到AS打开Terminal控制台输入以下代码:
gradlew clean build bintrayUpload -PbintrayUser=zhengliang1995 -PbintrayKey=xxxxxxxxxxxx -PdryRun=false>
用你自己的用户名和API Key 替换一下就行了然后回车稍等当出现下面界面:(如下图↓↓↓) 就说明上传成功了!
回到网页打开MyMaven下我们创建的shadow-view:(如下图↓↓↓) ; 然后点击右下角的 Add to JCenter
按钮
这时候我们需要在下面填写审核描述(乱填都行不能不填,不填可能会审核失败!)
填写完成直接Send,一般一天之后就会审核通过,通过后项目的右下角的Add to JCenter
按钮就会消失!
然后我们选择左下角的Gradle
选项 ,就会看到我们想要的东西
现在就可以复制上面的地址到我们的Androidstudio项目中build.gradle
通过compile
的方式使用自己写的库了!
下面我们来看看上传过程中的常见错误(如果你成功了可以不用看下面):
1.HTTP/1.1 404 Not Found [message:Repo 'MyMaven' was not found]
原因是:找不到Maven库,可能是你没有创建,或者是你repoName
的值跟你创建的仓库名字不一样,还有可能是你的userOrg
也没有写对!
(2).HTTP/1.1 400 Bad Request [message:Please enter a valid VCS URL for your OSS package.]
原因是:找不到包,在对应的 Maven 库下没有创建对应的包,或者是你artifactId
的值跟你创建的包名字不一样!