自从android官方宣布不再提供eclipse adt的更新之后,android studio的推进速度超乎想象得快,不管是github上的源码分享,还是stackoverflow上的问题提问,几乎都是基于android studio开发环境的,而且官方的所有文档都做了调整更新,从guide,training到tools部分,都已经基于android studio来进行讲解说明,eclipse已经几乎找不到影子了,为了顺应趋势,我们也来学习android studio的开发环境使用。

    首先,android studio是官方提供的专门针对android开发者的开发环境,它是基于IntelliJ IDEA的,说到IDEA我想很多人都不陌生,对比eclipse,同样是java语言开发的集成环境,IntelliJ在业界被公认为最好的java开发工具之一,在启动速度、智能代码助手、代码自动提示、重构、J2EE支持、Ant、JUnit、CVS整合、代码审查、 创新的GUI设计等方面的功能可以说是秒eclipse几条街,被大家称为java开发的神器,而旗下的webstorm开发工具,也同样被开发者称为javascript开发神器。

  下面我们来看一下官方列出的android studio的几个特点:

  1.基于gradle的项目构建系统,这让我们在构建android项目的时候更加灵活

  2.可以通过变量配置来生成多个版本的apk文件

  3.拥有大量的代码模板可以快速地帮我们构建android项目

  4.可进行拖拽的ui编辑器

  5.内置link tools代码优化工具,可以捕捉性能,可用性,版本兼容等问题

  这些特点看似跟eclipse大同小异,但是实际使用起来却让人眼前一亮,下面我们就来实际看看android studio的一些优秀特质:

项目和文件结构

  首先我们使用android studio创建一个项目,创建过程省略xxx字,我们可以看到,我们创建的项目会默认按照android studio的android项目视图结构来显示,该视图是扁平化的结构,通过它,我们可以很清楚地看到我们的manifest配置文件目录,java代码目录,res资源文件目录以及对应的gradle项目构建配置文件,如下

  • java/ - android项目的java源代码目录
  • manifests/ - 各个模块的mainfest文件的存放目录
  • res/ - 项目的布局,资源等文件的存放目录
  • Gradle Scripts/ - gradle的配置文件目录

      

如果你以为仅仅如此,那就错了,该视图除了默认的清晰的项目结构,还会自动对资源文件进行归类并放到一个通用目录下,如图所示:

android studio的android项目视图会自动将我们的针对不同屏幕密度的资源文件ic_launcher.png一起归类到ic_launcher.png 目录下,同时dimens.xml也被进行了归类,

这样便方便我们开发者更快速地查找、定位和比较对应的源文件,这在eclipse中是前所未见的。

当然了,我们硬盘上的项目并不是android视图结构所展现出来的那样,上图我们看到的目录结构只是虚拟化出来的,如果我们想查看硬盘上真实项目的结构,我们可以点击左上角的下拉框,切换到project视图

Android Studio的其他项目视图

  紧接上面的操作,我们把android studio切换到了project 视图,如果你之前一直使用eclipse来做android项目开发,那你应该会注意到我们的android studio中创建出来的项目的目录结构跟eclipse完全不同,

  在android studio中,每个项目实例都会包含一个或多个应用程序模块,而每个应用程序模块又会包含完整的源码集合模块,

  包括 src/main/ 和 src/androidTest/ 文件夹,资源,项目构建文件和android的manifest配置文件这些,

  大部分情况下,我们只需要更新src/main/目录下的项目代码来更新项目,同时通过修改build.gradle文件来配置我们的项目构建配置,

  而 src/androidTest/ 这个目录则是留给我们来写测试用例的

我们还可以根据我们的需要自己选择对应的视图目录去关注项目的特定方向,android studio为我们提供了以下几种视图:

  • Packages
  • Project Files
  • Scratches
  • Problems
  • Production
  • Tests

 例如,当我们的代码中出现错误时,我们可以选择problem视图,这时problem视图会直接将我们提示出错的文件列出来,这样我们就能直接定位错误文件从而进行修改完善,如图:

