如果你之前一直是用Eclipse + Adt开发的项目,想要导入到Android Studio中继续开发
点击finish,AS会自动build gradle (此处会耗时一会儿), 完成会有个import-summary.txt 文件,该文件主要是用来介绍gradle在构建过程以及当中遇到的一些问题。比如哪些文件被重新移动或者组合等
导入一个带jar文件的项目到AndroidStudio,如果使用了Android 内置库以外的jar文件,其中一些jar文件将被转换成依赖关系,而另外一些会被显示的导入, 这里会告诉你如何处理一个项目的jar文件没有转换成依赖关系的情况。
如上所示,导入XMLJDOMParser项目,这个项目使用了流行的JDOMParser,是一个开源的项目,没有由Oracle或google或者其他主要的软件供应商管理,但很受欢迎在Java中大量被使用。
查看app目录下的build.gradle文件,可以发现如下:
dependencies {
compile 'com.android.support:support-v4:23.2.1'
compile files('libs/jdom-2.0.3.jar')
}
导入之后发现在libs文件夹下 jdom-2.0.3.jar文件已被保留。
在许多项目中,当你导入它们,jar文件将不被转化成依赖关系,取而代之的只是在build.gradle 文件中对库的一个引用。 但是,在这个项目,jdom 被保留下来,并有一个对jar文件的引用加入,查看gradle文件的依赖关系部分,明确的指向这个版本的jar文件。这就是导入项目是可能出现的情况。
当你使用一个软件库,而那是构建系统已知的软件库,库本身将不会导入。而表示依赖关系的字符串将被添加到build.gradle,以引用该库。如一些Android内置的支持库(com.android.support:support-v4:23.2.1)。如上代码第一种表示方式就是这个情况。但是,当该jar文件没有被识别,它会已其原始状态被导入到该项目,并且对该jar文件的引用会被添加到依赖关系的部分。无论哪种方式,该项目应该还是有效,你应该能够用Android Studio继续进行开发。
下面我们来介绍一下在Android Studio中添加外部的Jar包,Android Studio添加Jar文件的方法有几种,如何添加Jar文件到你应用程序的依赖,取决于你要如何的去使用它。
如果你正在开发一个单一的项目,而你只是使用JAR文件一次,你可以使用一个非常简单的工作流程,那么复制JAR文件放到目录结构中,然后将其添加为一个库;如果你要将JAR文件共享到多个项目中,你还可以使用另一个种简单的办法。下面我们来学习一下这两种方式。
新建一个HelloWord项目,,如下图所示,我们将导入Jdom包(一个解析和生成xml的库)。
1. 方法一:
compile files('libs/jdom-2.0.3.jar')
此时你就可以在java 代码中使用该Jar包了,编译通过就说明我们添加该库是成功的。这种方式是在项目的app modules中添加依赖关系,查看Project Structure中的modules中的app模块,在Dependencies选项卡中,可以从这里添加依赖关系,点击”+” 和 “-” 来添加和删除你的依赖模块。如下图所示:
如果想要移除此Jar包,你可以选择jdom行,点击”-“删除该依赖关系,之后AndroidStudio会重新构建应用程序,然后查看build.gradle 文件中的一行,可以看出已经自动删除了,现在已经完全移除jar包,可以直接删除此jar包。
2. 方法二:
上述方式是一种比较简单的在主应用程序app Modules下添加依赖关系的方式,第二种是新建一个自己的Modules,添加一个jar文件到它自己的Modules,然后该Modules与你的主应用程序有依赖关系。
在项目打开的情况下,选择File –> New Module 选择导入一个现有的JAR 或者 AAR 包作为它自己的模块,点击下一步,然后选择我想要的导入的jar包,JDOM文件。键入所需要的file name,如下所示:
在Project Structure中查看可以看到 Modules中多了刚刚导入的jdom模块了。点击app进入Dependencies依赖关系选项卡,点击+号,选择Choose Modules,选择刚刚添加的jdom模块依赖,点击确定,此时Gradle会再次同步。如下所示:
查看build.gradle 可以最后一行自动为其添加了依赖关系了。
compile project(':jdom-2.0.3')
最后重新rebuild Project,以确保所有代码可以编译通过。以上就是一种创建一个独立的Modules,你现在可以添加其他库到模块当中,它们就会自动成为当前应用程序的一部分
以上就是以不同的方式整合jar文件到你的Android应用程序,并作为依赖。这是了解依赖的一个好的开始,这是一种连接一切代码到你要集成的应用程序中的方法。
接下来会告诉你另外一种方式添加,用一种叫做 “远程存储库”的方式。
前面已经介绍了如何添加一个依赖到一个项目链接到你提供的*.jar文件。你也可以链接到存在的别的地方的库,无论是sdk自带的库或是从”远程仓库”自动下载的库。
Android Studio的依赖系统是基于一个被称为Maven的架构,而Maven仓库是库的”库”。这是一个开发者可以添加库的地方,然后其他开发人员可以下载它们。
现在我们来学习一下如何通过Moven来添加一个远程库,新建一个GsonApp的项目,需要添加一个Gson库,用来处理Json格式的数据解析。
上一讲: Android Studio : Gradle 讲到两个build.gradle 脚本文件,第一个处于顶层目录结构的build.gradle文件,这个文件一般不会去修改他,这里面有两个应用了jcenter ()方法, 这与远程仓库的使用至关重要。还有一个在app目录下的build.gradle文件,包含依赖关系。比如 如下就是一个引用现有库的例子:
compile 'com.android.support:appcompat-v7:23.1.121:23'
它引用了开头字符串为com.android.support的那些库,然后引用了特定的库 appcompat-v7。现在我们来了解这些库来自何处?我们打开SDK Manager,在顶部extras文件夹下Android Support Library 查看该库的版本:
可以看到Android Support Library 的版本23.2.1版本已经安装完成了,因此这种依赖表明 “我要23.2.1版的支持库V7”,明确的引用我下载的这个文件。当你生成你的项目,Gradle 根据这个字符串,然后在一个列表查找它,那是Android Studio安装的一部分。它知道在哪里可以得到该文件。
但是如果使用不属于Android sdk的库呢?有一些Android很流行的开源库,Android Studio同样为你提供了一个非常简单的方法,去寻找并链接到这类库。
搜索Gson,找到Moven Center里面的相关的gson依赖字符串。点击确定,然后在app下的build.gradle中查看,可以看到最后一行已经添加了此字符串了。
compile 'com.google.code.gson:gson:2.6.2'
此时在java代码中测试可以使用此gson库了。如果我能做到这一点,编译并运行应用程序,那么我知道我添加的依赖可以正常使用了。
在上面的操作中可以看到我还没有包含 *.jar 文件到我的项目,不过,Gradle会根据我项目的需要它搜索那些库。如果我需要更改库的版本,可以在build.gradle文件中去修改它的版本,也可以从Project Structure中去添加一个更新的依赖库来。那么,这些库来自何方?它还是如何运作的呢?
我们回到顶层目录里面的build.gradle文件里,我们在看看这两个jcenter() 方法调用。
...
repositories {
jcenter()
}
...
allprojects {
repositories {
jcenter()
}
}
跟踪repositories下jcenter()方法,该方法位于RepositoryHandler.java中
/**
* Adds a repository which looks in Bintray's JCenter repository for dependencies.
*
* The URL used to access this repository is {@literal "https://jcenter.bintray.com/"}.
* The behavior of this repository is otherwise the same as those added by {@link #maven(org.gradle.api.Action)}.
*
* Examples:
*
* repositories {
* jcenter()
* }
*
*
* @return the added resolver
* @see #jcenter(Action)
*/
MavenArtifactRepository jcenter();
它返回一个MavenArtifactRepository实例。通过方法介绍了解到MavenArtifactRepository类封装了repository的url 。该url应该是moven的仓库地址 https://bintray.com/ 。bintray 是一个软件分发服务,它支持gradle使用的功能,它可以让下载需要的库.
可以搜索刚我们测试的Google gson,可以看到搜索到的内容和我们Android Studio中使用的完全一样。 https://bintray.com/bintray/jcenter/com.google.code.gson%3Agson/view
所以jcenter()这个方法,是指向在网络上的这个位置,这就是它是如何得到那个库,并整合到Android Studio项目,这不是唯一可用的Maven仓库,还有原始的仓库,Maven Central,并且gson库也被存储在那里。但是,Google团队已经决定使用bintray仓库。打开url:jcenter.bintray.com 那显示了仓库存储包的顶层视图,这些库都存储在这里。
所以这是关于这些远程依赖如何运作的提示。还有jcenter()方法告诉构建脚本到 jcenter.bintray.com 搜索库,然后app级别的构建脚本对应着实际使用的库,用包名,库名称和版本表示。在生成过程中,Gradle首先查找本地,看它是否能在sdk库找到,如果不能,它搜索远程仓库,当发现了库,就会下载,然后那个库就可以Android Studio中使用了.
以上就是Android Studio添加库的的几种方式。