首先我们在使用第三方开源库时,直接在项目的 gradle 文件中添加这样一行代码: compile 'com.jakewharton:butterknife:7.0.1' 添加完之后,你会发现依懒库中确实出现了这个库文件,那么 AS 具体是去哪里下载这个库的呢?
compile 'com.jakewharton:butterknife:7.0.1'
细心的话会发现项目根目录的 gradle 文件里面有这样的配置
allprojects { repositories { jcenter() } }
这代码的作用就是告诉 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 的理由,下面是几个主要的原因。
在文章开头,我们是这位引入开源库的: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/ 去下载相关的文件。然后再编译使用。
classpath 'com.novoda:bintray-release:0.3.4'
apply plugin: 'com.novoda.bintray-release' 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'//网站,最好有,不重要 }
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. 更新版本 更新版本很容易,只需要更改下库版本号就可以!
gradlew clean build bintrayUpload -PbintrayUser=xxx -PbintrayKey=xxxxxxxxxxxxxxxxxxxxxx -PdryRun=false
./gradlew clean build bintrayUpload -PbintrayUser=xxx -PbintrayKey=xxxxxxxxxxxxxxxxxxxxxx -PdryRun=false
compile 'com.helloandroid:mylibrary:1.0.0
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'//网站,最好有,不重要 }
执行发布命令后,在网站上执行以下操作即可: 7. 解决bug 执行命令行时,可能会出现以下错误信息 (1)如图 解决方法:在要上传的gradle 文件的android节点里面添加以下代码:
lintOptions { abortOnError false }
(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" } } }
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下的艰辛历程。以下为运行命令:
出现的错误:
以上就是遇到的坑爹问题,只有想不到,没有遇不到的问题。