简单了解一下 android 应用的开发过程
项目结构
用 Intelli Idea 或者 Android Studio 创建一个 andorid 项目。
项目的主要代码位于 app/src/main 目录中:
$ tree -L 2 android-quickstart/app/src/main
android-quickstart/app/src/main
├── AndroidManifest.xml # 应用的特性配置
├── java
├ └── com
├ └── example
├ └── android_quickstart
├ ├── MainActivity.java # 应用入口
├ └── ui
└── res
├── drawable
├── drawable-v24
├── layout # activity 的 UI
├── menu
├── mipmap-anydpi-v26
├── mipmap-hdpi
├── mipmap-mdpi
├── mipmap-xhdpi
├── mipmap-xxhdpi
├── mipmap-xxxhdpi
├── navigation
└── values
apk 文件
安卓应用的代码、数据和资源文件一起大包成 apk 文件发布,安卓应用在安全沙盒中运行:
- 每个 app 默认使用一个独立的 linux 用户,实现文件的隔离
- 进程在隔离的 vm 中运行
- 使用同一个证书签署的 app 可以共用用户、vm,从而可以访问彼此的文件
- app 可以申请设备的访问权限
app 的组成
Activities:
- 每个交互界面对应一个 Activity
- 其它 app 可以唤起另一个 app 允许的 activity
- 父类:Activity
Services:
- 后台运行的服务
- activity 等组件可以启动、绑定 service
- service 分为用户可感知(后台音乐)和用户无感知(服务调用)两种类型
- 父类:Service
Broadcast receivers:
- 跨 app 的事件广播
- 事件是一个 Intent,BroadcastReceiver 的子类接收并响应事件
Content providers:
- 写入文件系统的持久数据,其它 app 可以操作另一个 app 允许的数据
- 父类:ContentProvider
以上组件通过 Intent 交互。
在 AndroidManifest.xml 中声明所有的组件,以及声明需要的权限。