Android Studio –从Maven Central迁移到JCenter

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

  • 为什么Android Studio的早期版本使用Maven Central?
  • 为什么使用android studio创建的android项目正在使用jcenter?
  • android studio与JCenter存储库分离的原因/好处/目的是什么?
  • JCenter与 Maven Central

当时我已经分享了一些观点,但是我试图深入了解从maven Central到jcenter的迁移。我从几个链接中发现了有趣的细节:

在继续之前,我们将讨论从maven Central到jcenter的迁移,这里简要介绍一下存储库(以防万一,如果您真的不知道!)

什么是存储库?

用Maven术语来说,存储库是一个目录,即存放所有项目jar,库jar,插件或任何其他项目特定工件的目录,并且Maven可以轻松使用它。

在build.gradle文件中,您需要指定在解析用于构建项目的依赖项时要使用的存储库,因此需要在build.gradle文件中放入类似以下内容的东西:

repositories {
    jcenter()
}    

是的,在使用任何外部依赖项之前,您需要至少指定一个存储库。阅读有关依赖管理基础知识
存储库的更多信息

从Maven Central到Jcenter的迁移

  • 现在,这是有关jcenter的详细信息和有趣点,以及从maven Central到jcenter的过渡:
    如前所述,jcenter是与Android的gradle插件一起使用的新的默认存储库。

  • jcenter是Bintray中的Java存储库,它是Java和Android OSS库,程序包和组件的世界上最大的存储库。
    jcenter中的所有内容均通过具有安全https连接的CDN提供。在迁移时(Android Studio 0.8),中央maven 2存储库仅是HTTP,不支持HTTPS。参考:51.6.2。Maven中央存储库。(这可能是Google拥护HTTP的原因之一!)。

  • jcenter()是mavenCentral()的超集,其中包含许多其他存储库和工件。参考:Blog @ Bintray。
    jcenter的人声称,它们的性能比maven Central更好。

  • 与传统的Maven Central相比,Bintray具有不同的软件包识别方法。

  • 如果您确实需要将软件包下载到Maven Central(用于支持旧版工具),则也可以从Bintray进行操作,只需单击一个按钮,甚至自动完成。

关于性能改进,几个Android开发人员的拥护者已经/注意到使用Maven Central进行巨大索引的问题。

我用一个全新的设置目录运行了AndroidStudio,因此将其连接到Maven Central并下载了可用工件的索引。
然后我碰巧看了一下目录的大小。
我的〜/ Library / Cache / AndroidStudioPreview是1.5G,其中的1.2G是由“ Maven”子目录获取的。
这是荒谬的。我们几乎完全不使用索引。它的主要用途是“项目结构”对话框中的“依赖关系”编辑器,但是我们确实不需要为其预先准备索引。MavenCentral具有快速的在线JSON搜索,当有人搜索工件时,我们可以按需使用。在 https://android-review.googlesource.com/#/c/94843/ 中,我们添加了一个lint检查,该检查可以检查依赖项是否是最新的,并且搜索少量工件的操作几乎是即时的。
简而言之,我们真的不需要缓存。它可能有助于在.gradle和Maven .pom文件中完成代码,但这不是一个非常重要的用例,当然,不是所有用户 必须 牺牲1.5G的下载速度和磁盘空间,以便有一天的可能性。

我必须说,在从maven cetnral迁移到jcenter之后,android studio的性能非常明显。之前甚至在4GB RAM配置的笔记本电脑中加载android studio都非常像

无论如何,这不是本研究的结局,我仍然想了解更多有关改进或优点(如果有)的信息。如果您知道jcenter和maven Central或已经玩够了,请分享您的意见。而且,由于这几乎是未公开的内容,因此,我真的很希望能从android工具团队的android开发人员或工程师那里听到有关此迁移的信息。

猜你喜欢

转载自blog.csdn.net/Life_s/article/details/104934485