Android Studio 中的maven仓库使用
Android Studio是从哪里得到的库?
先问一个简单的问题,我们平时在使用第三方库的时候,短短一行代码就可以引用这个库里的所有代码,是不是很神奇?难道是Android studio 从google搜索然后下载了一个合适的给我们?
compile "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"compile 'com.android.support:appcompat-v7:25.3.1'testCompile 'junit:junit:4.12'compile 'com.android.support.constraint:constraint-layout:1.0.2'compile 'com.google.code.gson:gson:2.8.1'compile 'org.greenrobot:eventbus:3.0.0'compile 'com.orhanobut:logger:2.1.1'compile 'com.android.support:design:25.3.1'
上边这些库都是从哪里来的呢?好多人都是只知其一不知其二,其实是来自于这里
repositories {jcenter()}
jcenter是一个由 bintray.com维护的Maven仓库 。Android Studio是从build.gradle里面定义的Maven 仓库服务器上下载library的。Apache Maven是Apache开发的一个工具,提供了用于贡献library的文件服务器。总的来说,只有两个标准的Android library文件服务器:jcenter 和 Maven Central。同理,Maven Central 则是由sonatype.org维护的Maven仓库。
除了标准服务器外,我们还可以创建自己的服务器,然后把library放上去。相比于自己的服务器,上传到标准的服务器是个更为明智的选择
那两个标准库之间有何区别呢?
其实,这两个标准库之间没什么区别,只不过有的library在jcenter有的在Maven Central,just so so。两个仓库都具有相同的使命:提供Java或者Android library服务。上传到哪个(或者都上传)取决于开发者。
起初,Android Studio 选择Maven Central作为默认仓库。如果你使用老版本的Android Studio创建一个新项目,mavenCentral()会自动的定义在build.gradle中。
但是Maven Central的最大问题是对开发者不够友好。上传library异常困难。上传上去的开发者都是某种程度的极客。同时还因为诸如安全方面的其他原因,Android Studio团队决定把默认的仓库替换成jcenter。正如你看到的,一旦使用最新版本的Android Studio创建一个项目,jcenter()自动被定义,而不是mavenCentral()。
那么gradle是如何从仓库上获取一个library的?
我们就用下面这个讲一下
compile 'com.android.support:appcompat-v7:25.3.1'
一般来说,我们需要知道library的字符串形式,包含3部分
GROUP_ID:ARTIFACT_ID:VERSION
上面的例子中,GROUP_ID是com.android.support ,ARTIFACT_ID是appcompat-v7,VERSION是25.3.1。GROUP_ID定义了library的group。有可能在同样的上下文中存在多个不同功能的library。如果library具有相同的group,那么它们将共享一个GROUP_ID。通常我们以开发者包名紧跟着library的group名称来命名。然后ARTIFACT_ID中是library的真实名称。至于VERSION,就是版本号而已。
那么在添加了上面的依赖之后会发生什么呢?简单。Gradle会询问Maven仓库服务器这个library是否存在,如果是,gradle会获得请求library的路径,一般这个路径都是这样的形式:GROUP_ID/ARTIFACT_ID/VERSION_ID。通过下载获得相应的library文件。然后Android Studio 将下载这些文件到我们的电脑上,与我们的项目一起编译。整个过程就是这么简单,一点都不复杂。
什么是arr文件
仓库中存储的有两种类型的library:jar 和 aar。jar文件大家都知道,但是什么是aar文件呢?
aar文件时在jar文件之上开发的。之所以有它是因为有些Android Library需要植入一些安卓特有的文件,比如AndroidManifest.xml,资源文件,Assets或者JNI。这些都不是jar文件的标准。因此aar文件就时发明出来包含所有这些东西的。总的来说它和jar一样只是普通的zip文件,不过具有不同的文件结构。jar文件以classes.jar的名字被嵌入到aar文件中。其余的文件罗列如下:
- /AndroidManifest.xml (mandatory)
- /classes.jar (mandatory)
- /res/ (mandatory)
- /R.txt (mandatory)
- /assets/ (optional)
- /libs/*.jar (optional)
- /jni//*.so (optional)
- /proguard.txt (optional)
- /lint.jar (optional)
可以看到.aar文件是专门为安卓设计的。
Android Studio 中的maven仓库使用相关推荐
- 拥抱 Android Studio 之四:Maven 仓库使用与私有仓库搭建
使用.创造和分享 笔者曾经不思量力的思考过『是什么推动了互联网技术的快速发展?』这种伟大的命题.结论是,除了摩尔定律之外,技术经验的快速积累和广泛分享,也是重要的原因. 有人戏称,『写 Java,首先 ...
- Android studio 中引用jar的其实是Maven?(一)
由于Studio比eclipse多了一步对工程构建的步骤,即为build.gradle这个文件运行,因此其引入第三方开发jar包与lib工程对比Eclipse已完成不同,引入第三方jar与lib工程显 ...
- linux gradle仓库位置,如何在Android Studio中使用Gradle发布项目至Jcenter仓库
简述 目前非常流行将开源库上传至Jcenter仓库中,使用起来非常方便且易于维护,特别是在Android Studio环境中,只需几步配置就可以轻松实现上传和发布. Library的转换和引用 博主的 ...
- Android Studio中的mavenCentral、jcenter、google仓库
转载自:https://juejin.cn/post/6844903987557171213 一.Android Studio中依赖是从哪里得到 是从工程的build.gradle里面定义的Maven ...
- 【Android Protobuf 序列化】Protobuf 使用 ( protobuf-gradle-plugin 插件简介 | Android Studio 中配置插件 | AS 中编译源文件 )
文章目录 一.protobuf-gradle-plugin 插件简介 二.Android Studio 中配置 protobuf-gradle-plugin 插件 三.Android Studio 中 ...
- android studio 中 gradle 配置与说明
首先在android studio中,gradle工具版本和gradle版本(或者插件版本).gradle工具版本就是我们安装android studio的时候,同时也会安装gradle工具版本,因为 ...
- android studio抛出,Android Studio中新的项目不能运行,抛出错误(Android Studio new pr
刚才我已经安装,并开始在Android Studio中工作,并配置我需要开始上项目的工作一切之后创建的新项目. 在新创建的项目,我没有改变任何东西,然后试图运行项目. 但它不工作,抛出一些相关性错误, ...
- Android Studio 中的 gradle 介绍及build.gradle配置文件详解
不同于 Eclispse,Android Studio 是采用 Gradle 来构建项目的,Gradle 是一个非常先进强大的项目构建工具,它使用了一种基于 Groovy 领域的特定语言(DSL)来声 ...
- 导入eclipse工程到Android Studio中
ref: 从 Eclipse 迁移至 Android Studio | Android Studio https://developer.android.com/studio/intro/migrat ...
最新文章
- CVPR2019|微软、中科大开源基于深度高分辨表示学习的姿态估计算法
- DeepChem | PyTorch中用自定义层实现DeepChem的GraphConvLayer
- DNSBIND——DNS的子域授权和定义转发服务器
- 荣耀9将要回归金属材质,网友直呼:看着就很贵
- [洛谷P4705]玩游戏
- python填充空值_Python机器学习(九十一)Pandas 填充(Imputation)空值
- react 逆地理 高德地图_在react中使用原生的高德地图
- 那些年伴我一起成长的SAP装备
- 直接销毁_战机报废,发动机怎么处理?美国直接销毁,中国改造成扫雪神器
- selenium浏览器驱动下载地址整理
- 谈Servlet与JSP
- [CMake] 简单的样例工程
- 一、理解网络编程和套接字
- java学生信息管理系统
- 怎样制作网吧服务器,网吧无盘系统怎么做之装置服务器系统
- 中望cad文字显示问号怎么办_中望CAD图纸显示乱码?如何快速解决字体问题
- CIF/4CIF/QCIF/D1
- __stdcall调用约定
- 学习之 “Spark的安装配置”
- 企业如何通过APS系统进行产能规划?