由于Studio比eclipse多了一步对工程构建的步骤,即为build.gradle这个文件运行,因此其引入第三方开发jar包与lib工程对比Eclipse已完成不同,引入第三方jar与lib工程显得并没有那么友好了,因为过程中会涉及更多内容,而且你必须认清楚studio的目录结构。 
举个例子: 
下图是我在git上面下载的一个工程,工程中包括了一个lib工程和第三方jar包。 
 
以上为一个工程的projest视图,由这个视图可以看出,其中有两个代码模块,一个是demo,一个是library,这两个代码模块会被粗体文字标示出来。还有一个大的文件分支:External Libraries,由字面上的意思就是,第三方依赖的库文件。然后,下面一推的jar包。 
还有其他的一些文件,一些gradle脚本相关的文件,如果第一次使用studio你会很惊讶,究竟这些文件又啥用呢?其实除了demo和library之外的文件都是这个工程的构建文件,这个工程的建立依赖了这些文件。因此如果还不够明白,我们可以切换到android工程视图来看。

 
上图是一个工程的android视图,由视图可以看出,该工程下面包含了三个部分:demo,library,Gradle Scripts。 
demo是主体工程,library是依赖库,那么Gradle Scripts就是这个工程的构建脚本了。Gradle Scripts下面可以到脚本的一些属性设置项,settings决定了脚本目标模块是谁,而三个不同的build.gradle则针对不同的模块,针对其后的括号内容。

下图是这个工程的的build.gradle(project)的内容: 
 
由上图可知,负责构建project的gradle脚本,仅仅定义了gradle的版本,并且注释着:

<code class="hljs lua has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">    // NOTE: Do <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">not</span> place your application dependencies here; they belong// <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">in</span> the individual <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">module</span> build.gradle files</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li></ul>

貌似这样看来瞬间对studio的工程结构清晰了很多,可是问题又来了:在android视图下面,第三方android的jar包去哪里了,即External Libraries去哪里?而在project视图下,这些jar又是在哪里下载的?

关于第一个问题,为何在android视图下面没有显示第三方jar包我还不清楚,是studio犯抽了还是故意隐藏掉,不得而知。 
关于在哪里下载,这个必须好好找找原因。 
在第一次打开使用各个模块的build脚本之后,你会发现,studio开始下载一些工具库,包括在project视图下面的第三方jar包,而这些jar在哪里定义?哪里下载呢?

切换回project视图,你会发现这些第三方jar包都是被定义在各个模块中的脚本中,而这些脚本都引用了仓库,maven仓库,又脚本上段可以看出这个仓库名称”jcenter()“. 

既然是一个代码仓库,那么总会有下载地址的吧,所以在脚本里面,按住ctrl,选中”jcenter()“这个方法,跳到这个方法实现类里面,如图: 

找到这个方法定义之后,在往上找,找到该类: 

ctrl+点击该类,你会发现惊喜。没错,仓库的地址定义在这个类ArtifactRepositoryContainer里面:

然后打开以上网址,你会惊讶地发现,这个仓库实在有太多代码块了,按着jar包名称,可以慢慢找到之前定义好的jar包。 

至于他们如何对这些jar包进行下载的,有待进一步研究maven仓库。

下一篇: Android studio 中引用jar的其实是Maven?(二)

转载于:https://www.cnblogs.com/wuwa/p/6191520.html

