严谨实用2015 - ustcstaff.ustc.edu.cn/~zzw1988/andoridapp/pdf/01.pdf · 2020. 9. 22. ·...

Post on 24-Dec-2020

5 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Android 软件开发朱宗卫

Email: zzw1988@ustc.edu.cn

2020

1.1 Android发展概述

1.2配置开发环境

➢ 1.2.1 安装JDK

➢ 1.2.2 安装Android Studio

➢ 1.2.3 安装SDK

1.3 本章小结

基础

Android是Google公司在2007年11月5日公布的基于Linux平台的开源手机操作系统。早期由

Google开发,后由开放手机联盟(Open Handset Alliance,简称OHA)开发。自开放手机联盟(

Open Handset Alliance,简称OHA)成立以后,这一联盟支持Google发布的Android手机操作系

统或者应用软件,与Google共同开发Android这一开放源代码的移动操作系统。Android的火热发

展让很多国内外企业看到Android的广阔前景。不仅国外很多企业加入了OHA,而且国内很多企业

,包括中国移动、华为、小米、联想、魅族等,也纷纷加入了Android的大家庭。

自从Google公司在2007年11月5日发布Android的第一个版本(Android 1.0)以来,Android

已经发布了25个版本,最新的版本为2020年推送开发者版本Android 11。同时除了最初发布的两

个版本外(Android 1.0和Android 1.1),其他主要的版本都以相应的甜点来命名,值得一提的是

,甜点的首字母是按照CDEFGHIJKLM这样顺序延续,如下表所示。在以甜点来命名Android 版

本多年以后,Google 终于做出了改变的决定,直接将新版移动系统命名为简单的 Android 10。

1.1 Android发展概述

Android版本 代号 发布日期 特点

Android1.5 Cupcake(纸杯蛋糕) 2009年4月30日采用WebKit技术的浏览器,支持复制/贴上和页面中搜索等。

Android1.6 Donut(甜甜圈) 2009年9月15日 支持CDMA网络;支持更多的屏幕分辨率等;

Android2.0/2.0.1/2.1 Eclair(松饼) 2009年10月26日优化硬件速度 ;支持HTML5;支持蓝牙2.1 ;支持数码变焦。

Android2.2/2.2.1 Froyo(冻酸奶) 2010年5月20日整体性能大幅度的提升;3G网络共享功能;Flash的支持等。

Android2.3 Gingerbread(姜饼) 2011年2月2日优化针对平板;全新设计的UI增强网页浏览功能;n-app purchases功能等。

Android3.0/3.1/3.2 Honeycomb(蜂巢) 2011年5月11日 专门用于平板电脑的版本;、全面支持GoogleMaps等。

Android4.0 Ice Cream(冰激凌三明治) 2011年10月19日 专为3D优化的驱动;截图功能;人脸识别功能等。

Android4.1/4.2/4.3 Jelly Bean(果冻豆) 2012年6月28日桌面插件自动调整大小;OpenGL 3.0;蓝牙低耗电技术;手势放大缩小屏幕等;

Android4.4 KitKat(奇巧) 2013年9月4日针对RAM占用进行了优化;优化了RenderScript计算和图像显示,取代OpenCL等。

Android5.0/5.1 Lollipop(棒棒糖) 2014年6月26日 设计风格;整合碎片化等。

Android6.0 Marshmallow(棉花糖) 2015年5月28日 指纹识别;Doze电量管理;锁屏下语音搜索等。

Android7.0/7.1.1 Nougat(牛轧糖) 2016年8月22日低电耗模式;分屏多任务;通知消息归拢;流量保护模式等。

Android 8.0/8.1 Oreo(奥利奥) 2017年12月5日 通知中心,画中画,自适应图标,后台管理等。

Android 9.0 Pie (馅饼) 2018年8月7日 自适应电池,黑暗模式,应用定时器等

Android 10 Android 102019年

