安卓系统架构多年经验总结:《Android程序的编译,安装和运行》 | Android DevCamp 讲师简介:汪文俊,中国科技大学硕士,原IBM系统工程师,现为小米科技MIUI首席架构师,开源C编译器项目ucc的作者。 话题简介:Android程序的编译,安装和运行。从程序员的观点探索Android系统提供的编程抽象,从程序的整个生命周期讨论一下Android系统结构。 ### Android程序的编译、安装与运行 #### 讲师介绍 本次分享的讲师是汪文俊先生,他拥有中国科技大学硕士学位,曾担任IBM系统工程师,目前在小米科技担任MIUI首席架构师,并且是开源C编译器项目ucc的作者。凭借其丰富的经验和深厚的技术功底,汪文俊对Android系统架构有着独到的理解和见解。 #### 主题概述 本演讲将深入探讨Android程序的编译、安装和运行过程,旨在帮助开发者更好地理解Android应用程序的工作原理。通过本主题的学习,可以深入了解Android系统的内部机制以及如何利用这些机制优化程序性能。 ### Android程序结构详解 #### HelloWorld示例解析 我们来看一个简单的HelloWorld示例来理解Android程序的基本结构。 1. **AndroidManifest.xml**:这是程序的核心配置文件,定义了应用程序的所有组件(如Activity、Service等),并指定了它们之间的权限和交互方式。 - `<manifest>`标签定义了应用的基本信息,如包名(`package`)。 - `<application>`标签包含了所有与应用程序相关的组件。 - `<activity>`标签定义了一个Activity,它是用户界面的一个基本单元。 - `<intent-filter>`标签指定了该Activity可以响应哪些Intent类型,例如主入口(`android.intent.action.MAIN`)和启动类别(`android.intent.category.LAUNCHER`)。 2. **res/**:资源目录,包含所有的非代码资源文件。 - `layout/`:布局文件,定义了界面上元素的排列方式。 - `hello_world.xml`:定义了一个EditText控件,用于显示文本。 - `values/`:值资源目录,如字符串资源、颜色资源等。 - `strings.xml`:定义了字符串资源,如`hello_world`。 3. **src/**:源代码目录。 - `com/example/android/HelloWorld.java`:主Activity的Java实现。 - 继承自`Activity`类。 - `onCreate()`方法是Activity的生命周期方法之一,在Activity启动时被调用。 - 使用`setContentView()`方法加载指定的布局文件。 ### 编译流程 #### 资源处理 1. **aapt工具**:资源编译工具,用于处理资源文件。 - 将资源文件(如XML布局文件、图片等)转换为二进制格式。 - 生成`R.java`文件,其中包含了资源的引用ID,方便Java代码访问这些资源。 2. **生成资源文件** - `resources.arsc`:最终的资源文件,包含了所有应用资源的信息。 #### Java代码编译 1. **javac工具**:Java编译器,用于编译Java源代码。 - 将Java源代码编译成字节码文件(`.class`文件)。 2. **生成字节码文件** - `javaclassfiles`:编译后的字节码文件。 #### 字节码转换为Dex文件 1. **dx工具**:用于将Java字节码转换为Dalvik可执行文件格式(DEX)。 - `classes.dex`:Dalvik虚拟机可以执行的文件格式。 ### 安装流程 1. **生成APK文件** - `aapt`和`apk`工具用于将所有资源和代码打包成一个APK文件。 - 这个过程中还会创建`AndroidManifest.xml`的二进制版本。 - `apk`工具还负责签名APK文件。 2. **签名APK** - `signapk`工具用于给APK文件添加数字签名,确保其来源可信。 ### 运行流程 1. **安装APK** - 用户或系统通过ADB或其他安装工具将APK安装到设备上。 - 设备上的PackageManager服务解析APK中的`AndroidManifest.xml`,并将应用注册到系统中。 2. **启动Activity** - 用户点击应用图标时,系统会启动指定的主Activity。 - `MainActivity`根据配置文件中的设置初始化并加载布局文件。 3. **运行时环境** - 应用运行在一个独立的Linux进程和Dalvik虚拟机实例中。 - Dalvik虚拟机解释执行`classes.dex`中的指令。 通过以上步骤,我们可以清晰地了解到Android程序从开发到运行的整个过程。这对于开发者来说非常重要,有助于他们编写更加高效稳定的Android应用程序。
剩余28页未读,继续阅读
- 粉丝: 794
- 资源: 16
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 主要是Java技术栈的文章.zip
- (源码)基于Arduino平台的公共交通状态展示系统.zip
- (源码)基于Python和Raspberry Pi的PIC微控制器编程与数据记录系统.zip
- (源码)基于Linux系统的文件信息列表工具.zip
- (源码)基于Python和MXNet框架的ZJ League视频问题回答系统.zip
- (源码)基于C++的图书管理系统.zip
- (源码)基于C++的航班管理系统.zip
- ATmega328-Bootloader-Maker(使用ATmega328p芯片制作Arduino Uno R3开发板)
- 一组用 Javascript 解决的技术软件开发面试问题,非常合理.zip
- (源码)基于Spring Boot和WebSocket的贪吃蛇对战系统.zip
- 1
- 2
前往页