移动设备交互应用 实验一 熟悉Android编程开发环境

简介: 移动设备交互应用 实验一 熟悉Android编程开发环境

一、实验目的与内容:


目的:掌握面向Android编程的开发环境搭建。学习、掌握Android程序编写基本步骤,例如,Android Studio平台编写简单的一个 HelloWorld程序,掌握编译、运行等基本步骤和操作。

内容要求:

1、 搭建开发环境(基本要求,60分):

(在自己电脑上)下载安装和配置Android Studio开发环境,并熟悉该开发环境中的常用操作,并 New -> New Project ->Base Activity一个项目,而且能运行成功。请在报告中给出搭建环境成功的截图和简要文字说明,简述自己所了解掌握的常用操作。

2、 新建的程序项目解析(提升要求,40分)

通过查阅相关资料,尝试对前面新建的Base Activity项目进行详细的解析,包括代码的结构、每一部分的功能、每行代码表示的意义等。总体要求是越完整越好,越详尽越好。


注意:


实验报告中需要有实验结果的截屏图像。


二、实验过程和代码与结果


1.开发环境的搭建 实验过程及结果


首先打开安装包


9d2d2cd098304f39a8cb89ab525f6bff.png

点击“Next”按钮进入下一阶段:


102fb45a15f84be2897e36c3ef7d3c33.png


注意此处要全部勾选,即需要勾选上虚拟机,然后继续点击“Next”进入下一步:

ed266aef3e9e4486921952ad2b101178.png

此处为服务协议,需点击“I Agree”并进行下一阶段开始安装

ca1c753fbefe4c649f457f8ce47535dd.png

等待一段时间后,安装完成

d77cef30a87243d2a7e43819705c1b9e.png

此处勾选“Start Android Studio”并点击“Finish”完成安装并进入“Android Studio”

6c67dc3193404259900597f6f6d4b21a.png

安装完成后打开页面如下:

bba172aae9fa4e2d9f90e8706a8b59a3.png

第一次进入后,选择下载虚拟机

344cd889ef80404eb5d4b32606203d8a.png

等待安装完成之后进入“Android Studio”

进入后开发环境即搭建完成,可以顺利创建新项目。


a3f0471a954e46949c1b312e3023000e.png


2. 自己建立的Base Activity程序的解析过程


①建立新Project,并重名为“HelloWorld”

28b174465fbc420e9c2c524cf4c62ee3.png

②在虚拟机运行模式中选择“Phone and Tablet”

290c62a1f62b4883bce4df02a36eb258.png

③在模板中选择“Basic”

180e28a3ec7d492ead9c6e1540aa8aaf.png

④最后输入工程名字,完成创建

c34a1f8d7b22470093b864ca7e5eecbb.png

⑤创建完成后点击“Finish”进入项目,并点击“RUN”按钮进行运行,即可启用虚拟机


adf8ea54299d4c44bdcac2529f0be069.png


3.相关文件作用:


(1).gradle和.idea

这两个目录下放置的都是Android Studio编译运行时自动生成的一些文件。

(2).app

项目中的代码、相关资源等内容几乎都是放置在这个目录下的,后续开发工作也基本围绕这个目录展开。

(3).build

这个目录的内容与他的名字一样主要包含了一些在编译时自动生成的文件。

(4). gradle

这个目录下包含了gradle wrapper的配置文件,使用gradle wrapper的方式不需要提前将gradle下载好,而是会自动根据本地的缓存情况决定是否需要联网下载gradle。 Android Studio默认没有启用gradle wrapper的方式,如果需要打开,可以点击Android Studio导航栏→File-Settings→Build,Execution,Deployment→Gradle,进行配置更改。

(5).gitignore

这个文件是用来将指定的目录或文件排除在版本控制之外的。

(6).build.gradle

这是项目全局的gradle构建脚本,一般情况下这个文件中的内容是不需要修改的。

(7).gradle.properties

这个文件是全局的gradle配置文件,在这里配置的属性将会影响到项目中所有的gradle编译脚本。

(8).gradlew和gradlew.bat

这两个文件是用来在命令行界面中执行gradle命令的,其中gradlew是在Linux或Mac系统中使用的,gradlew.bat是在Windows系统中使用的。

(9)Hello World.iml

iml文件是所有IntelliJ IDEA项目都会自动生成的一个文件(由于Android Studio是基于IntelliJ IDEA开发的),这个文件仅仅用于标识这是一个IntelliJ IDEA项目。