Android 10走在移动创新技术的前沿,具有先进的机器学习技术,同时也支持新兴设备,例如折叠屏设备和5G设备。Android 10主要提升了隐私性和安全性,使用了接近50项技术为用户提供更好的保护,透明度和控制。

Android 11 Android 11 2020年 通知、隐私、悬浮等

Android各个版本的市场份额占有比在2016年8月1日的统计结果如图1.1所示,从此图中

我们可以看出Android操作系统的版本很多,每个版本的市场占有率不均等。同月数据显示,

全球智能手机出货量中,智能手机的各操作系统平台的份额构成如图1.2所示,Android或基于

Android定制的操作系统占66.01%,iPhone占27.84%,Windows Phone占2.79%,Java ME

1.44%,Symbian占1.03%,BlackBerry占0.85%,Android占绝对优势。

1.1 Android发展概述

1、下载JDK

访问网站: https://www.oracle.com/java/technologies/jdk12-downloads.html进行下载,下载

页面如下图所示。

1.2.1 安装JDK

2、配置环境变量安装J2SDK以后,若需要在cmd下使用Java命令和编译、运行程序,可以配置环境变量:新

建环境变量JAVA_HOME,右击“我的电脑”—>“属性”—>“高级”—>“环境变量”,如下图所示:

1.2.1 安装JDK

环境变量配置步骤:➢单击系统变量下的“新建”按钮,“变量名”为:JAVA_HOME,“变量值”为:“E:\Program Files\code\Java\Jdk1.5”(JDK的安装路径),然后确认。

➢从JDK 9开始发生重大变化 - - - “之前类和资源文件存储在lib/rt.jar,lib/tools.jar,JDK 9版本开始 lib/dt.jar和其他各种内部JAR文件都存储在一个更有效的格式在实现特定的文件lib目录。所以不需要配置CLASSPASTH变量。

1.2.1 安装JDK

➢编辑环境变量Path,在“系统变量”中,选中Path项,单击下面的“编辑”,在“变量值”文本框的最前面加入“%JAVA_HOME%\bin;” 单击“确定”,完成环境变量配置。

3、配置环境变量后,点击开始->运行(cmd),在弹出的DOS窗口中输入“javac”回车,得到下图所示结果,说明配置成功。

1.2.1 安装JDK

◆ 也可以用一个小程序测试一下,代码如下:

将以上代码保存为一个“Test.java”文件,假设保存在E:\,点击开始->运行(cmd)->弹出dos窗口中输入: E:(回车),继续输入: javac Test.java回车,最后输入java Test回车,如下图所示则说明运行完毕,JDK配置成功。

1.2.1 安装JDK

例子public class Test

{

public static void main(String args[])

{

System.out.println("Android!");

}

}

◆Android Studio是一个为Android平台开发程序的集成开发环境。2013年5月16日由Google产品

经理艾丽鲍尔斯在Google I/O上发布,可供开发者免费使用。2013年5月发布早期预览版本,

版本号为0.1。2014年6月发布0.8版本,至此进入beta阶段。第一个稳定版本1.0于2014年12

月8日发布。Android Studio基于JetBrains IntelliJ IDEA,类似 Eclipse ADT,为Android开发特殊

定制,并在Windows、OS X和Linux平台上均可运行。安装好JDK后,就可以接着安装Android

Studio了,可以访问网站 https://developer.android.google.cn/studio/ 下载,下载页面如图所示

1.2.2 安装Android Studio

◆ 选择Windows平台“DOWNLOAD ANDROID STUDIO FOR WINDOWS”下载,按照安装提示,进

行下载安装。

1.2.2 安装Android Studio

◆ Android SDK(Software Development Kit)提供了在Windows/Linux/Mac平台上开发Android应用的开发组件

,Android支持所有的平台,其包含了在Android平台上开发移动应用的各种工具集。Android SDK不仅包

括了Android模拟器和用于Android Studio开发工具插件,而且包括了各种用来调试、打包以及在模拟器

上安装应用的工具。Android SDK主要是以Java语言为基础,用户可以使用Java语言来开发Android平台上

的软件应用。通过SDK提供的一些工具将其打包成Android平台使用的apk文件,然后用SDK中的模拟器

(Emulator)来模拟和测试软件在Android平台上运行情况和效果。

1.2.3 安装SDK

◆ APK是AndroidPackage的缩写,即Android安装包(apk)。APK文件其实是zip格式,但后缀名被

修改为apk,可以通过winrar等解压工具进行解压缩,进而进行汉化。

1.2.3 安装SDK

- META-INF

- res

- anim

- color

- drawable

- drawable-hdpi

- drawable-land

- drawable-land-hdpi

- drawable-mdpi

- drawable-port

- drawable-port-hdpi

- layout

- layout-land

- layout-port

- xml

- AndroidManifest.xml

- classes.dex

- resources.arsc

Manifest文件

AndroidManifest.xml是每个应用都必须定义和包含的,它描述了应用的名字、版本、权限、引用的库文件等信息。在apk中的AndroidManifest.xml是经过压缩的,可以通过AXMLPrinter2工具解开

META-INF目录

META-INF目录下存放的是签名信息,用来保证apk包的完整性和系统的安全。编译生成一个apk包时,会对所有要打包的文件做一个校验计算,并把计算结果放在META-INF目录下。而在Android手机上安装apk包时,应用管理器会按照同样的算法对包里的文件做校验,如果校验结果与META-INF下的内容不一致,系统就不会安装这个apk。这就保证了apk包里的文件不能被随意替换。

classes.dex文件

dex文件是可以直接在Dalvik虚拟机中加载运行的文件。通过ADT,经过复杂的编译,可以把java源代码转换为dex文 件。Dalvik虚拟机的指令码并不是标准的Java虚拟机指令码

res目录 存放资源文件。

resources.arsc

编译后的二进制资源文件。通常本地化、汉化资源存储在该文件文件中。

res/anim/ XML文件,它们被编译进逐帧动画(frame by frameanimation)或补间动画(tweenedanimation)对象

res/drawable/

.png、.9.png、.jpg文件,它们被编译进以下的Drawable资源子类型中:要获得这种类型的一个资源,可以使用Resource.getDrawable(id)位图文件9-patches(可变尺寸的位图)为了获取资源类型,使用mContext.getResources().getDrawable(R.drawable.imageId)注意:放在这里的图像资源可能会被aapt工具自动地进行无损压缩优化。比如,一个真彩色但并不需要256色的PNG可能会被转换为一个带调色板的8位PNG。这使得同等质量的图片占用更少的资源。所以我们得意识到这些放在该目录下的二进制图像在生成时可能会发生变化。如果你想读取一个图像位流并转换成一个位图(bitmap),请把图像文件放在res/raw/目录下,这样可以避免被自动优化。

res/layout/ 被编译为屏幕布局(或屏幕的一部分)的XML文件。参见布局声明(Declaring Layout)

res/values/

可以被编译成很多种类型的资源的XML文件。注意:不像其他的res/文件夹,它可以保存任意数量的文件,这些文件保存了要创建资源的描述,而不是资源本身。XML元素类型控制这些资源应该放在R类的什么地方。尽管这个文件夹里的文件可以任意命名,不过下面使一些比较典型的文件(文件命名的惯例是将元素类型包含在该名称之中):array.xml定义数组colors.xml定义colordrawable和颜色的字符串值(color stringvalues)。使用Resource.getDrawable()和Resources.getColor()分别获得这些资源。dimens.xml定义尺寸值(dimensionvalue)。使用Resources.getDimension()获得这些资源。strings.xml定义字符串(string)值。使用Resources.getString()或者Resources.getText()获取这些资源。getText()会保留在UI字符串上应用的丰富的文本样式。styles.xml定义样式(style)对象。

