由于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?(二)

Android studio 中引用jar的其实是Maven?(一)的更多相关文章

  1. Android studio 中引用jar的其实是Maven?(二)

    上一篇:Android studio 中引用jar的其实是Maven?(一) 搭建maven仓库: 去了解一个新的事物的时候,最好的方式就是去使用它.例如去了解一座城市的时候,最好的方式就是乘坐公共交 ...

  2. Android Studio如何引用jar包裹(不gradle)

    这和eclipse最大的区别.与非常人的预期开始Android Studio我们很不高兴这一套. 它直接在地图上.首先通过File->Projcet structure打开project结构界面 ...

  3. 关于Android Studio中第三方jar包的Javadoc绑定

    原文地址:http://blog.csdn.net/a739697044/article/details/28116189   现在刚开始从Eclipse转用Android Studio,现在在尝试使 ...

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

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

  5. 在Android Studio中导入jar包

    #1 下载jar包文件, #2 拷贝到libs目录下 #3 打开你的build.gradle,在dependencies加入如下代码 dependencies {compile files('libs ...

  6. 在Android Studio中调用so中的方法

    本节用的so是上节用Android Studio创建的so.想在Android Studio中调用so中的方法,需要先引用so.Android Studio中引用so的方法有二种,下面开始介绍. 一 ...

  7. Xamarin Android中引用Jar包的方法

    新建一个Java Bingdings Library 将Jar包复制,或使用添加已存在的文件,到Jars文件夹中 确认属性中的“生成操作” 如果有类型转换不正确,请修改Transforms文件夹中的相 ...

  8. Android Studio中如何打JAR包

    Android Studio中对于library类型的Moudle,默认打出来的是AAR包, 但有时候我们的SDK还需要共享给一些其他eclipse的项目使用,这样我们就需要输出JAR包, 可以通过在 ...

  9. Android ImageView 不显示JPEG图片 及 Android Studio中怎样引用图片资源

    Android ImageView 不显示JPEG图片 今天在写一个小实例,ImageView在xml里面设置的是INVISIBLE,在代码里须要设置成setVisibility(View.VISIB ...

随机推荐

  1. Ubuntu Sublime 配置

    p { margin-bottom: 0.25cm; line-height: 120% } a:link { } 2018.4.14 Ubuntu Sublime 配置 承 Ubuntu Apach ...

  2. cuda小白基础教程

    一直很想做cuda-GPU编程,很早就将CUDA9.0安装好了,后面就没怎么管它,忙别的去了.敲黑板,划重点,我科研还是很努力的,可是很多人看不见罢了.之前一直在使用粒子方法进行流体模拟,计算时间极其 ...

  3. fiddler实现手机抓包

    对fiddler相关配置 1.允许fiddler捕获http协议,打开fiddler客户端,菜单框选择Tools->Options->HTTPS,勾选图中三项 2.允许远程连接,Tools ...

  4. c#之异步Socket通信

    0.基于上一篇的c#之Socket(同步)通信,在几个大神评论之后,发现是有挺多地方不足的,所以写了一个改进版本的基于c#的异步Socket通信.再加深一下对Socket的使用和理解.其中客户端和服务 ...

  5. [APIO 2012]派遣

    Description 在一个忍者的帮派里,一些忍者们被选中派遣给顾客,然后依据自己的工作获取报偿. 在这个帮派里,有一名忍者被称之为Master.除了Master以外,每名忍者都有且仅有一个上级.为 ...

  6. [SDOI2009]HH的项链

    题目描述 HH 有一串由各种漂亮的贝壳组成的项链.HH 相信不同的贝壳会带来好运,所以每次散步完后,他都会随意取出一段贝壳,思考它们所表达的含义.HH 不断地收集新的贝壳,因此,他的项链变得越来越长. ...

  7. bzoj 2435: [Noi2011]道路修建

    Description 在 W 星球上有 n 个国家.为了各自国家的经济发展,他们决定在各个国家 之间建设双向道路使得国家之间连通.但是每个国家的国王都很吝啬,他们只愿 意修建恰好 n – 1条双向道 ...

  8. ●洛谷 P3616 富金森林公园

    题链: https://www.luogu.org/problemnew/show/3616 题解: 树状数组,,, 本题思路挺巧妙. 考虑这种暴力算法:(设H[i]为i位置的高度,水面的高度为B) ...

  9. [BZOJ]1014 火星人prefix(JSOI2008)

    一边听省队dalao讲课一边做题真TM刺激. BZOJ的discuss简直就是题面plus.大样例.SuperHINT.dalao题解的结合体. Description 火星人最近研究了一种操作:求一 ...

  10. Elasticsearch 学习(一):入门

    一.概念 Elasticsearch 是一个实时分布式搜索和分析引擎.它用于全文搜索.结构化搜索.分析以及将这三者混合使用. 维基百科.英国卫报.StackOverflow.Github 等公司都在使 ...