(10).local .properties

这个文件用于指定本机中的Android SDK路径,通常内容都是系统自动生成的,一般情况下不需要修改。除非你本机中的Android SDK位置发生了变化,那么就将这个文件中的路径改成新的位置即可。

(11). settings.gradle

这个文件用于指定项目中所有引入的模块。由于HelloWorld项目中就只有一个app模块,因此该文件中也就只引人了app这一个模块。通常情况下模块的设置都是自动完成的,一般不需要手动去修改。


App目录下文件:

(1)build

这个目录和外层的build目录类似,主要也是包含了一些在编译时自动生成的文件。

(2)libs

如果你的项目中使用到了第三方jar包,此时就需要把这些jar包都放在libs目录下,放在这个目录下的jar包都会被自动添加到构建路径里去。

(3)androidTest

此处是用来编写Android Test测试用例的,可以对项目进行一些自动化测试。

(4)java

Java目录主要用于存放我们所有Java代码的地方,展开该目录,你将看到刚创建的Hello World Activity文件就在里面。

(5)res

这个目录存放项目中使用到的所有图片、布局、字符串等资源。这个目录下还有很多子目录,图片放在drawable目录下,布局放在layout目录下,字符串放在values目录下,这样的分配会让整个工程看起来很有条理性。

(6)AndroidManifest.xml

这里面包括整个Android项目的配置文件,用户在程序中定义的所有组件都在这个文件里注册,另外还可以在这个文件中给应用程序添加权限声明。

(7)test

此处是用来编写Unit Test测试用例的,这是对项目进行自动化测试的另一种方式。

(8)gitignore

这个文件用于将app模块内的指定的目录或文件排除在版本控制之外,作用和外层的.gitignore文件类似。

(9)app.iml

IntelliJ IDEA项目自动生成的文件,同上9。

(10)build.gradle

这是app模块的gradle构建脚本,这个文件中会指定很多项目构建相关的配置。

(11)proguard-rules.pro

这个文件用于指定项目代码的混淆规则,当代码开发完成后打成安装包文件,如果不希望代码被别人破解,通常会将代码进行混淆,从而让破解者难以阅读。


4.运行源代码分析

102b761e297f472c9904d30d45328168.png



首先我们可以看到,HelloWorldActivity是继承自AppCompatActivity的,这是一种向下兼容的Activity,可以将Activity在各个系统版本中增加的特性和功能最低兼容到Android 2.2系统。Activity是Android系统提供的一个活动基类,我们项目中所有的活动都必须继承它或者它的子类才能拥有活动的特性(AppCompatActivity 是 Activity 的子类)。然后可以看到HelloWorldActivity中有一个onCreate()方法,这个方法是一个活动被创建时必定要执行的方法,其中只有两行代码,并且没有Hello World!的字样。

那么运行时显示的Hello World!是在哪里定义的呢?其实Android程序的设计讲究逻辑和视图分离,因此是不推荐在活动中直接编写界面的,更加通用的一种做法是,在布局文件中编写界面,然后在活动中引入进来。可以看到,在onCreate()方法的第二行调用了 setContentView()方法,就是这个方法给当前的活动引人了一个hello_world_layout布局,那Hello World!一定就是在这里定义的了!我们快打开这个文件看一看。

布局文件都是定义在res/layout目录下的,当你展开layout目录,你会看到hello_world_layout.xml这个文件。打开该文件并切换到Text视图,代码如下所示:


a7f754f9cbb94fcc800a96a8d8a2e84b.png


源代码中包含一个TextView,这是Android 系统提供的一个控件,用于在布局中显示文字的。然后可以在TextView中看到了Hello World!的字样,这说明“Hello World!”原来就是通过android:text="Hello world!"这句代码定义的。


5.常见问题


看到QQ群内有些同学有版本兼容性发生的报错问题,我通过自己电脑调试和查阅资料研究了一晚上,得到了具有广泛适用性的解决办法。

5c8df0858358420bae08c580ef925df6.png

分析错误原因:

1.当你在用别的电脑上的android studio编写一个项目时,然后copy下来,又在自己电脑上的android studio 上导入该项目时会报错(两台电脑上安装的android studio版本不一样)


2.自己的android studio SDK平台工具的版本太低,然后在不了解项目构建文件(build.gradle文件)的前提下,点开了SDK Manger更新了项目构建工具(SDK Build-Tools)的版本


