作者Talent•C
转载请注明出处
前言
简单学习过Java
基础语法后,正式进入Android
开发的学习中,像我一样安卓开发零起点的小白来说,第一步就是要熟悉Android
系统及我们要是使用的开发环境Android Studio
。
开始之前给大家推荐两本书,都是比较适合初学者的;
郭霖 著作的《第一行代码》,我购买的是第二版的,全书基于Android 7.0
,使用的开发用具Android Studi 2.2
。
另外《疯狂android讲义》也是不错的选择。
Android系统架构
Android
大致分为四层架构(由上往下): 应用层 、应用框架层 、系统运行库层 、Linux内核层。
应用层:
所有安装的app都是运行在这一层级上的,如你下载的微信客户端等。
应用框架层:
这一层主要提供了构建应用程序可能使用的各种API
,我们开发的app就是基于这些API
完成的。
系统运行库层:
这一层是C/C++
实现的一些Android
功能库,如SQLite
库提供了数据库支持,OpenGL|ES
库提供了3D绘图等。
Android的运行时库,运行时库中包含了 Dalvik虚拟机; 在 Android 5.0 之前是Dalvik虚拟机,5.0之后改为 ATR运行环境,它使得每一个Android
应用都可以运行在一个独立进程中,并且拥有自己的虚拟机实例。
Linux内核层:Android
系统是基于Linux
内核的,这一层为设备的各种硬件提供底层驱动,如显示驱动,音视频驱动等。
Android四大组件
提到Android
就不能不提四大组件,我们来看看 四大组件 都是什么?Android
四大组件分别是: 活动(Activity) 、 服务(Service) 、 广播接收器(Broadcast Receiver) 、内容提供器(Content Provider)。
活动(Activity):
Activity 是所有控件的容器,程序中所有看到的东西都是放在活动中, 与OC
中的UIViewController
及其相似甚至完全一样。
服务(Service):
Service 比较低调了,它不显示在界面上,但是它会在后台默默运行着,即使退出app也可以继续运行。
广播接收器(Broadcast Receiver):
Broadcast Receiver 允许你的应用接收来自各处广播消息,如电话,短信等,他也可以发出广播消息。
内容提供器(Content Provider):
Content Provider 为应用间数据共享提供支持,如你的app访问电话簿中的联系人。
搭建开发环境
- JDK: JDK 是
Java
语言的软件开发包。 - Android SDK: 谷歌提供的
Android
开发工具包。 - Android Studio:
Android
开发环境, 与Xcode
作用相同。可以在google官网下载,下载完毕后直接按着提示安装就可以。
安装Android Studio
完毕后会出现一个欢迎界面,点击next进行配置即可;
安装好Android Studio
,我们创建第一个Android项目:
点击 Start a new Android Studio project
进入如下界面
下一步
等待编译完成,工程创建完毕
工程创建完毕我们来看看工程结构是什么样的?
上面看到的图片不是工程的真实目录,我们点击上图中的Android
区域选择Project
选项,此时我们看到是真实的工程目录结构;
我们从上到下有如下目录:
(1) .gradle
和.idea
: 这两个目录都是放置Android Sudio
自动生成一些文件,我们可以忽略它。
(2) app
: 项目中的代码/资源文件等都会放在这里,是我们经常打交道的目录。
(3) build
: 这个目录也不需要我们过多关心,它主要包含了一些在编译时自动生成的文件。
(4) gradle
: 此目录包含了gradle wrapper
的配置文件,使用gradle wrapper
的方式不需要提前将gradle
下载好,而是会根据缓存情况自动下载,Android Sudio
默认是启用gradle wrapper
方式的,如需要修改可以在 Android Studio导航栏 ->File ->Setting ->Bulid, Extension, Deployment ->gradle,进行配置。
(5) .gitignore
: 版本控制相关的。
(7) build.gradle
: 全局构建的脚本,通常不需要修改。
(8) gradle.properties
: 全局的gradle
配置文件,在这里配置的属性会影响项目中所有的gradle
编译脚本。
(9) FirstAndroidProject.iml
: iml文件是所有Intellij IDEA
项目都会自动生成的一个文件(Android Sudio
基于Intellij IDEA
开发的),我们不需要修改。
(10) local.properties
: 本机中Android SDK
路径信息, 自动生成的,一般不需要修改,除非的本机sdk路径发生变化。
(11) setting.gradle
: 这个文件用于指定项目中所有引入的模块,我们这项目中只有一个app模块,所以此文件只引入了app模块,通常情况下模块引入都是自动完成。
这就是整个工程的最外层目录结构介绍完毕,我们将上述中的app
目录展开,其目录为:
(1) build
: 与最外层build
类似,主要包含了一些在编译时自动生成的文件。
(2) libs
: 项目中使用到的第三方jar
包,放在此目录下。
(3) androidTest
: 编写测试用例,可以对项目进行自动化测试。
(4) java
: 我们写的java
代码。
(5) res
: 存放资源文件,如图片,布局文件,字符串等,图片等放在drawable
目录下,布局放在layout
目录下,字符串等放在valus
目录下。
(6) AndroidManifest.xml
: 这是整个app的配置文件与iOS
中的info.plist
文件作用相同。
(7) test
: 测试单元,是项目自动化测试的一种。
(8) .gitignore
: app模块的git版本控制。
(9) app.iml
: Intellij IDEA
项目都会自动生成的一个文件。
(10) build.gradle
: app模块的构建脚本,一般情况不需要修改。
(11) proguard-rules.pro
: 用于项目代码指定混淆规则的文件。
所有目录到此都已经介绍完毕,我们继续剖析项目结构中的配置文件-AndroidManifest.xml
Android
程序中是代码与UI分离开的,UI及布局通过layout目录下文件实现的,当然也可以使用代码构建,但是谷歌推荐使用前一种方式。
日志工具的使用
开发中调试利器之一 日志工具,在Android 开发中不再使用 System.out
这种形式的log输出了,而是改用 Log.v()、Log.d()、Log.i()、Log.w()、Log.e()。
Log.v(): 用与打印最为琐碎,意义最小的日志信息对应级别verbose
,是Android
日志级别里最小的。
Log.d(): 用于打印调试信息,这些信息对于程序调试最有帮助的,对应级别debug
,比verbose
高一个级别。
Log.i(): 用于打印一下比较重要信息,可以帮你分析用户行为数据,对应级别info
,比debug
高一个级别。
Log.w(): 用于打印警告信息,提示潜在风险,对应级别warn
, 比info
高一个级别。
Log.e(): 用于打印程序中错误信息,如程序崩溃,对应级别error
比warn
高一个级别。
代码示例:
Log.d(“自定义标记”, “输出内容”);
小技巧:
- 键盘输入logd
Android Studio
会有完整代码提示,此时按下回车即可快速补全。 - 因为 Log.d 需要一个标记,所以我们可以在类中定义一个常量, 可以输入logt 此时也会代码提示, 按回车自动补全
完整代码示例:
public class Person
{
private static final String TAG = “Person”;
public void showLog ()
{
Log.d(TAG, “showLog: “);
}
}
到这里大家会有一个小小的疑惑为什么每个log输出时都需要一个标记呢?别急我们现在就看看有啥用。
首先我们在底部工具栏找到 “Android Monitor” 点击后在底部出现一个对话框,在对话框左上角我们选中 “logcat” 此时就是log输出的窗口,在这个窗口上方中间位置有一个下拉选项我们可以设置对应log输出级别以便我们查看log,默认verbose
,同一级别log输出可能还是会有很多,也不是很方便查找,那我们就可以通过log上的标记进行过滤了,在对话框右上角选中Regex
,在其后面的下拉框中添加我们自定义的log输出标记,然后选在我们自定义的log标记进行过滤就可以很方便找到了。
总结
今天事情比较多,时间比较零散,就暂时学这么多吧,下一篇文章会详细学习Android
四大组件之一的 活动(Activity),和一些简单的app配置相关的内容。