![物联网移动应用开发](https://wfqqreader-1252317822.image.myqcloud.com/cover/36/36862036/b_36862036.jpg)
2.3.2 创建工程
![](https://epubservercos.yuewen.com/7AE700/19549638101507906/epubprivate/OEBPS/Images/20_02.jpg?sign=1739539878-3MJE6AfhCOmLRQVW5044319pbTroDvQR-0-371ad14941bd8e0877674d2a065b459c)
5 创建工程
完成开发环境的创建后,打开Android Studio可以看到欢迎界面,在此就可以创建Android应用了,如图2-3所示。
![](https://epubservercos.yuewen.com/7AE700/19549638101507906/epubprivate/OEBPS/Images/20_03.jpg?sign=1739539878-KuAMS3BFsiNJ3MBccgNWqhn1XKRjr2XP-0-3e5314e05cfc3a2f8bc1c5317cd0b87e)
图2-3 Android Studio欢迎界面
1.配置工程
在配置工程界面,需要指定工程项目的名称、使用哪个公司域名、项目的存储目录,以及包名。
Android Studio使用公司域名和应用名来构成应用使用的包名。例如,应用名(Application name)为“SmartFactory”,公司域名(Company dornain)为“jsit.edu.cn”,Android Studio就会自动生成包名(Package name)cn.edu.jsit.smartfactory。在Android中包名非常重要,Android设备将用这个包名来唯一表示应用,管理同一个应用的多个版本,在整个生命周期中包名要保持不变。
如图2-4所示,输入相应信息,单击“Next”(下一步)按钮。
![](https://epubservercos.yuewen.com/7AE700/19549638101507906/epubprivate/OEBPS/Images/21_01.jpg?sign=1739539878-2Sist5wBoKCkwiF1OAywAXfahe9gYp1I-0-f7b5e1a0f76c72a2650305d55d2f63ba)
图2-4 创建Android工程项目
2.选择应用设备类型和最低支持版本
Android应用设备类型包括5类,默认选择“Phone and Tablet”。默认最低SDK版本为“API 17:Android 4.2(Jelly Bean)”,表示API层次为17,Android版本为4.2(果冻豆),如图2-5所示。
其中,Phone and Tablet表示应用是一个手机和平板项目。Wear OS表示应用是一个可穿戴设备(如手表)项目。TV表示应用是一个Android TV项目。Android Auto表示应用是一个汽车项目(其需要连接手机使用)。Android Things表示应用是一个嵌入式设备(如树莓派3B)项目。
最低SDK版本是应用支持的最低版本,应用将在这个版本或者更高版本API的设备上运行,如果设备的API版本比它低,应用就无法运行。
![](https://epubservercos.yuewen.com/7AE700/19549638101507906/epubprivate/OEBPS/Images/22_01.jpg?sign=1739539878-K7NOnwoMhwUU73mC0fMSCuc6npYPXjTX-0-d0901a0dea1d3a840e10bc38c47bea2d)
图2-5 选择应用设备类型和最低SDK版本
Android版本和API层次对应关系如表2-1所示。
表2-1 Android版本和API层次对应关系
![](https://epubservercos.yuewen.com/7AE700/19549638101507906/epubprivate/OEBPS/Images/22_02.jpg?sign=1739539878-gk5PlL9TX2WaD3K9WBmMtK0eFfF1rvPf-0-909045c1c84c3ecf875ebed7194704cf)
开发Android应用要仔细考虑应用与哪些版本兼容。如果指定应用与最新版本兼容,如8.1 Oreo API 27,通过图2-6可以看到这个版本仅能在1.1%的设备上运行。为了应用能够在绝大多数Android设备上运行,这里选择4.2 Jelly Bean API 17。
![](https://epubservercos.yuewen.com/7AE700/19549638101507906/epubprivate/OEBPS/Images/23_01.jpg?sign=1739539878-oKxyHOFeitetAUuzyDE0Mv7EzAOKw6dS-0-16f187151212456db7099c692ef9a4e8)
图2-6 设备版本数量分布
3.创建活动和布局
所有的应用都是由一个个不同的屏幕构成的集合。每一个屏幕都由一个活动和一个布局所构成。
活动(Activity)通常关联一个屏幕,通过与用户来交互完成某项任务,如一个活动要写E-mail、照相或者验证用户名和密码。活动中所有操作都与用户密切相关,是一个负责与用户交互的组件,用Java编写。
布局(Layout)描述了屏幕的外观。布局通常写在一个XML文件中,它告诉Android屏幕上的按钮、文本框、图像等不同GUI组件如何组织。
总之,布局定义了如何表示用户界面,活动定义了如何动作。
下面详细分析活动和布局如何共同创建一个用户界面,如图2-7所示。
①设备启动应用,创建一个活动对象。
②这个活动对象指定一个布局。
③活动告诉Android在屏幕上显示这个布局。
④在设备上显示包含这个布局的用户界面。
⑤活动通过运行应用代码对交互做出响应。
⑥活动更新页面。
⑦用户将在设备上看到更新后的页面。
![](https://epubservercos.yuewen.com/7AE700/19549638101507906/epubprivate/OEBPS/Images/24_01.jpg?sign=1739539878-3uC89b2t50KQJiHUuQTNVVedkKoJBfUN-0-3c2576bce70d9c0aa2b304d92766e25e)
图2-7 用户界面创建过程
Android Studio提供了13个模板用来创建活动和布局。选择“Empty Activity”(空活动),再单击“Next”(下一步)按钮,如图2-8所示。
![](https://epubservercos.yuewen.com/7AE700/19549638101507906/epubprivate/OEBPS/Images/24_02.jpg?sign=1739539878-8HMrSUlIa5NrdH4yoemunHqwNNHygjmu-0-e4b56a1f2ff38c93b9c30aa9d3432098)
图2-8 选择活动模板
4.配置活动
输入活动的名称为“MainActivity”,勾选“Generate Layout File”(生成布局文件)复选框。活动是一个Java类,因此将自动创建一个MainActivity.java类文件。
输入布局名称“activity_main”,取消勾选“Backwords Compatibility(AppCompat)”复选框,该选项用于添加AppCompat包提供向后兼容性,如图2-9所示。布局是XML文件,因此将自动创建一个activity_main.xml的XML文件。
![](https://epubservercos.yuewen.com/7AE700/19549638101507906/epubprivate/OEBPS/Images/25_01.jpg?sign=1739539878-lycj3E19KSDAtvevWAtzYj03IcaSFeHd-0-823676124254a78abb78a18cd32d7a87)
图2-9 选择活动模板
接下来,Android Stuido会自动构建应用,构建应用对于初学者来说是一个复杂的概念,这里暂不详述。
单击“Finish”(完成)按钮之后,进入Android Studio工程界面,如图2-10所示。
![](https://epubservercos.yuewen.com/7AE700/19549638101507906/epubprivate/OEBPS/Images/25_02.jpg?sign=1739539878-9RDyoo9S8nbu8nKer4FKdpjStDl7tJja-0-be1d21cac4b453ae4a740db75009c885)
图2-10 Android Studio工程界面
5.工程目录
![](https://epubservercos.yuewen.com/7AE700/19549638101507906/epubprivate/OEBPS/Images/26_01.jpg?sign=1739539878-7gZr1prX5j0MKrfOZCWN0i9Vu5P0P2gA-0-6048b242c31cc88bbd477f40fb38886c)
6 工程目录和Gradle
Android应用实际上就是使用文件夹结构组织的一系列文件的集合。Android Studio会自动创建这些文件和结构,单击左侧的“Project”(项目)选项,可以浏览整个项目包含的文件夹和各类文件,如图2-11所示。
![](https://epubservercos.yuewen.com/7AE700/19549638101507906/epubprivate/OEBPS/Images/26_02.jpg?sign=1739539878-pQ0Lrf5aAWHPmfUX1fl2zhzLpG6le26t-0-778509d900b394b2acc5c1fac76ee4a5)
图2-11 工程目录
6.Gradle
Android Studio工程使用Gradle构建系统来编译和部署应用。Gradle工程有一个标准布局。Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建工具,用于管理应用的依赖、打包、部署、发布以及差异管理等。
Project下面的build.gradle文件是整个项目的Gradle基础配置文件,用来配置项目的构建任务。代码如下所示。
![](https://epubservercos.yuewen.com/7AE700/19549638101507906/epubprivate/OEBPS/Images/26_03.jpg?sign=1739539878-FokF9YkTJeG3kqh4hJJVFKgn2RNZsUIl-0-41d464ccde30fc83710b871d256d67b0)
![](https://epubservercos.yuewen.com/7AE700/19549638101507906/epubprivate/OEBPS/Images/27_01.jpg?sign=1739539878-2hiKivrdWCK3wQGqO1JFLfNko6AowdmG-0-4189b7a9f1e90b0b65f4b878446009c5)
app下面的build.gradle文件主要配置应用属性、应用签名、应用特性(渠道)、应用构建类型和应用依赖。代码如下所示。
![](https://epubservercos.yuewen.com/7AE700/19549638101507906/epubprivate/OEBPS/Images/27_02.jpg?sign=1739539878-8p9DuvR6bbygQdoj3kUY5qKqOzclDDIH-0-80c8abfe2c19776f7cb8d17888697967)
![](https://epubservercos.yuewen.com/7AE700/19549638101507906/epubprivate/OEBPS/Images/28_01.jpg?sign=1739539878-7zzfmV4BBDsLEpvRHIISwuCMk6uNXopX-0-044bd27fe627c4b2e6921b1901ccc2b2)
7.工程目录中的关键文件和文件夹
下面是一些工程目录中的关键文件和文件夹,如图2-12所示。
![](https://epubservercos.yuewen.com/7AE700/19549638101507906/epubprivate/OEBPS/Images/28_02.jpg?sign=1739539878-qZFzigqpXDeXvREpMTW0gcKorFDzUUZv-0-c7775c1ac17db72ebe8bff41eb5ebc59)
图2-12 关键文件和文件夹
8.创建布局
![](https://epubservercos.yuewen.com/7AE700/19549638101507906/epubprivate/OEBPS/Images/28_03.jpg?sign=1739539878-st8NKWZpJXqPjZaghhdGcJTgzWO5T1sg-0-8e4ea744a1fc7b1d98ae1ec8fddc6c7f)
7 创建布局和活动
双击activity_main.xml文件,可以开始编辑布局。布局编辑有两种方式,一种是通过代码编辑器进行编辑,另一种是通过设计编辑器进行编辑。代码编辑器就是一个文本编辑器,在编辑器中部分关键字会用不同的颜色进行显示,如图2-13所示。
![](https://epubservercos.yuewen.com/7AE700/19549638101507906/epubprivate/OEBPS/Images/29_01.jpg?sign=1739539878-xiaYWIdEfjcQrwxr88bhGnpdlDATESc6-0-15282d05431182ed0f3b79381e542cda)
图2-13 代码编辑器
单击编辑器左下角的“Design”按钮,进入设计编辑器,如图2-14所示。利用设计编辑器可以把GUI组件拖到布局中,根据设计的布局进行摆放。在右侧属性窗口中输入属性值,可以直接看到界面的效果,完成布局的设计。代码编辑器和设计编辑器是对同一个文件进行的不同视图下的编辑,两者之间可以来回切换。
![](https://epubservercos.yuewen.com/7AE700/19549638101507906/epubprivate/OEBPS/Images/29_02.jpg?sign=1739539878-GpMd66FxP863yz9p6vzdn2M9Gjym4FDS-0-daf200a3afd809297636ad6540129c26)
图2-14 设计编辑器
下面看看这个简单布局文件的内容。
![](https://epubservercos.yuewen.com/7AE700/19549638101507906/epubprivate/OEBPS/Images/30_01.jpg?sign=1739539878-kaTHNWzEv5D3Toy8sI4VUyZSjx092tP3-0-302101c0dd9071d97c0bb904f69afc86)
第1行代码告诉解析器和浏览器,这个文件应该按照1.0版本的XML规则进行解析。ecoding="utf-8"表示此XML文件采用UTF-8的编码格式。
第2行声明布局采用的布局方式为ConstraintLayout(约束布局)。ContraintLayout主要是为了解决布局嵌套过多的问题,以灵活的方式定位和调整小部件,从Android Studio 2.3起,官方的模板默认使用ConstraintLayout。Android的其他布局方式还有RelativeLayout(相对布局)、LinearLayout(线性布局)、FrameLayout(帧布局)等,在后续章节中会进行介绍。
第3~5行是Android命名空间定义。和Java中的package、C#中的namespace一样,这里的XML中的命名空间(xml namespace,xmlns)也是为了解决XML中元素和属性命名冲突的问题。因为XML中的标签并不是预定义的,这一点与HTML是有区别的,HTML中的标签是预定义的,所以在XML中会遇到命名冲突的问题。
在Android中,目前遇到的xmlns一共有以下三种。
android:用于Android系统定义的一些属性。
app:用于应用自定义的一些属性。
tools:用于XML中的错误处理、预览和资源压缩等。
第6、7行让布局和设备的屏幕大小有相同的宽度和高度。
第8行表明activity_main.xml文件在MainActivity.java的MainActivity类里面有引用。
第9~16行定义了一个TextView GUI组件来显示文本。
9.创建活动
双击MainActivity文件,可以编辑活动,它由Android Studio自动生成,如图2-15所示。
![](https://epubservercos.yuewen.com/7AE700/19549638101507906/epubprivate/OEBPS/Images/31_01.jpg?sign=1739539878-20MGYmPAa1C6LLyCs6jL3Fv5jgESQ7Wo-0-d027b686dccd065ddb489dc8ba98e750)
图2-15 编辑活动
活动MainActivity就是一个Java类。
![](https://epubservercos.yuewen.com/7AE700/19549638101507906/epubprivate/OEBPS/Images/31_02.jpg?sign=1739539878-vfG94FTRW9u5rUJv9dk6JDzBR6tTinKa-0-56eb738315a31f0585407ba54a2e6bfe)
第1行声明了包名为cn.edu.jsit.smartfactory。
第2、3行引入了MainActivity中使用的Android类。
第4行声明了MainActivity类继承了Activity类。
第5~9行重写了Activity类的onCreate()方法。这个方法将在第一次创建活动的时候被调用。
第7行调用了父类的onCreate()方法。
第8行指定要使用哪个布局文件。