,我故意将MainActivity里的代码写错,此时,我将视图切换到problem,这时就会将我们的错误文件显示出来,是不是很人性化?

如果你想了解更多相关信息,可以参考 IntelliJ project organization 和 Managing Projects

创建新文件

android studio给我们提供了相当方便的快捷键来添加代码文件或资源文件,

  例如: 当你选择了layout布局目录或者布局文件,这个时候,只要你点击ALT+INSERT(MAC下为COMMAND + N),此时会默认弹出文件创建窗口,并且会将对应的文件类型放在第一个,当我们按下回车,此时我们只需要填写文件名等必要信息即可快速创建我们对应类型的文件了,java文件等同上。

是不是很方便,呵呵,接下来我们来了解下android studio中的android 构建系统

Android构建系统(Android Build System)

  Android构建系统(Android Build System)是指用来构建、测试、运行和打包应用程序的工具,这套构建系统在android studio中取代了eclipse ADT中基于ant的系统,它可以作为android studio上一个完整的工具进行使用,同时也可以直接通过命令行来独立调用执行,

  这套系统提供了一些特殊的功能:

  1.自定义、构建和扩展构建过程

  2.使用同一个项目创建具有不同功能的apk

  3.在多个资源集之间重用代码

android构建系统的灵活性使得我们可以在不修改项目核心文件的基础上实现上述的功能,后面我们会进行详细的讲解

 

用来标识应用程序包的标识属性Application ID

