注:Android Studio 简称AS
后续无特殊情况,我们都用AS来指代Android Stuidio
在Flash编程领域,AS3是一种编程语言,指代ActionScirpt3 注意区分就可以了,根据上下文进行区别
一、第一个Android工程
- 创建HelloWorld工程,在环境界面点击 Start a new Android Studio Project
- 创建工程向导:注意Application Name 程序名称;Package name 包名(App的唯一标识—身份证)
- 创建工程向导:设备类型和最新版本号,这里只选择手机和平台
- 创建工程向导:选择界面的模板(Empty即可)
二、目录结构–整体和app
1.目录结构:
任何一个新建的项目都会默认使用Android模式的项目结构(Android-下图左侧),但这并不是真实的目录结构,而是被Android Studio转化过的,这种项目结构简单明了,适合快速开发,但是对于新手不适合,不易理解;点击切换到真实的项目结构模式(Project–下图中间,右侧是文件管理真实的目录结构),可以看出,右边2个目录结构是一致的。
2.目录结构-整体
- .gradle 和 .idea: 这2个目录放置的都是Android Studio自动生成的一些文件,我们目前无需关心,也不要手动编辑
- app: 项目中的代码,资源等内容都是放置到这个目录下面的,我们后面的开发工作也是在这个目录下面进行的
- build: 包含了一些编译时候自动生成的中间文件,暂时不需要过多的关心
- gradle: 包含了gradle wrapper的配置文件,使用gradle wrapper的方式不需要提前将gradle下载好,会自动的根据本地的缓存情况决定是否需要联网下载gradle,注:gradle 是一个第3方的打包辅助工具,Android Studio使用这个gradle来进行Androd的打包工作
- .gitignore: git版本管理会用到这个文件,如果没有使用git版本管理,请忽略这个文件,不用理会;此文件的作用是将 指定的目录或文件排除在版本管理之外(通常是编译的中间文件)
- build.gradle: 项目全局的gradle构建脚本,通常这个文件中的内容很少修改。
- gradle.properties 全局的gradle配置文件,这里配置的属性会影响到项目中所有的gradle编译 脚本
【org.gradle.parallel=true取消前面的#就是开启多线程build
org.gradle.jvmargs=-Xmx1536m给虚拟机分配的内存
等等】 - gradlew和gradlew.bat:这2个文件是在命令行界面中执行gradle命令的,其中graldlew是在Linux或Mac系统中使用的,gradlew.bat是在Windows系统中使用的
- androidwork.iml: iml Android Studio自动生成的一个文件,用于标识IntelliJ IDEA项目(AndroidStudio是基于IntelliJ IDEA开发的),我们不需要修改这个文件中的任何内容
- local.properties:这个文件用于指定本机中的AndroidSDK 路径,通常内容都是自动生成的,我们一般不需要修改这个文件,除非我们工程中的Android SDK位置发生了变化,那么久将这个文件中的路径改成新的位置即可
- settings.gradle: 这个文件用于指定项目中所有引入的模块。由于本项目中只有一个app模块,所以此文件中也就只引入了app这一个模块,通常情况下模块的引入都是自动完成的,需要我们手动修改这个文件的情况比较少
3.目录结构 app
上面将整个目录结构的外层目录结构介绍完成了,我们会发现,除了app目录之外,大多数的文件和目录都是自动生成的,我们通常不需要修改;所以app目录 才是我们后续工作的重点
- build 这个目录和外层的build目录类似,主要也是包含了一些在编译时自动生成的文件,不过内部会更多更杂,暂时不需要关心
- libs 第3方jar包存放的目录,存放在这个目录下的jar包会被自动添加到构建 路径中
- androidTest 此处用来编写AndroidTest测试用例的,可以对项目进行一些自动化测试,我们一般用不到,所以暂时不用关心
- java 毫无疑问,java目录就是放置我们所有Java代码的地方,展开该目录,可以看到我们刚才创建的MainActivity文件就在里面
- res 这个目录下面的内容比较多,简单的说,就是项目中使用的所有图片,布局,字符串等字眼都要存放在此目录下面;还有很多的子目录,图片放到drawable目录下,近期为mipmap-xxx也是保存目录的新方式,布局放到layout下面,字符串放到values了下面;
- AndroidManifest.xml
整个Android项目的配置文件,程序中定义的所有四大组件都在这个文件中注册,另外还可以在这个文件中给应用添加应用程序权限声明,后续会详解 - test
此处用来编写Unit Test测试用例的,是对项目进行自动化测试另一种形式 - .gitignore
用于将app模块内的指定的目录或文件排除在版本控制之外,作用和外层的.gitignore文件类似 - app.iml
IntelliJ IEDA项目自动生成的文件,我们不需要关心或修改这个文件中的内容 - build.gradle
app模块的gradle构建脚本,这个文件中会指定很多项目构建相关的配置;后续经常用到的 - proguard-rules.pro
此文件用于指定项目代码的混淆规则,当代码开发完成后,打包安装包文件,如果不希望代码被别人破解,通常会将代码进行混淆,从而 让破解者难易阅读
三、日志工具 Log
通过上面的学习,我们已经成功的创建了一个Android程序,并且对Android项目的目录结构和运行都有了一定的认识;日志Log对应后续的学习和调试都有非常大的帮助
- 使用Adnroid的日志工具Log
Android中的日志工具类是Log(Android.util.Log),这个类提供了如下的5个方法来帮助我们打印日志。
Log.v 用来打印那些繁琐的意义最小的日志信息,对应的级别为verbose,是Android日志里面级别最低的一种
Log.d() 用于打印一些调试信息,对于调试和分享问题是有帮助的,对应的级别为debug,比verbose高一级
Log.i() 用于打印一些比较重要的数据,这些信息是我们非常想看到的,可以帮助我们分析用户的行为数据等,对应级别为info,比debug高一个级别
Log.w() 用于打印一些警告信息,提示程序在这个地方坑你有潜在的风险,最好去修复一下这些出现警告的地方。对应级别为warn,比info高一个级别
Log.e() 用于打印程序中的错误信息,比如程序进入到了catch】语句当中,当有错误信息打印出来的时候,一般都代表你的程序出现严重问题了,必须尽快修复。对应级别为error,比error高
上面介绍了5个方法,每个方法还会有不同的重载
Log.d(“HelloWorldActivity”, “onCreate execute ”)
Log.d()方法传入了2个参数:第1个参数为tag,一般为当前的类名或根据你自己的习惯进行定义,主要用于打印信息的过滤,第2个参数是msg,是想要打印的具体内容。
运行项目:点击顶部工具栏上的运行按钮,或者使用快捷键Shift+F10(Mac系统是control + R)
从打印的消息来看,我们不仅看到了打印日志的内容和tag名,就连程序的包名,打印的时间,应用程序的进程号也可以清楚的看到 - 为什么使用Log,而不使用System.out
大家在学习Java的时候大量的使用了System.out.println()方法来打印日志,在真正的项目中极度不建议使用System.out.println()
因为System.out 日志打印不可控,打印时间无法确定,不能添加过滤器,日志没有级别区分…
Log可以配合Logcat输出窗口(Logcat是一个用于输出Android程序运行日志的窗口,后续会经常用到)
Log配合Logcat的日志输出的优点:
-
AS中直接输入logd,logi等的时候,AS会自动完成剩余代码的填写
-
过滤器配置 Edit Filter Configuration
四、模拟器联机调试
1、 AS找不到模拟器。
build完之后,直接点击Run你的项目,发现下图红色标记处是找不到你的模拟器的。因为需要额外的配置。直接上链接(亲测有效):https://www.cnblogs.com/xuexidememeda/p/9516086.html
2、 测试log工具
在项目–》src–》main–》java下找到入口方法:onCreate,方法里面添加上打印日志方法:
eg:Log.d(“digua”, “onCreate: 第一个Debug”);如下图: