移动应用开发技术复习
移动应用开发技术复习
第一章
1、常见的手机操作系统
ios、Android、BlackBerry OS、Harmony OS、Windows Phone等。
ios:基于Unix,闭源,对硬件要求低。
Android:基于宏内核。
Harmony OS:基于Linux开发,基于微内核,C/C++编写,不需要虚拟机,效率比Android高,前期为了兼容需要AOSP。
2、Android体系结构
由下往上分别是Linux内核层、硬件抽象层、系统运行时库层(又称为中间件层)、应用程序框架层和系统应用层。
系统应用层:包含电子邮件、短信、日历等核心应用,没有特殊状态,Java编写,开源,但是GSM服务的代码没有开源。
应用程序框架层(Java API层):最常用的组件和服务都在这一层。
Native C/C++ Libraries:开发者不能直接调用,Java API层可调用。
Android运行时:Android核心库和ART,Android5.0(API21)及更高版本的设备中每个应用都在自己的进程中运行。
硬件抽象层:屏蔽底层实现细节,向上提供接口,提供标准界面,规定了一套应用层对硬件层读写和配置的统一接口,本质上就是将硬件的驱动分为用户空间和内核空间两个层面;Linux内核驱动程序运行于内核空间,硬件抽象层运行于用户空间。
Linux内核:Linux内核提供由操作系统内核管理的底层基础功能,实现硬件设备驱动、进程和内存管理、网络协议栈、电源管理等核心系统功能。
3、Android打包,什么是apk
apk就是Android安装包,本质上是一个压缩文件,改变后缀命为zip就可以解压。
apk解压后的文件
res:存放资源文件。
AndroidManifest.xml:清单文件,记录版本号、SDK版本、图标等。
assets:一般记录大资源文件,如音频、视频,或者文档、图片。
classes.dex:android现在使用DVM,将.java编译成.class,再编译成.dex,最后打包为.apk是android平台的可执行文件的类型。
resource.arsc:编译后的二进制资源文件,定义各个资源ID常量,供代码进行索引。
META-INF:签名了才有,Android中没有签名的apk是不允许安装的。
安卓打包过程中部分文件是原封不动打包,如assets,部分是编译成二进制文件打包。
4、Android开发环境,什么是sdk、jdk
Android开发环境是Android Studio,还要在Android Studio中下载一个Emulator,就是虚拟机。
jdk全称Java Development Kit,就是java开发工具包,包括jre、java开发工具、java基础类库。
(jre全称Java Runtime Environment,就是Java运行环境。)
sdk全称Software Development Kit,就是软件开发工具包。
Android sdk目录结构:
build-tools:存放不同版本的Android项目编译工具。
platforms:各版本SDK。
platforms-tools:各版本SDK通用工具。
emulator:管理模拟器。
temp:临时文件夹,SDK安装更新时用。
tools:各版本SDK自带工具。
sources:各版本SDK源码。
system-images:模拟器镜像文件。
AVD Manager:Android手机模拟器配置工具,用于配置模拟器,只有先配置AVD才可运行模拟器。
第二章
1、安卓项目结构,关键文件夹有哪些,都存储什么内容
Gradle:一种依赖管理工具,它可以尽量防止开发手动介入从而节省了开发的时间并减少错误的发生;自动化可以自定义有序的步骤来完成代码的编译、测试和打包等工作,让重复的步骤变得简单;IDE可能受到不同操作系统的限制,而自动化构建是不会依赖于特定的操作系统和IDE的,具有平台无关性。
.gradle和.idea:Android Studio自动生成。
app:存放项目的代码和资源。
gradle:包含gradle wrapper的配置文件,使用gradle wrapper的方式不需要提前将gradle下载好,而是会自动根据本地的缓存情况决定是否需要联网下载gradle。
gitnore:版本控制工具。
build.gradle:项目全局的gradle构建脚本,一般不用编辑。
gradle.properties:全局的gradle配置文件,这里配置的属性将会影响到项目中所有的gradle编译脚本。
gradlew和gradlew.bat:用于在命令行界面中执行gradle命令,其中gradlew是在linux或mac系统,gradlew.bat是在windows系统使用。
local.properties:用于指定本机中AndroidSDK路径,通常内容是自动生成,除非本机SDK位置发生变化,否则无须修改。
settings.gradle:用于指定项目中所有引入的模块,新工程demo只有一个app模块,所以该文件中就只引入了app这一个模块。
app目录
build:包含了编译时自动生成的文件。
libs:若使用了第三方jar包,把该jar包放在该文件夹下。
androidTest:用来编写android测试用例,可以对项目进行自动化测试。
java:存放Java代码。
res:存放项目里用到的所有图片(drawable)、布局(layout)、字符串、样式、颜色(values)等资源。
AndroidManifest.xml:整个安卓项目的配置文件,在程序中定义的所有四大组件,都需要在这个文件里注册,另外还可以在这里给应用程序添加权限声明。
test:编写单元测试样例。
.gitnore:版本控制。
build.gradle:app模块的gradle构建脚本,该文件中会指定很多项目构建相关的配置。
proguard-rules.pro:指定项目代码的混淆规则。
res目录
drawable:存放图片。
mipmap:存放图片。
layout:布局xml文件。
values:放字符串、样式、颜色等配置。
特别注意带“-”的后面的内容是为了更好的兼容不同设备(分辨率不同)。
2、projects结构
上述第一条其中包含了projects结构。
3、Android中的单位
sp:文字尺寸。
dp:非文字尺寸。
px:特殊情况用。
4、清单文件manifest
AndroidManifest.xml文件中所有的元素中只有
处于同一层次的元素的说明是没有顺序的。