Android Studio -从Maven Central迁移到JCenter
在android研讨会期间,在办公室和与一些android开发人员的聊天中,我收到了一些关于构建脚本和存储库的问题:
- 为什么早期版本的android studio使用maven central?
- 为什么android项目,使用android studio创建,是使用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是一个Java存储库在Bintray,这是世界上最大的Java和Android OSS库、包和组件的回购。
- jcenter中的所有内容都通过CDN提供,并使用安全的https连接。在迁移的时候(Android Studio 0.8),中心maven 2存储库只支持HTTP,不支持HTTPS。参考:51.6.2.Maven中央存储库.(这可能是谷歌是HTTPs粉丝的原因之一!)
- jcenter()是mavenCentral()的超集,它包含许多额外的存储库和工件。参考:博客@ Bintray.
- jcenter的人说,他们的性能比maven center好。
- Bintray与传统的Maven Central有不同的包标识方法。
- 如果您确实需要将包放到Maven Central(用于支持遗留工具),您也可以从Bintray中完成,只需单击一个按钮,甚至可以自动完成。
关于性能改进,一些android开发人员已经面临/注意到maven central的巨大索引问题。
我用一个全新的设置目录运行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 cetnral迁移到jcenter之后,android studio的性能是显而易见的。之前在4GB内存配置的笔记本电脑上加载android studio,都是这样的:
无论如何,这不是这次研究的结束,我仍然想知道更多的改进或优点(如果有的话)。如果您对jcenter和maven central有足够的了解或了解,请分享您的意见。而且,由于这几乎是一个没有记录的点,我真的很期待听到这个迁移,从android开发人员倡导者或在android工具团队工作的工程师。

