Eclipse跟AS的不同

从Eclipse到AS不要带着在Eclipse中的主观色彩去在AS中使用,从项目的构成到构建是不同的,下面列举在Eclipse和AS中的一些概念的区别:

WorkSpace和Project

Eclipse的WorkSpace和AS的Project说的可以说是一个东西,也就是说你可以把在AS中的Project理解为WorkSpace。
所以你在AS中new一个Project相当于在Eclipse中重开了一个WorkSpace,注意第一个箭头,显示模式为Project,建议刚用AS时用这种,方便了解里面的文件结构。

Project和Module

跟上面一样,Eclipse中的一个个project也就是相当于AS中的一个个module。上图的module_1和module_2就是我们习惯的eclipse中的一堆project了,把显示模式换为Android之后就更为直观了:

最下面的就是AS中整个Project中所有Gradle的配置了,当然包括所有module的配置了,括号的名字就表示build.gradle对应的配置对象。

Properties和Module Setting

Eclipse中的Properties也是跟AS的Module Setting对应的

可以看到这里可以像在Eclipse的Properties中一样在这里配置一些东西,比如在Module Setting里给Module添加依赖(dependencies)信息也是可以的,并且可以直接搜maven的项目依赖。

jar

明白了上面的三点就可以很快上手了。首先就来说最简单的添加jar包。

  • 可以跟在Eclipse中一样,把jar包往Module里扔,再在jar右键add as library就可以了,然后最后在你的Module文件夹(像上面的module_1)右键make module一下就可以在代码里用jar里的东西了。
  • 也可以自己手动到module里的build.gradle里添加dependencies,上面的方法做的方法本质上就是这种。
    1
    2
    3
    4
    dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile fileTree(dir: 'D:\\repositories\\libs\\java', include: ['*.jar'])
    }

dir可以是电脑上的目录文件。

library项目

