扫盲Android Studio 仓库jCenter并发布本身的开源库

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处连接和本声明。
本文连接:https://blog.csdn.net/u013231041/article/details/70174354
AS从哪里获取到开源库
首先咱们在使用第三方开源库时,直接在项目的 gradle 文件中添加这样一行代码:
compile 'com.jakewharton:butterknife:7.0.1'
添加完以后,你会发现依懒库中确实出现了这个库文件,那么 AS 具体是去哪里下载这个库的呢?html

jcenter
细心的话会发现项目根目录的 gradle 文件里面有这样的配置java

allprojects {
    repositories {
        jcenter()
    }
}
1
2
3
4
5
这代码的做用就是告诉 AS 使用 jcenter 做为代码仓库!
jcenter 就是 Android library 文件服务器中的其中一个,另一个就是 Maven Central,这两个都是Maven 仓库。 jcenter 由 bintray.com 维护 , Maven Central 则是由 sonatype.org 维护,它们分别存储在不一样的服务器,二者没有任何关系。在 http://jcenter.bintray.com/ 能够看到 jcenter 整个仓库的内容。
那么既然有了两个选择,为何最终会选择使用 jcenter ?
起初,Android Studio 选择 Maven Central 做为默认仓库。若是你使用老版本的 Android Studio 建立一个新项目, mavenCentral() 会自动的定义在 build.gradle 中。
可是 Maven Central 的最大问题是对开发者不够友好。上传 library 异常困难。上传上去的开发者都是某种程度的极客。同时还由于诸如安全方面的其余缘由, Android Studio 团队决定把默认的仓库替换成jcenter。正如你看到的,一旦使用最新版本的 Android Studio 建立一个项目,jcenter() 自动被定义,而不是 mavenCentral()。
有许多将 Maven Central 替换成 jcenter 的理由,下面是几个主要的缘由。android

jcenter经过CDN发送library,开发者能够享受到更快的下载体验;
jcenter是全世界最大的Java仓库,所以在Maven Central 上有的,在jcenter上也极有可能有。换句话说jcenter是Maven Central的超集;
上传library到仓库很简单,不须要像在Maven Central上作不少复杂的事情;
友好的用户界面;
若是你想把library上传到Maven Central,你能够在bintray网站上直接点击一个按钮就能实现;
如何得到特定的库
在文章开头,咱们是这位引入开源库的:compile 'com.jakewharton:butterknife:7.0.1'
单引号里面的内容对应的格式是这样的:GROUP_ID:ARTIFACT_ID:VERSION
GROUP_ID:定义了library的group,一般咱们使用包名来命名;
ARTIFACT_ID:library真实名字;
VERSION:版本号;
当咱们 Sync project with gradle file 时,AS 就会去请求这个地址 http://jcenter.bintray.com/com/jakewharton/butterknife/7.0.1/ 去下载相关的文件。而后再编译使用。git

上传library到jcenter
新建一个项目
一个是主项目:app,一个是依懒库:mylibrary。如图:github

注册账号
到该网址https://bintray.com/signup/oss 我的免费帐号。注意注册邮箱最好用Gmail。
注册完成以后,保存API Key。获取方式以下:web


引入bintray-release
在项目的根目录的build.gradle添加bintray-release的classpath:classpath 'com.novoda:bintray-release:0.3.4' 如图:windows

配置待上传moudle的build.gralde
添加如下代码:
apply plugin: 'com.novoda.bintray-release'api

publish {
    userOrg = 'xxx'//bintray.com用户名
    groupId = 'com.helloandroid'//jcenter上的路径
    artifactId = 'mylibrary'//项目名称
    publishVersion = '1.0.0'//版本号
    desc = 'this is for test'//描述,不重要
    website = 'https://github.com/kuyue'//网站,最好有,不重要
}
1
2
3
4
5
6
7
8
9
10安全

5. 上传代码到库
在Android Studio的Terminal面板进行,执行下面的命令便可:
windows系统:
gradlew clean build bintrayUpload -PbintrayUser=xxx -PbintrayKey=xxxxxxxxxxxxxxxxxxxxxx -PdryRun=false
Mac系统:
./gradlew clean build bintrayUpload -PbintrayUser=xxx -PbintrayKey=xxxxxxxxxxxxxxxxxxxxxx -PdryRun=false
注:user就是用户名,key就是咱们刚才的Api key,dryRun是一个配置参数,当为true的时候,会运行全部的环节,可是不会上传。服务器

