Android studio终于到了2.0的时代,之前的版本一直想尝试去用,结果IDE各种水土不服。不想花精力去看。
最近发现好像情况好很多了。所以写一下学习笔记,顺便翻译一些google 开发者关于android studio的说明。
1. 安装
具体就不说了,只能说,最好翻个墙,VPN什么的,安装期间下载一些东西下不了就切换到VPN。另外模拟器下个x86版的好像感觉快一点。
2. 创建工程,工程目录说明
2.1 首先创建一个project
2.2 左边生成的目录树是这样的:
可以看到上面应该是项目不同的显示方式。不过我觉得先看这两种吧,其他自己也在摸索。
我觉得如果涉及到Gradle的变更,你切换为 Android视图比较清晰,不会乱。因为在Project视图下,gradle放置的地方在app和day02(项目里我自己建了两个模块),模块外也有。可能初学会很混乱。而在Android视图下,这些都归到一个目录下,就算名字相同,后面也带有说明,不会搞错。
2.3 先看看Project视图下一些对我们有用的目录和文件,android视图后面再说。(标红色的是经常用的)
.gradle 包含的 gradler 包装文件。
.idea IntelliJ IDEA 设置目录
build此目录用来存储所有项目模块的生成输出。
grade包含cradler-wrapper文件
gradle.properties 整个项目 Gradle 设置
local.property 文件里开头写了:这是android studio生成的,如果你更改了,可能会被擦除。
可自定义特定于计算机的属性生成系统,如安装 SDK 的路径。因为文件的内容是特定于本地安装的 SDK, local.properties
不应在git中保持跟踪。
.gitignore git设置忽略跟踪的文件(如果有的话)
settings.gradle 设置gradle 需要构建的子模块
build.gradle 所有模块共有的构建选项(在各个模块下的build.gradle 则是每一个模块自己个性的构建选项)
您可以编辑此文件,以便指定应用程序的模块所使用的默认生成设置,还可以设置keystore位置以及key alias,以便应用程序在发布模式下时可以直接构建,而不需要你手动再填写。此文件是项目的组成部分,必须保持它在源代码版本控制系统(比如git)。
app/day02 项目中的Module(模块),相当于Eclipse 中的project
2.4 看看模块里(app/day02)的目录结构
build 模块编译后输出的文件在这个目录下
build.gradle子模块自己的构建选项
libs 用到的jar包和so 和 .a库
src/main 工程的java 文件,资源文件,布局文件统统放这里
main/java 工程需要的java package放在这里
main/AndroidManifest.xml 呵呵
main/res 资源文件,和eclipse中的res差不多。有些区别,见2.4.1
main/jni NDK中C和c++文件放这里
main/assets 原始的文件放置这里,比如www web项目
其他文件,目录不说了。
2.4.1 在src/main/res下的目录结构
drawable 位图文件 (PNG、 JPEG 或 GIF),9.PNG 和 描述 Drawable 形状或 Drawable 对象包含多个状态 (正常、 压,或集中)的XML 文件
color用于描述颜色的 XML 文件
anim用于编译成动画对象的 XML 文件
layout屏幕布局xml文件
menu用于定义应用程序菜单的 XML 文件
mipmap为应用程序启动器图标(ic_launcher.png)选择最佳分辨率的图片放置在这里
注意,在androidmanifest.xml中需要这么申明启动器图标:
values用于定义其他XML文件中需要用到的自定义元素类型
xml用于配置应用程序组件的杂项 XML 文件
raw 对于任意的原始资源文件。保存在这里的资产文件本质上和保存在assets/
目录是一样的。唯一的区别是您如何访问它们。这些文件由 aapt 处理,必须从R
类使用资源标识符的应用程序引用。例如,这是媒体,如 MP3 或 Ogg 文件的好去处。
2.5 如果想创建的模块被其他模块引用(作为库模块)
比如:1. 好多模块需要共用某个相同的程序或界面,可以将相同的部分放到库模块
2. 一个程序有收费和免费的不同,但大部分主体程序是一样的。可以将主体程序放置在库模块
2.5.1 直接创建库模块(选择 android library)
2.5.2 将原本不是库模块转为库模块,我也不知道有什么简便方法,所以请重新创建一个库模块,然后将普通模块的文件拷到这里
2.5.3 库模块的其他特性:
1. 不能单独运行,也不能导出为 jar 包(未来的SDK会支持)
2. 一个程序可以引用多个库模块,然后可以在每个库中指定资源的相对优先级。这允许您以累积的方式使用在应用程序中建立的资源。当从应用程序中引用的两个库定义的相同的资源 ID 时,这些工具从库中选择具有较高优先级的资源,并放弃其他。(所以如果资源ID冲突,不解决的话,某个优先级低的资源就没了)
3. 库模块也可以引用别的库模块,以及导入 jar包
2.5.4 开发者网站说,出于可持续发展考虑,需要注意以下的问题:
1. 库模块有自己的R类,所以有可能资源ID会冲突,最好使用模块名前缀在避免冲突。
2. 库模块不能导出为jar,本身可以包含本地 jar包(在libs文件夹下,需要手动指定路径)。
3. 库模块可以依赖外部jar包(例如maven上的)。在模块设置里可以添加,并且库模块和依赖的应用程序必须清单文件中的<uses-library>
声明他们的外部库。
3. 模块中不能包含原始的资源文件
库模块中(保存在assets/
目录) 的原始资源文件不会被引用。你开发的应用程序使用的任何原始资产资源必须存储在assets/
目录的应用模块本身。其他资源文件保存在res/
目录下的,比如xml(风格,颜色,形状)是可以被应用程序引用的。
4 .SDK版本必须低于或等于 Android 应用程序模块
库模块是作为从属应用模块的一部分进行编译,所以库模块中使用的 API 必须与用于编译应用模块的 Android 库的版本相兼容。一般情况下,库模块应该使用和引用库模块的应用程序相同的API 级别(低于它也是可以的)
比如:一个库模块使用API 1.6 ,那引用它的应用程序模块的API必须大于等于1.6
今天写到这结束。下一篇写一下真机调试的简单设置。