跟eclipse不同,在android studio的项目中,我们需要在build.gradle文件中配置application id这个属性来对我们项目的package包做唯一标识,如下:

     apply plugin: 'com.android.application'

     android {
compileSdkVersion 19
buildToolsVersion "19.1" defaultConfig {
applicationId "com.example.my.app"
minSdkVersion 15
targetSdkVersion 19
versionCode 1
versionName "1.0"
}
...

当我们使用构建变量来发布项目时,构建系统允许我们针对不同的产品类型和构建类型定义唯一的applicationId

productFlavors {
pro {
applicationId = "com.example.my.pkg.pro"
}
free {
applicationId = "com.example.my.pkg.free"
}
} buildTypes {
debug {
applicationIdSuffix ".debug"
}
}
....

applicationId虽然是用来唯一标识包名的,但是在manifest中我们还是得指定对应的package,manifest中的package是用来关联我们的R class文件和解决activity及service的注册问题的,如下:

 package="com.example.app">

调试和性能

Android Virtual Device (AVD) Manager

AVD就是我们的android 虚拟设备管理工具及用来管理我们的android 模拟器,它预先提供了一些模拟器,这些模拟器基本都是目前比较受欢迎的一些配置,尺寸以及分辨率

我们只需要点击android studio工具栏上的按钮便可以打开我们的avd工具,如图:

我们可以根据需要直接选择对应的模拟器,也可以根据自己的需求自定义自己的模拟器,android studio的avd提供了非常人性化和直观的界面,如图所示:

内联调试

除了avd更加人性化之外,android studio在debug调试上也更加地方便直观,在调试视图中我们可以快速方便地查看内部变量值、关联的对象引用、方法的返回值、运算表达式以及工具的提示值等相关信息

android studio 简介 (上)的更多相关文章

  1. Android Studio 简介及导入 jar 包和第三方开源库方[转]

    原文:http://blog.sina.com.cn/s/blog_693301190102v6au.html Android Studio 简介 几天前的晚上突然又想使用 Android Studi ...

  2. Android系统简介(上):历史渊源

    上个月,看到微信的一系列文章,讲到Linux的鼻祖-李纳斯的传记<Just for Fun>, 其人神乎其能, 其人生过程非常有趣,值得每个程序员细细品味. 而实际上,对我而已,虽然做软件 ...

  3. 【Android应用开发】Android Studio 简介 (Android Studio Overview)

    一. Intelij IDEA 环境简介 Android Studio 来源 : Android Studio 是 Intelij IDEA 的免费版本 + Android SDK 集成的; -- I ...

  4. Android Studio 简介

    Android Studio是Google于2013 I/O大会针对Android开发推出的新的开发工具,目前很多开源项目都已经在采用,Google的更新速度也很快,明显能感觉到这是Android开发 ...

  5. 一步一步实现android studio代码上传到github。

    本文只注重代码上传能成功就好,不解释什么是git什么事github,git有什么优势. 1,先创建一个android应用, 第二步:创建github账户 和 安装git.网上的文章多如牛毛.唯一要说的 ...

  6. Android Studio用上国产杰出代表夜神模拟器

    背景介绍 在Windows上除了官方的AVD(Android Virtual Device)我们还可以使用更加便捷的国产安卓模拟器,比如杰出的代表就是夜神模拟器. 我们现在是假设你已经安装好了Andr ...

  7. Android Studio用上Visual Studio Android Emulator

    背景介绍 第一次接触Android官方的AVD(Android Virtual Device)时你可能会吐槽又慢又丑,不要紧,微软作为新晋安卓阵营最佳开发商,其实也为我们准备了一个脱胎于Windows ...

  8. Android Studio项目上传到GitHub

    首先,在github上创建仓库:选择Repositories,点击右边的“New”,输入仓库名称,点击“create repositories”. studio的git配置: 安装好git后启动And ...

  9. Android Studio项目上传到Jcenter

    一.将你要发布的moudle的build.gradle中添加代码,gradle的最后添加 PUBLISH_GROUP_ID = 'com.zzti.fengyongge' PUBLISH_ARTIFA ...

随机推荐

  1. Spring学习(二)--IOC

    一.什么是IOC? 孤傲苍狼总结的理解: https://www.cnblogs.com/xdp-gacl/p/4249939.html 我的理解(不知道对不对哈,不对的话请各位大神指出): IOC往 ...

  2. gcc -o test test.c编译报错

    报错内容 /tmp/cc7eQyD4.o: In function `main':test.c:(.text+0x51): undefined reference to `sqrt'collect2: ...

  3. ZOJ2402 Lenny's Lucky Lotto List 简单DP

    Lenny's Lucky Lotto Lists Time Limit: 2 Seconds      Memory Limit:65536 KB Lenny likes to play the g ...

  4. # 20155327 2016-2017-4 《Java程序设计》第七周学习总结

    20155327 2016-2017-4 <Java程序设计>第七周学习总结 教材学习内容总结 了解Lambda语法 包含三个部分 一个括号内用逗号分隔的形式参数,参数是函数式接口里面方法 ...

  5. rabbitmq学习(二):rabbitmq(消息队列)的作用以及rabbitmq之直连交换机

    前言 上篇介绍了AMQP的基本概念,组成及其与rabbitmq的关系.了解了这些东西后,下面我们开始学习rabbitmq(消息队列)的作用以及用java代码和rabbitmq通讯进行消息发布和接收.因 ...

  6. JAVA解压文件

    package com.chauvet.utils; import java.io.File; import java.io.FileOutputStream; import java.io.IOEx ...

  7. jquery中.prev()

    ☆ 遍历 - .prev()方法:取得一个包含匹配的元素集合中每一个元素紧邻的前一个同辈元素的元素集合.选择性筛选的选择器. (previous:上一个,上一页,前一个,以前的......) 示例: ...

  8. java新的语法糖:Java 8 Lambda表达式

    ***************************************************************************

  9. Oracle sql之条件语句 循环语句

    一 IF..THENIF condition THEN   statements 1;   statements 2;   ....END IF; 二 IF..THEN...ELSEIF condit ...

  10. [连载]Java程序设计(03)---任务驱动方式:寻找高富帅和屌丝

    版权声明:本文为博主原创文章,请在转载时说明出处. https://blog.csdn.net/jackfrued/article/details/26163877 任务:相同在上一家公司.公司还须要 ...