res/xml/ 任意的XML文件,在运行时可以通过调用Resources.getXML()读取。

res/raw/

assets/

直接复制到设备中的任意文件。它们无需编译,添加到你的应用程序编译产生的压缩文件中。要使用这些资源,可以调用Resources.openRawResource(),参数是资源的ID,即R.raw.somefilename。assets下也可以放置任意文件,使用Activity.this.getAssets().open("519.txt");打开

◆ 安装好JDK和Android Studio后,若先前安装的Android Studio内不包含SDK,此时安装SDK有两种方法。

一种为在线安装。打开Android Studio,它会提示你没有安装SDK,此时如果连接到网络,它会访问服务

器进行在线下载。另一种为独立安装。可以通过访问国内网站(网址:

https://www.androiddevtools.cn/ )下载Android SDK与安装。如图所示。若先前安装的Android Studio内

包含SDK,则无需再安装SDK。

1.2.3 安装SDK

◆ 错误:Running Intel® HAXM installer HAXM installation failed.

◆ Hardware Accelerated Execution Manager的缩写。

◆ intel的硬件加速执行管理器,是一款可以使用英特尔虚拟化技术(VT)加快 Android* 开发速度的硬

件辅助虚拟化引擎(管理程序)。

1.2.3 安装SDK

作业:调研并分析常用的虚拟化技术。

◆ 另外可以在Android Studio下下载安装所需的其他Android SDK包,以便进行Android应用程序

的开发。打开SDK Manger,如图1.13所示,会显示出本机当前安装的所有Android版本。

1.2.3 安装SDK

◆ 也可以点击上图中Launch Standalone SDK Manager选项,打开Android SDK Manager进行编

辑,如图所示。注意此过程需要连接谷歌服务器,应保证网络正常连接。

1.2.3 安装SDK

本章主要介绍了Android的发展及其在windows环境下Android开发环境的配置方法,

➢ JDK的安装和配置,

➢ Android Studio的下载,

➢ SDK的下载与安装

1.3 本章小结

后续演示将基于:

➢ jdk-8u112-windows-x64

➢ android-studio-bundle-141.2343393-windows

➢ haxm-windows_v7_2_0

2.1 第一个应用程序

➢ 2.1.1 创建android项目

➢ 2.1.2 android项目结构

➢ 2.1.3 自动构建工具Gradle

➢ 2.1.4 辅助工具介绍

Android项目

2.1First application

第一个应用程序

1、首先,打开Android Studio,新建一个工程,如图2.1所示

2.1.1 创建Android项目

第一个应用程序

图2.1 新建工程

2、配置新工程。

2.1.1 创建Android项目

第一个应用程序

图2.2 配置新工程

3、设置应用运行模式。这里选择Phone and Table,向下最低支持的SDK为选择为API 15。

在我们选择相应的API时,可以看到这个应用能支持的设备比例。

2.1.1 创建Android项目

第一个应用程序

图2.3 设置运行模式

4、活动添加。这里选择是Blank Activity。

2.1.1 创建Android项目

第一个应用程序

图2.4 活动添加

5、活动配置。这里选择的是默认设置。

2.1.1 创建Android项目

第一个应用程序

图2.5 活动配置

6、工程建立完成。

2.1.1 创建Android项目

第一个应用程序

图2.6 工程成功

7、运行。启动模拟器,运行刚刚创建的HelloWorld这个项目,需要目录栏Run

>Run‘app’来运行,我们也可以通过 或者shift+F10快速启动。此

时,会打开Device Chooser窗口,如图2.7所示。若选择使用已有的安卓设备,选

择A;若选择虚拟设备,选择B。这里选择B模式,若你先前没有创建虚拟的设备,

需要创建虚拟设备。若你已创建,可以选择已创建的虚拟设备,也可以新创建一个

新的虚拟设备。模拟器启动,显示的界面如图2.8所示。我们可以看到启动的模拟器

上显示了一段文字,我们此时尚未在项目中输入任何代码,这是项目自己默认的显

示。

2.1.1 创建Android项目

第一个应用程序

2.1.1 创建Android项目

第一个应用程序

图2.7 设备选择 图2.8 启动模拟器运行project1

Android Studio中的文件管理功能非常便利和强大,其提供八种查看项目文件的模式,

这里主要介绍Project模式,如图2.9所示。在Project下,会显示当前所有的Module,如图

2.10所示。

2.1.2 Android项目结构

第一个应用程序

图2.10 Project面板图2.9 文件模式

Project目录结构按功能可以分为三个主要部分,分别是编译系统(Gradle)、配置文件

以及应用模块,表2.1中,对Project目录结构进行简要的叙述。

2.1.2 Android项目结构

第一个应用程序

文件(夹)名 用途

.gradle Gradle编译系统,版本由wrapper指定

.idea Android Studio IDE所需要的文件app 核心文件夹build 代码编译后生成的文件存放的位置gradle wrapper的jar和配置文件所在的位置.gitinore git使用的ignore文件build.gradle gradle编译的相关配置文件gradle.properties gradle相关的全局属性设置

gradlew *nix下的gradle wrapper可执行文件graldew.bat windows下的gradle wrapper可执行文件HelloWorld.iml 项目的配置文件

local.properties 本地属性设置(key设置,android sdk位置等属性)

settings.gradle 和设置相关的gradle脚本

External.Libraries 引用库显示

Gradle 是以 Groovy 语言为基础,面向Java应用为主,基于DSL(领域特定语言)语法

的自动化构建工具。它可以自动化地进行软件构建、测试、发布、部署、软件打包,同时也可

以完成项目相关功能,如生成静态网站、生成文档等。另外其集合了Ant的灵活性和强大功能,

以及Maven的依赖管理和约定,从而创造了一个更有效的构建方式。凭借Groovy的DSL和创

新打包方式,Gradle提供了一个可声明的方式,并在合理默认值的基础上描述所有类型的构

建。Gradle目前已被选作许多开源项目的构建系统。

2.1.3 自动构建工具Gradle

第一个应用程序

作业:请简述CI/CD

Build.gradle配置文件

2.1.3 自动构建工具Gradle

第一个应用程序

代码混淆是包含了代码压缩、优化、混淆等一系列行为的过程。如上

图所示,混淆过程会有如下几个功能:

1.压缩。移除无效的类、类成员、方法、属性等;

2.优化。分析和优化方法的二进制代码;根据proguard-android-

optimize.txt中的描述,优化可能会造成一些潜在风险,不能保证在

所有版本的Dalvik上都正常运行。

3.混淆。把类名、属性名、方法名替换为简短且无意义的名称;

4.预校验。添加预校验信息。这个预校验是作用在Java平台上的,

Android平台上不需要这项功能,去掉之后还可以加快混淆速度。

2.1.4 辅助工具介绍

第一个应用程序

名称 功能

aapt 产生R.java以使资源可以在Java代码中引用。

Navigation Editor 可视化创建和浏览 Android 应用的结构和布局文件

adb 查询设备信息和数据库、安装程序到设备、端口映射、移动文件、利用日志系统等。

android工具 创建和管理Android Virtual Devices。

Android Device Monitor 是一个提供了图形化界面的可以对Android应用进行调试和分析

的独立的工具

Android层级阅览器 显示出各组件的布局及其联系

Draw Nine-patch 让开发者设计能够拉伸的PNG图片。

DDMS 查看和管理运行在设备上的进程和线程、查看堆栈数据、连接到进程进行调试等。

Sqlite3 可以对应用程序的数据库进行操作。

TraceView 可将Android应用程序产生的跟踪日志转换为图形化的分析视图。

logcat 日志输出工具。

top related