最后看到这样的信息就算上传成功!

这时候若是须要引用刚才上传的库,须要这样配置:
(1)、项目根目录gradle文件中这样配置(xxx为你的用户名):

(2)、最后还须要在须要引用的地方添加上如下依懒
compile 'com.helloandroid:mylibrary:1.0.0
固然这样每次要添加依懒时,都要执行步骤一,这样是很不友好的。不过只要咱们完成如下步骤,就能够只须要执行步骤2就能够添加了!
打开网址:https://bintray.com/你的用户名/maven,进入如下页面,

点击库名字,跳转到

再点击Add to JCenter

最后填写信息提交,当审核经过时,会发站内信通知您。经过时就只须要执行步骤2就能够添加依懒!
6. 更新版本
更新版本很容易,只须要更改下库版本号就能够!

publish {
    userOrg = 'xxx'//bintray.com用户名
    groupId = 'com.helloandroid'//jcenter上的路径
    artifactId = 'mylibrary'//项目名称
    publishVersion = '1.0.1'//版本号
    desc = 'this is for test'//描述,不重要
    website = 'https://github.com/kuyue'//网站,最好有,不重要
}
1
2
3
4
5
6
7
8
执行发布命令后,在网站上执行如下操做便可:

7. 解决bug
执行命令行时,可能会出现如下错误信息
(1)如图

解决方法:在要上传的gradle 文件的android节点里面添加如下代码:

lintOptions {
        abortOnError false
    }
1
2
3
(2)如图

出现Could not create package是由于插件建立不了库。
解决方法:咱们手动建立一个


(3)有可能出现乱码问题
解决问题:在项目根目录gradle文件中添加如下代码

allprojects {
tasks.withType(Javadoc) {
    options{
        encoding "UTF-8"
        charSet 'UTF-8'
        links "http://docs.oracle.com/javase/7/docs/api"
    }
  }
}
1
2
3
4
5
6
7
8
9
参考
http://blog.csdn.net/zhcswlp0625/article/details/54895584
https://github.com/hehonghui/android-tech-frontier/blob/master/issue-17/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8Android-Studio%E6%8A%8A%E8%87%AA%E5%B7%B1%E7%9A%84Android-library%E5%88%86%E5%8F%91%E5%88%B0jCenter%E5%92%8CMaven-Central.md
//——————–更新————————
最新换了macbook pro,以前一直使用 windows系统开发。下面记录下从 windows发布开源库转移到 mac下的艰辛历程。如下为运行命令:

./gradlew clean build bintrayUpload -PbintrayUser=xxx -PbintrayKey=xxxxxxxxxxxxxxxxxxxxxx -PdryRun=false
1
出现的错误:

在Terminal 运行命令时,提示无权限 Permission denied 解:在 Terminal 直接输入 chmod +x gradlew 回车便可 jdk版本问题,由于在安装 AS 时官方建议安装jdk6.0到7.0,不建议安装8.0,因此就装了个7.0。运行命令时提示:unsupported major.minor version 52.0。意思是不支持jdk7.0,须要 jdk8.0。在这里也试过网上找不装8.0而能解决问题的方法,不过没有找到有效的方法。所以这里只能装8.0,AS 官网只说了对8.0支持不太好,目前用到如今没有发现什么问题。发现问题了再装回去吧。。。。(卸载 jdk7.0方法:http://docs.oracle.com/javase/8/docs/technotes/guides/install/mac_jdk.html#A1096903 命令行中的%用 sudo代替,由于运行该命令须要管理员权限)。 ndk问题,提示信息:ndk is missing a “platforms” directory。解决方法:直接用 sdk manager去下载 ndk就能够。 提示信息如图: 解决方法: 1.添加bintrayUser、bintrayKey、dryRun 配置,如图: 2.不使用命令行运行,而直接点击操做,按顺序进行如下操做:a, clean project;b,先运行assembleRelease,再运行 publishMavenPublicationToMavenLocal,而后再运行 bintrayUpload 以上就是遇到的坑爹问题,只有想不到,没有遇不到的问题。 ———————————————— 版权声明:本文为CSDN博主「senyoung」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处连接及本声明。 原文连接:https://blog.csdn.net/u013231041/article/details/70174354

相关文章
相关标签/搜索