Hello Android

来源:互联网 发布:mac ppt 播放视图设置 编辑:程序博客网 时间:2024/05/17 02:13

Hello Android

整理一下最近学习 Android 做的笔记,大部分内容来自网络、书籍、课堂。

Android 系统架构


Android大致可以分为四层架构,五块区域,从上到下依次为:

  1. 应用层

    Android 应用开发一般说的就是这里了,所有安装在手机上的应用程序都是属于这一层的,比如系统自带的联系人、短信等程序。

  2. 应用框架层

    此处是 Java 代码封装的应用程序框架(各种管理器),Android 自带的应用就是使用这些API完成的,我们也同样通过使用这些API来构建自己的应用程序。该应用程序的架构设计简化了组件的重用;任何一个应用程序 都可以发布它的功能块并且任何其它的应用程序都可以使用其所发布的功能块(不过得遵循框架的安全性限制) 。同样,该应用程序重用机制也使用户可以方便的替换程序组件。 隐藏在每个应用后面的是一系列的服务和系统, 其中包括;

    (1)丰富而又可扩展的视图(Views),可以用来构建应用程序, 它包括列表(lists),网格(grids),文本框(text boxes),按钮(buttons), 甚至可嵌入的web 浏览器。

    (2)内容提供器(Content Providers)使得应用程序可以访问另一个应用程序的数据(如联系人数据库), 或者共享它们自己的 数据

    (3)资源管理器(Resource Manager)提供 非代码资源的访问,如本地字符串,图形,和布局文件( layout files )。

    (4)通知管理器 (Notification Manager) 使得应用程序可以在状态栏中显示自定义的提示信息。

    (5)活动管理器( Activity Manager) 用来管理应用程序生命周期并提供常用的导航回退功能。

  3. 系统运行库层

    这一层包含两部分,首先是Sqlite、Webkit 等第三方组件,然后是 Dalvik 虚拟机(JVM 的移动优化版,最新版本应该是 ART)和 核心库(其实就是Java API)。

  4. Linux内核层

    Android系统是基于Linux 2.6内核的,这一层为Android设备的各种硬件提供了底层的驱动,如显示驱动、音频驱动、照相机驱动、蓝牙驱动、Wi-Fi驱动、电源管理,以及内存管理,进程管理, 网络协议栈和驱动模型。 Linux 内核也同时作为硬件和软件栈之间的抽象层。

由此可见顺带学习点儿 Linux 就非常棒了。

Android 的版本

Android 系统版本发行速度非常快,目前最新的是 L,也就是 5.0,不过普及度还不高,2.x,3.x的版本占有率已经非常低了,因此学习 Android 的话一般可以先不考虑这些兼容性问题,直接从 4.0 开始就好。

最新统计数据在http://developer.android.com/ about/dashboards/,当然,通常是访问不了,不要在意这些细节。下图为 Android 版本的历史变革:


开发环境

Android 正常开发工具为 Android SDK +Eclipse + ADT

Android SDK 就是软件开发工具包了,包含了应用开发所依赖的各种库和各种工具,可以通过它来更新、下载 Android 各个版本的源码、文档等,更新不了的同学可以看一下这里:

Eclipse 搞 Java 的都知道了。

ADT 是 Android Development Tools 的缩写,是 Eclipse 的插件。

理论上只要有 Android SDK 就已经可以开发 Android 应用了,但是 Android App 项目文件还是非常多的,纯命令行 + 编辑器的开发方式肯定是不合适的。为了方便开发,Google 已经还做了一个Android SDK +Eclipse + ADT的打包版本Android Bundle,这样就省去了分开下载和配置的麻烦了,下载解压缩即可。

Tips:Eclipse 可能已经不是最佳的 Android 开发工具了,Google 正在基于 Intellij IDEA 开发 Android Studio,不过目前还不稳定,版本更新非常频繁,喜欢尝鲜的同学可以从 Android Studio 或者 Intellij IDEA 开始学习 Android 开发。不过碰到问题找身边的人解决起来可能会比较麻烦,毕竟使用 Eclipse 的还是占多数。

Android 虚拟机

Android 虚拟机我认为就是个坑(可能是我电脑配置太烂了),听说在 Linux、Mac下跑的会快一点儿,还有使用 Genymotion 的替代方案,但我觉得体验怎么也不会比真机来的爽,所以……

First Blood

环境配置起来之后就要测试一下了,首先手机 USB 连接电脑,安装驱动,Eclipse 中直接 File→New→Android Application Project,一路 Next 完成后 Run,正常情况下程序就运行起来了。

回头看 Eclipse 生成的项目文件,一大堆,比较重要的是 srcresgen目录和 AndroidManifest.xml 文件

  • src 就是放置 Java 代码的位置了
  • res 用于放置App 所用的资源文件,包括图片、动画效果、布局等等,并且不同的文件要放在各自的分类中
  • gen是自动生成的目录,不需要也不应当进行手动操作。当资源文件放置好之后,Eclispe 会在 R.java 文件自动为这些资源生成唯一 ID,在开发中就可以通过 ID 来使用这些文件了
  • AndroidManifest.xml 是 App 的配置文件,内容非常多,用到什么查什么,在 SDK 目录下的 doc 中都有详细的说明

日志工具 Logcat

运行 Android App 的时候,Eclipse 的下方会蹦出运行日志,这就是 Logcat 了,如果没有,也可以手动 show view 打开 Logcat,这里记录了 Android 系统的日志,信息量非常那个大。

通过 Log 工具类和 Logcat 的 filter 就能非常好的进行程序的调试了。

Tips:Log 工具类其实使用起来还是比较繁琐的,每次输出都要带上 TAG,推荐另一个日志工具类DebugLog,该类对 Log 进行了简单的封装,自带 TAG且输出的时候会带上方法名和代码行号,调试起来更加方便了,Github 地址:https://github.com/MustafaFerhan/DebugLog

Android 四大组件

Android 应用的四大组件分别是活动(Activity)、服务(Service)、广播接收器(Broadcast Receiver)和内容提供器(Content Provider),这里简单介绍一下:

Activity 一般翻译为活动,其实就是打开 App 看的界面(GUI),面子工程就是在这里搞的

Service 无界面在后台默默地运行,即使用户退出了应用,服务仍然是可以继续运行的。

Broadcast Receiver 广播接收器可以允许你的应用接收来自各处的广播消息并做出反映,比如电话、短信等,当然你的应用同样也可以向外发出广播消息。

Content Provider 内容提供器则为应用程序之间共享数据提供了可能,比如我们的应用可以调用联系人信息,这就是联系人应用提供的内容,其实也还是从数据库读数据,只是数据在别人那里。

0 0