对应解决办法:


点开SDK Manager图标,然后点击Updates就可以看到了

6d635fbb0d1143f49be8d14d2c5d9e57.png

这里我的 sdk 工具版本就是26.1.1了


清楚了自己的sdk 工具版本后,接下来我们继续查看版本,接下来是看sdk 构建工具(sdk Build-Tools)的版本,还是在sdk manager上操作,这次选中 Android SDK后,再在右边选中SDK Tools(只看打勾选项就行)

6160d22d4c454ce88620cee6694571a4.png

此处必须满足Android SDK Build-Tools (就是我前面一直提到的sdk 构建工具)版本是与SDK Tools版本相匹配,否则会发生错误或导致报错。


点开项目构建文件Gradle Scripts,再继续点击build.gradle(Module:app)ps:有两个名字相同的,选第二个,看下面代码的注释行就可以了。


apply plugin: 'com.android.application'
android {
    compileSdkVersion 27                // 使用版本27的SDK编译
    buildToolsVersion "27.0.0"          // 构建工具版本号为27.0.0  对应上图的SDK Build-tools27
    defaultConfig {
        applicationId "com.example.haha.myapplication"
        minSdkVersion 19
        targetSdkVersion 27             
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}
dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:27.+'     
//上面一行是远程依赖声明,这里我们着重来看appcompat-v7:27+
    testCompile 'junit:junit:4.12'
}

我们来分析下appcompat-v7:27.+

上面我们查到我们的sdk工具版本是26,这里的远程依赖包的版本是27,那么我们只需要将把版本减低到和sdk工具版本相同就可以解决啦!

apply plugin: 'com.android.application'
android {
    compileSdkVersion 26         //修改
    buildToolsVersion "27.0.0"
    defaultConfig {
        applicationId "com.example.haha.myapplication"
        minSdkVersion 19
        targetSdkVersion 26        //修改
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}
dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:26+'  //修改
    testCompile 'junit:junit:4.12'
}


修改完以上内容后,点击 SYNC进行同步即可解决问题。

完成这一些的修改后问题解决,因为当你创建一个新的项目时,有gradle去帮你完成构建项目工作,那它自然是按你的最高sdk构建工具版本去构建项目,所以就会出现这样的问题。


三、实验总结


(此处写你的过程,比如遇到的错误,以及解决方法,你的所想、所得)


通过本实验的学习。我成功的搭建了Android的开发环境,为以后Android项目的运行打下了基础。此外我也建立了自己的第一个Android Hello World项目,顺利的在Android模拟器上显示出了“Hello World”。此外由于Android的大部分操作是基于Java完成的,需要对Java语言有一定的基础,通过业余时间自学了Java对Android的编写起到了促进作用。

此外,由于Android与Java的不同,在Android的编写中,务必要熟悉每个文件的作用,这在本实验报告中有详细的体现。

我也通过QQ群,发现了其他同学在搭建开发环境中所存在的问题,通过联系该同学,并进行上网查阅资料,帮助该同学解决问题的同时也加深了自己对Android开发平台的了解和认识。

