"浅谈Android"第一篇:Android系统简介
- Android系统架构
- Andorid已发布的版本
- Android应用特色
- Android开发环境
- Android程序结构
- Logcat工具
- Hello World
1,Android系统架构
有图有真相: 这是Android系统架构图,够一目了然了吧,Android大致可以分为四层架构,五块区域。- Linux内核层(Linux Kernel)
- 系统运行层
- 应用框架层(Application Framework)
- 应用层(Applications)
2,Android已发布的版本
有图有真相: 从图中我们能看到,Android最新版已经5.0了,名叫Android 5.0 Lollipop,中文简称为”棒棒糖“。自从2008年9月,谷歌正式发布了Android 1.0系统,这也是Android系统最早的版本,随后的几年,谷歌以惊人的速度不断更新发布Android系统,2.1、2.2、2.3系统推出使Android占据了大量的市场。2011年2月,谷歌发布了Android 3.0系统,这个系统版本是专门为平板电脑设计的,但也是Android为数不多比较失败的版本,推出之后一直不见什么起色,市场份额也少的可怜。不过很快,在同年10月,谷歌又发布了Android 4.0系统,这个系统版本不再对手机和平板进行差异化区分,既可以应用在手机上也可以应用在平板上,除此之外,还引入了不少特性。 那么Android目前市场使用情况如何呢?如图所示: 图片来源自维基百科 自2009年12月起的Android用户版本分析。直至2014年5月,Android的Jelly Bean为最被广泛使用的版本,在所有用户中佔了61%。3,Android应用特色
Android主要有什么特色呢,有以下几个方面来体现:
- 四大组件
- 丰富的系统控件
- SQLite数据库等持久化技术
- 地理位置定位
- 强大的多媒体
- 传感器
4,Android开发环境
开发环境搭建所需要的软件,配置等攻略,相信大家网上搜一搜,这类文章太多了。这里只强调重要几个工具:Android SDK、Eclipse、ADT。
4.1,Android SDK Android SDK谷歌提供的Android开发工具包,在开发Android程序时,我们需要引用该工具包,里面包含了开发Android应用程序的API。 4.2,Eclipse 开发Java应用程序的神器,最好用IDE工具之一,特点是开源、超强的插件功能、可支持多种语言开发。当然除此之外,谷歌也推出了Android Studio,专门针对Android程序定制的,但因为Android Studio才刚推出不久,不太稳定,毕竟新工具问题还是比较多的,Eclipse被应用已经很成熟了,网上各种关于Eclipse疑难杂症的解决方案很多,相比Android Studio就比较少了。 4.3,ADT ADT全称叫做"Android Development Tools",是谷歌提供的一个Eclipse插件,用于在Eclipse提供一个强大的、集成的Android开发环境。5,Android程序结构
有图有真相:
从图中看是不是一目了然,那么接下来就一一讲解吧。
5.1,src 毫无疑问,src目录是放置我们所有Java代码的地方,它在这里的含义和普通Java项目下的src目录是完全一样的。 5.2,gen 这个目录里的内容都是自动生成的,主要有一个R.Java文件,你在项目中添加任何资源都会在其中生成一个相应的资源ID,这个文件永远不要手动去修改它。 5.3,assets 这个目录里主要可以存放一些随程序打包的文件,在你的程序运行时可以动态读取到这些文件的内容。另外,如果你的程序中使用到了WebView加载本地网页的功能,所有网页相关的文件也都存放在这个目录下。 5.4,bin 这个目录页不需要过多的关注,它主要包含了一些在编译时自动产生的文件。当然,会包括一个编译好的安装包,后缀为.apk的文件。 5.5,libs 如果你的项目中使用到了第三方的jar包,就需要把这些jar包放在libs目录下,放在这个目录下的jar包都会被自动添加到构建路径里去。 5.6,res 这个目录下的内容就有点多了,简单点说,就是你在项目中使用到的所有图片、布局、字符串等资源都要存放在这个目录下,前面提到的R.Java中的内容也是根据这个目录下的文件自动生成的。当然这个目录下还有很多子目录,图片放在drawable目录下,布局放在layout目录下,字符串放在values目录下。 5.7,AndroidManifest.xml 这是你整个Android项目的配置文件,你在程序中定义的所有四大组件都需要在这个文件中注册。另外还可以在这个文件给应用程序添加权限声明,也可以重新指定你创建项目时指定的程序最低兼容版本和目标版本。 5.8,proguard-project.txt 在发布你的程序时候,有些apk文件容易被人反编译,所以此时这个文件就发挥作用了,用来混淆你的程序代码,让别人不那么容易看到源代码。 5.9,project.properties 指定了编译程序时候所用的SDK版本6,Logcat工具
有图有真相:
日志在任何项目的开发过程中都会起到非常重要的作用,在Android项目中如果你想要查看日志则必须要使用Logcat工具。 Android提供了一个日志工具类是Log,总共有个等级,级级递增。
6.1,Log.v()
这个方法用于打印那些最为琐碎的,意义最小的日志信息。对应级别 verbose,是Android 日志里面级别最低的一种。
这个方法用于打印一些调试信息,这些信息对你调试程序和分析问题应该是有帮助的。对应级别 debug,比 verbose 高一级。
6.3,Log.i()
这个方法用于打印一些比较重要的数据,这些数据应该是你非常想看到的,可以帮你分析用户行为的那种。对应级别 info,比 debug 高一级。
6.4,Log.w()
这个方法用于打印一些警告信息,提示程序在这个地方可能会有潜在的风险,最好去修复一下这些出现警告的地方。对应级别 warn,比 info 高一级。
6.5,Log.e()
这个方法用于打印程序中的错误信息,比如程序进入到了 catch 语句当中。当有错误信息打印出来的时候,一般都代表你的程序出现严重问题了,必须尽快修复。对应级别 error,比 warn 高一级。 小提醒:定制自己的日志工具
比如,你正在编写一个比较庞大的项目,期间为了方便调试,在代码的很多地方都打印了大量的日志。最近项目已经基本完成了,但是却有一个非常让人头疼的问题,之前用于调试的那些日志,在项目正式上线之后仍然会照常打印,这样不仅会降低程序的运行效率,还有可能将一些机密性的数据泄露出去。
那该怎么办呢,难道要一行一行把所有打印日志的代码都删掉?显然这不是什么好点子,不仅费时费力,而且以后你继续维护这个项目的时候可能还会需要这些日志。因此,最理想的情况是能够自由地控制日志的打印,当程序处于开发阶段就让日志打印出来,当程序上线了之后就把日志屏蔽掉。
public class LogUtil { public static final int VERBOSE=1; public static final int DEBUG=2; public static final int INFO=3; public static final int WARN=4; public static final int ERROR=5; public static final int NOTHING=6; public static final int LEVEL=VERBOSE; //发布新版本时候 等级为6 public static void v(String tag,String msg){ if(LEVEL <=VERBOSE){ Log.v(tag, msg); } } public static void d(String tag,String msg){ if(LEVEL <=DEBUG){ Log.d(tag, msg); } } public static void i(String tag,String msg){ if(LEVEL <=INFO){ Log.i(tag, msg); } } public static void w(String tag,String msg){ if(LEVEL <=WARN){ Log.w(tag, msg); } } public static void e(String tag,String msg){ if(LEVEL <=ERROR){ Log.e(tag, msg); } }}
可以看到,我们在 LogUtil 中先是定义了 VERBOSE、 DEBUG、 INFO、 WARN、 ERROR、NOTHING 这六个整型常量,并且它们对应的值都是递增的。然后又定义了一个 LEVEL 常
量,可以将它的值指定为上面六个常量中的任意一个。接下来我们提供了 v()、 d()、 i()、 w()、 e()这五个自定义的日志方法,在其内部分别调用了 Log.v()、 Log.d()、 Log.i()、 Log.w()、 Log.e()这五个方法来打印日志,只不过在这些自定义的方法中我们都加入了一个 if判断,只有当 LEVEL 常量的值小于或等于对应日志级别值的时候,才会将日志打印出来。
7,Hello World
好了,说了这么多,这些只是一些理论的东西,要想更深入的理解,必须要自己动手做Demo,我们可以去创建一个Hello World程序试试,用Eclipse+ADT帮我们创建的默认项目就是Hello World.更多相关文章
- android实现静默安装和跳过卸载弹窗直接卸载应用
- 如何实现在 Android(安卓)Studio 上开发系统应用(自带系统签名)
- android 学习一 android开发环境搭建
- Android(安卓)权限介绍
- Android退出方式
- Android弹幕实现:基于B站弹幕开源系统(6)带用户头像且头像从网络加
- android动态改变桌面图标
- 真正的系统-系统与UI即任务的分离
- 深入浅析Android坐标系统