Android studio 中引用jar的其实是Maven?(一)相关推荐

  1. Android Studio(5)---引用jar及so文件

    Android Studio(5)---引用jar及so文件 Android studio的项目,明明把第三方的jar文件拷贝到了module的libs文件夹下,为何还是无法再代码中调用jar包中的A ...

  2. Android Studio中解决jar包重复依赖导致的代码编译错误

    在原本的代码中已经使用了OKHTTP和rxjava,然后今天依赖retrofit的时候一直报错 Program type already present: okhttp3.internal.ws.Re ...

  3. android jni传入接口,在Android studio中编写jni ndk接口并打jar包

    开发环境:Android Studio 3.0 1.新建一个Android Library工程 2.添加一个FingerprintJniLib类 3.编写FingerprintJniLib nativ ...

  4. android开发中dx.jar,Android Studio:无法加载dx.jar

    当我在Android Studio中运行我的模块时,我收到此错误: 错误:Android Dex:[GradleDevBuild]无法加载dx.jar 我已经无休止地搜索了一个在线解决方案,但一切都与 ...

  5. android studio字符串转整型,Android Studio 中的FindBugs插件使用,轻松帮你发现Bug (转)...

    在日常开发过程中难免会因为一时疏忽而留下一些Bug,这些Bug就是埋在程序里的定时炸弹,如果不能及时铲除就会导致程序的不稳定,异常或闪退的现象,从而导致用户的体验的下降.那么怎么才能找出这些埋在程序里 ...

  6. 导入eclipse工程到Android Studio中

    ref: 从 Eclipse 迁移至 Android Studio | Android Studio https://developer.android.com/studio/intro/migrat ...

  7. Android Studio 中的FindBugs插件使用,轻松帮你发现Bug (转)

    在日常开发过程中难免会因为一时疏忽而留下一些Bug,这些Bug就是埋在程序里的定时炸弹,如果不能及时铲除就会导致程序的不稳定,异常或闪退的现象,从而导致用户的体验的下降.那么怎么才能找出这些埋在程序里 ...

  8. linux gradle仓库位置,如何在Android Studio中使用Gradle发布项目至Jcenter仓库

    简述 目前非常流行将开源库上传至Jcenter仓库中,使用起来非常方便且易于维护,特别是在Android Studio环境中,只需几步配置就可以轻松实现上传和发布. Library的转换和引用 博主的 ...

  9. Android Studio中导入第三方库

    之前开发Android都是使用的eclipse,近期因为和外国朋友Timothy一起开发一款应用,他是从WP平台刚切换使用Android的,使用的开发环境时Android Studio,为了便于项目的 ...

最新文章

  1. 使用Uboot启动内核并挂载NFS根文件系统
  2. Vue_双向绑定解析以及指令介绍
  3. 中国乙二醇型汽车防冻液市场运营能力分析与投资战略规划研究报告2022-2028年版
  4. 温州大学《机器学习》课程课件(十一、降维)
  5. C语言学习及应用笔记之一:C运算符优先级及使用问题
  6. len()与cap()的区别
  7. 汇编语言---子程序设计举例(两组数据相加)
  8. Spring : 基于tx标签的声明式事物
  9. delphi 选择文件夹目录_系统小技巧:不装软件 批处理为文件夹加锁
  10. (9) tomcat中实现同一虚拟机中所有应用程序单点登录SSO
  11. linux内核源码下载地址
  12. 2021美赛成绩查询证书下载
  13. 批量WORD转换为PDF
  14. 自由曲面透镜设计matlab,实现LED台灯均匀照明的自由曲面透镜仿真设计
  15. 计算机硬件的五大组成部分
  16. int和long long有符号整形 负数比正数多一个
  17. 缓解眼睛疲劳的一些解决方案
  18. VO,DTO,BO,POJO,PO的概念介绍
  19. Linux系统下 修改服务器用户密码
  20. 股票数据API接口合集:腾讯股票接口、麦蕊智数股票接口、和讯网股票接口、新浪股票接口、雪球股票数据、网易股票数据

热门文章

  1. 超图桌面版加载obj 3D模型 - 2
  2. 重写与重载的区别 以及 重写中super的使用
  3. Hibernate -- Dao层 -- CURD -- 随记
  4. 倍福TwinCAT(贝福Beckhoff)常见问题(FAQ)-如何获取标准驱动器扭矩值获取电流值
  5. 工作四年的php程序员自述 一路走过来的风风雨雨
  6. js Promise学习
  7. python队列join
  8. 13个对Android开发者有帮助的工具和资源(转自android吧(www.and8.com))
  9. 项目管理九大知识体系:
  10. Matlab参考函数