相关文章
|
1月前
|
开发框架 前端开发 Android开发
Flutter 与原生模块(Android 和 iOS)之间的通信机制,包括方法调用、事件传递等,分析了通信的必要性、主要方式、数据传递、性能优化及错误处理,并通过实际案例展示了其应用效果,展望了未来的发展趋势
本文深入探讨了 Flutter 与原生模块(Android 和 iOS)之间的通信机制,包括方法调用、事件传递等,分析了通信的必要性、主要方式、数据传递、性能优化及错误处理,并通过实际案例展示了其应用效果,展望了未来的发展趋势。这对于实现高效的跨平台移动应用开发具有重要指导意义。
143 4
|
1月前
|
Java 开发工具 Android开发
Android与iOS开发环境搭建全解析####
本文深入探讨了Android与iOS两大移动操作系统的开发环境搭建流程,旨在为初学者及有一定基础的开发者提供详尽指南。我们将从开发工具的选择、环境配置到第一个简单应用的创建,一步步引导读者步入移动应用开发的殿堂。无论你是Android Studio的新手还是Xcode的探索者,本文都将为你扫清开发道路上的障碍,助你快速上手并享受跨平台移动开发的乐趣。 ####
|
19天前
|
JSON Java API
探索安卓开发:打造你的首个天气应用
在这篇技术指南中,我们将一起潜入安卓开发的海洋,学习如何从零开始构建一个简单的天气应用。通过这个实践项目,你将掌握安卓开发的核心概念、界面设计、网络编程以及数据解析等技能。无论你是初学者还是有一定基础的开发者,这篇文章都将为你提供一个清晰的路线图和实用的代码示例,帮助你在安卓开发的道路上迈出坚实的一步。让我们一起开始这段旅程,打造属于你自己的第一个安卓应用吧!
45 14
|
22天前
|
Java Linux 数据库
探索安卓开发:打造你的第一款应用
在数字时代的浪潮中,每个人都有机会成为创意的实现者。本文将带你走进安卓开发的奇妙世界,通过浅显易懂的语言和实际代码示例,引导你从零开始构建自己的第一款安卓应用。无论你是编程新手还是希望拓展技术的开发者,这篇文章都将为你打开一扇门,让你的创意和技术一起飞扬。
|
23天前
|
Java 开发工具 Android开发
安卓与iOS开发环境对比分析
在移动应用开发的广阔天地中,安卓和iOS两大平台各自占据半壁江山。本文深入探讨了这两个平台的开发环境,从编程语言、开发工具到用户界面设计等多个角度进行比较。通过实际案例分析和代码示例,我们旨在为开发者提供一个清晰的指南,帮助他们根据项目需求和个人偏好做出明智的选择。无论你是初涉移动开发领域的新手,还是寻求跨平台解决方案的资深开发者,这篇文章都将为你提供宝贵的信息和启示。
29 8
|
20天前
|
搜索推荐 前端开发 测试技术
打造个性化安卓应用:从设计到开发的全面指南
在这个数字时代,拥有一个定制的移动应用不仅是一种趋势,更是个人或企业品牌的重要延伸。本文将引导你通过一系列简单易懂的步骤,从构思你的应用理念开始,直至实现一个功能齐全的安卓应用。无论你是编程新手还是希望拓展技能的开发者,这篇文章都将为你提供必要的工具和知识,帮助你将创意转化为现实。
|
27天前
|
API Android开发 iOS开发
深入探索Android与iOS的多线程编程差异
在移动应用开发领域,多线程编程是提高应用性能和响应性的关键。本文将对比分析Android和iOS两大平台在多线程处理上的不同实现机制,探讨它们各自的优势与局限性,并通过实例展示如何在这两个平台上进行有效的多线程编程。通过深入了解这些差异,开发者可以更好地选择适合自己项目需求的技术和策略,从而优化应用的性能和用户体验。
|
20天前
|
Java Android开发 开发者
探索安卓开发:构建你的第一个“Hello World”应用
在安卓开发的浩瀚海洋中,每个新手都渴望扬帆起航。本文将作为你的指南针,引领你通过创建一个简单的“Hello World”应用,迈出安卓开发的第一步。我们将一起搭建开发环境、了解基本概念,并编写第一行代码。就像印度圣雄甘地所说:“你必须成为你希望在世界上看到的改变。”让我们一起开始这段旅程,成为我们想要见到的开发者吧!
25 0
|
1月前
|
JSON Java Android开发
探索安卓开发之旅:打造你的第一个天气应用
【10月更文挑战第30天】在这个数字时代,掌握移动应用开发技能无疑是进入IT行业的敲门砖。本文将引导你开启安卓开发的奇妙之旅,通过构建一个简易的天气应用来实践你的编程技能。无论你是初学者还是有一定经验的开发者,这篇文章都将成为你宝贵的学习资源。我们将一步步地深入到安卓开发的世界中,从搭建开发环境到实现核心功能,每个环节都充满了发现和创造的乐趣。让我们开始吧,一起在代码的海洋中航行!
|
1月前
|
存储 搜索推荐 Java
打造个性化安卓应用:从设计到实现
【10月更文挑战第30天】在数字化时代,拥有一个个性化的安卓应用不仅能够提升用户体验,还能加强品牌识别度。本文将引导您了解如何从零开始设计和实现一个安卓应用,涵盖用户界面设计、功能开发和性能优化等关键环节。我们将以一个简单的记事本应用为例,展示如何通过Android Studio工具和Java语言实现基本功能,同时确保应用流畅运行。无论您是初学者还是希望提升现有技能的开发者,这篇文章都将为您提供宝贵的见解和实用的技巧。