Android Studio -从Maven Central迁移到JCenter

这篇文章最初发表于Techno Talkative博客通过Paresh Mayani。请随意在这里或在那里

在android workshop期间,在办公室以及与一些android开发人员的聊天中,我收到了一些关于构建脚本和存储库的问题:

  • 为什么早期版本的android studio使用maven central?
  • 为什么使用android studio创建的android项目使用jcenter?
  • android studio使用JCenter存储库的原因/好处/目的是什么?
  • JCenter Vs. Maven Central

当时我已经分享了一些要点,但是我试图深入了解更多关于从maven central迁移到jcenter的信息。我从几个链接中发现了有趣的细节:

在继续讨论从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工具团队工作。