有了前面跟Eclipse的比较后,类似地像在Eclipse中添加项目依赖一样,被依赖的项目得是作为library。在Eclipse中我们是进入到Properties把这个项目设置为library(as a library),所以在AS中也是类似的,我们需要把一个module作为library(这个module可以自己新建module也可以导入module,此外我们是可以把一个AS的Project导进成module的或者直接导Project里的单个module也可以),完成后到这个module(我这里是把module_2作为library)把apply plugin: 'com.android.application'改为apply plugin: 'com.android.library'再然后去掉(删除)module_2的build.gradle里的applicationId "com.example.mrzheng.as"(一个library不需要这个,不然make project或make module时会报错)。
build.gradle(module_2)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
apply plugin: 'com.android.library'
android {
compileSdkVersion 21
buildToolsVersion "21.1.1"
defaultConfig {
minSdkVersion 10
targetSdkVersion 21
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:21.0.2'
}

到这里先确认下你的project(AS)的settings.gradle里有没把module都include进去,没有的话加上:

1
include ':module_1', ':module_2'

最后就可以在module_1里就添加library依赖(module_2)了。进入module_1的build.gradle,找到dependencies加上compile project(':module_2')

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
apply plugin: 'com.android.application'
android {
compileSdkVersion 21
buildToolsVersion "21.1.1"
defaultConfig {
applicationId "com.example.mrzheng.as"
minSdkVersion 10
targetSdkVersion 21
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
sourceSets {
main {
jniLibs.srcDirs = ['libs']
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile fileTree(dir: 'D:\\repositories\\libs\\java', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:21.0.2'
compile project(':module_2')
}

现在make module一下就可以使用依赖的项目了(module_2)。

so

之前的版本不知道怎么样,现在正式版的AS添加so打包进apk里的lib里是很简单的,我们只需要把so文件放到libs文件夹里的对应cpu文件夹里,最后在module的build.gradle里加上jni的sourceSets配置:jniLibs.srcDirs = ['libs'],完整代码看上面的build.gradle(module_1)代码片。

Android Studio Jar、so、library项目依赖的更多相关文章

  1. 【转载】Android Studio jar、so、library项目依赖,原文链接http://zhengxiaopeng.com/2014/12/13/Android-Studio-jar、so、library项目依赖/

    前言 Android Studio(以下简称AS)在13年I/O大会后放出预览版到现在放出的正式版1.0(PS.今天又更新到1.0.1了)历时一年多了,虽然Google官方推出的Android开发者的 ...

  2. Android Studio将Eclipse的项目作为module的依赖库

    情形: 我们现在有一个eclipse的项目,我们想把这个项目作为android studio的module的一个依赖库. 以前我们在eclipse的时候常常是在一个工作区里面把一个A工程 as a l ...

  3. [转][Android][Android Studio] *.jar 与 *.aar 的生成与*.aar导入项目方法

     转自:http://blog.csdn.net/qiujuer/article/details/39754517?utm_source=tuicool [Android][Android Studi ...

  4. [Android Studio] *.jar 与 *.aar 的生成与*.aar导入项目方法(转)

    [Android][Android Studio] *.jar 与 *.aar 的生成与*.aar导入项目方法http://blog.csdn.net/qiujuer/article/details/ ...

  5. Android Studio导入System Library步骤

    转载请注明出处:http://www.cnblogs.com/cnwutianhao/p/6242170.html 请尊重知识产权!!!  同步更新到CSDN:http://blog.csdn.net ...

  6. [转]Android Studio创建Xposed模块项目时BridgeApi的正确添加方式

    使用Android Studio创建的空项目作为Xposed Module App,对于Api Jar包的引用方式,一开始是按照傻瓜式Jar Lib的处理方式,复制XposedBridgeApi-54 ...

  7. 解决Android Studio 3.0导入module依赖后unable to merge index

    解决Android Studio 3.0导入module依赖后unable to merge index 项目需要使用im, 在项目里导入了腾讯im的几个module依赖, 项目无法编译, 报错una ...

  8. Android studio 添加引用Module项目 与 设置Module项目的Libs的Jar在主项目里使用

    前言 添加引用Module项目 设置Module项目的Libs的Jar在主项目里使用 1.在项目里添加libs包,并且加入jar 2.设置这个module项目的build.gradle depende ...

  9. [Android Studio] *.jar 与 *.aar 的生成与*.aar导入项目方法

    主要讲解Android Studio中生成aar文件以及本地方式使用aar文件的方法. 在Android Studio中对一个自己库进行生成操作时将会同时生成*.jar与*.aar文件. 分别存储位置 ...

随机推荐

  1. [C/C++] VS 2015 C++ 插件

    Visual Studio2015 Community一些必备插件 ReSharper C++ 各种语言版本的代码重构,代码风格,代码修正功能,非常强大,可惜不是免费的,不过好在可以破解呢. Vias ...

  2. iOS开源JSON解析库MJExtension

    iOS中JSON与NSObject互转有两种方式:1.iOS自带类NSJSONSerialization 2.第三方开源库SBJSON.JSONKit.MJExtension.项目中一直用MJExte ...

  3. C语言的传值与传址调用

    传值调用并不能改变两个变量的值,而传址能. 为什么,因为,传值调用,仅仅是在函数内,调换参数的值. 而地址所指向的值,改变的不仅仅是函数内,函数外也改变. 请看代码: 这里还要注意:通常我们不会返回局 ...

  4. 浅谈iOS中的单例模式

    iOS中的单例模式     就我本身理解而言,我认为的单例:单例在整个工程中,就相当于一个全局变量,就是不论在哪里需要用到这个类的实例变量,都可以通过单例方法来取得,而且一旦你创建了一个单例类,不论你 ...

  5. 利用mysql对特殊字符和超长字符会进行截断的特性 进行存储型XSS攻击——WordPress <4.1.2 & <=4.2 存储型xss

    转自:Baidu Security LabXteam http://xteam.baidu.com/?p=177 漏洞概述 本次漏洞出现两个使用不同方式截断来实现的存储型xss,一种为特殊字符截断,一 ...

  6. 烂泥:【解决】ubuntu提示ilanni不在sudoers文件中错误

    本文由秀依林枫提供友情赞助,首发于烂泥行天下. 今天在Ubuntu系统中新建一个用户ilanni,添加完毕后.在执行有关sudo的命令时,提示如下的错误信息:ilanni 不在 sudoers 文件中 ...

  7. GMT与UTC简介

    一.简介 许多人都知道两地时间表简称为GMT或UTC,而世界时区表则通称为World Time ,那么GMT与UTC的实质原意又是为何?世界时区又是怎么区分的?面盘上密密麻麻的英文单字代表着什么意义与 ...

  8. nginx 配置单入口

    # 略... location / { try_fiels $uri $uri/ /index.php; } # 略...

  9. linux 截图利器-scrot

    一.前言 linux下截图工具有很多,scrot无疑是众多工具中的一个亮点,下面记录下其安装配置过程 二.使用环境 操作系统: centos 6.2 三.依赖 scrot依赖 giblib, gibl ...

  10. Apache Drill Install and Test

    Drill doc, https://drill.apache.org/docs/hive-storage-plugin/ 发现在国内访问的时候有些标签反应还是很慢,因为它访问了gooleapi的缘故 ...