Android Studio -从Maven Central迁移到JCenter
在android workshop期间,在办公室以及与一些android开发人员的聊天中,我收到了一些关于构建脚本和存储库的问题:
- 为什么早期版本的android studio使用maven central?
- 为什么使用android studio创建的android项目使用jcenter?
- android studio使用JCenter存储库的原因/好处/目的是什么?
- JCenter Vs. Maven Central
当时我已经分享了一些要点,但是我试图深入了解更多关于从maven central迁移到jcenter的信息。我从几个链接中发现了有趣的细节:
- https://stackoverflow.com/questions/24852219/android-buildscript-repositories-jcenter-vs-mavencentral
- https://code.google.com/p/android/issues/detail?id=72061
- https://news.ycombinator.com/item?id=8099840
- https://blog.bintray.com/2014/02/11/bintray-as-pain-free-gateway-to-maven-central/
在继续讨论从maven central到jcenter的迁移之前,先简要介绍一下这个存储库(以防您真的不知道!)
什么是存储库?
在Maven术语中,存储库是一个存放所有项目jar、库jar、插件或任何其他项目的目录特定的工件被存储起来,Maven可以很容易地使用它们。
在构建。gradlefile, you need to specify which repository to use when resolving dependencies for building your project, so you need to put something like the following in your build.gradle file:
存储库{jcenter()}
是的,在使用任何外部依赖项之前,您需要指定至少一个存储库。阅读更多关于依赖管理基础和存储库。
Maven中心到jcenter的迁移
现在,这里是关于jcenter的细节和有趣的地方,以及从maven central到jcenter的转换:
- 如前所述,jcenter是Android的gradle插件使用的新的默认存储库。
- Jcenter是一个Bintray中的Java存储库,这是世界上最大的Java和Android OSS库、包和组件的仓库。
- jcenter中的所有内容都通过CDN提供,并使用安全的https连接。在迁移时(Android Studio 0.8),中央maven 2存储库仅支持HTTP,不支持HTTPS。参考:51.6.2.Maven中央存储库。(这可能是谷歌是HTTPs粉丝的原因之一!)
- jcenter()是mavenCentral()的超集,它包含许多额外的存储库和构件。参考:博客@ Bintray。
- jcenter开发人员声称,他们的性能比maven central更好。
- Bintray的包标识方法与传统的Maven Central不同。
- 如果您确实需要将您的包获取到Maven Central(用于支持遗留工具),您也可以从Bintray完成,只需单击一个按钮,甚至可以自动完成。
关于性能改进,一些android开发人员已经注意到maven central的巨大索引问题。
用…的话说Tor Norbye:
我在一个全新的设置目录下运行AndroidStudio,所以它连接了maven中心并下载了可用工件的索引。
然后我碰巧看到了我的目录的大小。
我的~/Library/Cache/AndroidStudioPreview是1.5G,其中1.2G被“Maven”子目录占用。
那太荒唐了。我们几乎不用索引。它的主要用途是项目结构对话框中的依赖项编辑器,但我们真的不需要为它预先计算索引。MavenCentral有一个快速的在线JSON搜索,当有人搜索工件时,我们可以按需使用。在https://android-review.googlesource.com/#/c/94843/我们添加了一个lint检查,它检查依赖项是否为最新的,并且对少量工件的搜索几乎是即时的。
简而言之,我们真的不需要缓存;它可能有助于.gradle和maven .pom文件中的代码完成,但这不是一个非常重要的用例,当然也不应该让*所有*用户牺牲1.5G的下载速度和磁盘空间来实现一天的可能性。
阅读更多:Maven的索引是巨大的!
我必须说,在从maven central迁移到jcenter之后,android studio的性能是显著的。早前在4GB内存配置的笔记本电脑上加载android studio,都是这样的:
无论如何,这不是这个研究的结束,我仍然想知道更多的改进或优点(如果有的话)。如果您了解或玩过jcenter和maven central,请分享您的意见。而且,由于这几乎是一个未记录的点,我真的很期待听到这个迁移,从android开发人员倡导者或工程师在android工具团队工作。
