配置安卓环境| 青训营笔记

211 阅读10分钟

这是我参与「第四届青训营 」笔记创作活动的第2天

昨天因有事停更一天,今天主要开始更新我学习客户端的一些内容。由于笔者在之前从未有过客户端开发经历,甚至不掌握JAVA语言,因此我在此采用《第一行代码》作为学习的入门书籍,希望能有所收获并跟上老师进度。

配置安卓开发环境

所需环境以及下载地址

使用谷歌的集成开发环境,包含了 JDK/Android SDK/Android Studio,即包括了所有的开发环境。这里附上一个谷歌官方的下载地址。如果不能下载的话,我们还可以通过国内的镜像网站下载。这里附上一个国内的镜像网站

安装过程

非常简单,基本上一路点击next即可,当然,我选择的把安装位置放在了D盘之下。操作还是很简单的,安装过程也比较顺利。最后,在配置界面的过程中我选择了深色界面的配置,效果如下图所示。

1658928442469(1).png

初识安卓应用开发

**首先我们回顾一下昨天的安卓系统架构:

  • Linux内核层 :Android系统是基于Linux内核的,这一层为Android设备的各种硬件提供了底层的驱动, 如显示驱动、音频驱动、照相机驱动、蓝牙驱动、Wi-Fi驱动、电源管理等。
  • 系统运行库层 :这一层通过一些C/C++库为Android系统提供了主要的特性支持。如SQLite库提供了数据 库的支持,OpenGL|ES库提供了3D绘图的支持,Webkit库提供了浏览器内核的支持等。 在这一层还有Android运行时库,它主要提供了一些核心库,允许开发者使用Java语言来 编写Android应用。另外,Android运行时库中还包含了Dalvik虚拟机(5.0系统之后改为 ART运行环境),它使得每一个Android应用都能运行在独立的进程中,并且拥有一个自己 的虚拟机实例。相较于Java虚拟机,Dalvik和ART都是专门为移动设备定制的,它针对手 机内存、CPU性能有限等情况做了优化处理。
  • 应用框架层 :这一层主要提供了构建应用程序时可能用到的各种API,Android自带的一些核心应用就是 使用这些API完成的,开发者可以使用这些API来构建自己的应用程序。
  • 应用层 :所有安装在手机上的应用程序都是属于这一层的,比如系统自带的联系人、短信等程序, 或者是用户从应用商店上下载的游戏、软件,当然还包括我们即将开发的程序。

接下来介绍安卓系统所提供的一些内容

  1. 四大组件:Android系统四大组件分别是Activity、Service、BroadcastReceiver和 ContentProvider。其中Activity是所有Android应用程序的门面,凡是在应用中看得到的东西,都是放在Activity中的。而Service就比较低调了,用户无法看到它,但它会在后台默默地运行,即使用户退出了应用,Service仍然是可以继续运行的。 BroadcastReceiver允许应用接收来自各处的广播消息,比如电话、短信等,当然, 应用也可以向外发出广播消息。ContentProvider则为应用程序之间共享数据提供了可能,比如用户想要读取系统通讯录中的联系人,就需要通过ContentProvider来实现。
  2. 丰富的系统控件:Android系统为开发者提供了丰富的系统控件,使得我们可以很轻松地编写出漂亮的界面。 当然如果你品位比较高,不满足于系统自带的控件效果,完全可以定制属于自己的控件。
  3. SQLite数据库:Android系统还自带了这种轻量级、运算速度极快的嵌入式关系型数据库。它不仅支持标准 的SQL语法,还可以通过Android封装好的API进行操作,让存储和读取数据变得非常方便。
  4. 强大的多媒体:Android系统还提供了丰富的多媒体服务,如音乐、视频、录音、拍照等,这一切都可以在程序中通过代码进行控制,让我们的应用变得更加丰富多彩。

以上基本上是安卓开发所需的全部内容。

第一个安卓项目:hello world!

在Android Studio的开始界面中,选择New Project之后,选择Empty Activity,之后再设置界面只需要更改项目名称,其他保持默认选项即可。

在设置完成后,项目出现代码如下:

package com.example.helloworld  
  
import androidx.appcompat.app.AppCompatActivity  
import android.os.Bundle  
  
class MainActivity : AppCompatActivity() {  
    override fun onCreate(savedInstanceState: Bundle?) {  
        super.onCreate(savedInstanceState)  
        setContentView(R.layout.activity_main)  
    }  
}

为了运行项目,我们需要启动安卓模拟器作为我们项目的运行载体。当然,用实际的安卓手机也行。 设备和操作系统版本我都选择的默认,不过需要注意的是,操作系统镜像的大小非常大,大概达到1G以上,因此需要保证空间大小和一定的网速,不然在初次运行的时候会非常缓慢。在安装成功后,点击启动,就会出现一个模拟的安卓界面了。大概长底下这个样子:

1658930831836.png 这一步,需要注意的是,启动过程会比较缓慢,而且还是比较吃内存的。所以不适宜和其他较为吃内存的软件一起打开,尤其是在电脑配置很一般的情况下。在运行之前,还要下载超多文件才能最终运行。

Project模式的项目结构

  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. HelloWorld.iml iml文件是所有IntelliJ IDEA项目都会自动生成的一个文件(Android Studio是基于IntelliJ IDEA开发的),用于标识这是一个IntelliJ IDEA项目,我们不需要修改这个文件中的任何 内容。
  10. local.properties 这个文件用于指定本机中的Android SDK路径,通常内容是自动生成的,我们并不需要修 改。除非你本机中的Android SDK位置发生了变化,那么就将这个文件中的路径改成新的 位置即可。
  11. settings.gradle 这个文件用于指定项目中所有引入的模块。由于HelloWorld项目中只有一个app模块,因 此该文件中也就只引入了app这一个模块。通常情况下,模块的引入是自动完成的,需要我 们手动修改这个文件的场景可能比较少。

除了app目录之外,大多数的文件和目录是自动生成的,我们并不需要进行修改。

app目录下的结构

下面详细介绍app目录下的内容。

  1. build 这个目录和外层的build目录类似,也包含了一些在编译时自动生成的文件,不过它里面的内容会更加复杂,不需要过多关心。
  2. libs 如果你的项目中使用到了第三方jar包,就需要把这些jar包都放在libs目录下,放在这个目 录下的jar包会被自动添加到项目的构建路径里。
  3. androidTest 此处是用来编写Android Test测试用例的,可以对项目进行一些自动化测试。
  4. java java目录是放置我们所有Java代码的地方(Kotlin代码也放在这里),展开该目录,系统帮我们自动生成了一个MainActivity文件。
  5. res 这个目录下的内容很多。简单说,就是在项目中使用到的所有图片、布局、字符串等资源都要存放在这个目录下。当然这个目录下还有很多子目录,图片放在drawable 目录下,布局放在layout目录下,字符串放在values目录下,所以不用担心会把整个res目录弄得乱糟糟的。
  6. AndroidManifest.xml 这是整个Android项目的配置文件,在程序中定义的所有四大组件都需要在这个文件里注册,另外还可以在这个文件中给应用程序添加权限声明。
  7. test 此处是用来编写Unit Test测试用例的,是对项目进行自动化测试的另一种方式。
  8. .gitignore 这个文件用于将app模块内指定的目录或文件排除在版本控制之外,作用和外层 的.gitignore文件类似。
  9. app.iml IntelliJ IDEA项目自动生成的文件,我们不需要关心或修改这个文件中的内容。
  10. build.gradle 这是app模块的gradle构建脚本,这个文件中会指定很多项目构建相关的配置。
  11. proguard-rules.pro 这个文件用于指定项目代码的混淆规则,当代码开发完成后打包成安装包文件,如果不希望代码被别人破解,通常会将代码进行混淆,从而让破解者难以阅读。

这样整个项目的目录结构就都介绍完了

res目录下的结构

  1. 所有以“drawable”开头的目录都是用来放图片的
  2. 所有以“mipmap”开头的目录都是用来放应用图标的
  3. 所有以“values”开头的目录都是用来放字符串、样式、颜色等配置的
  4. 所有以“layout”开头的目录都是用来放布局文件的。

之所以有这么多“mipmap”开头的目录,其实主要是为了让程序能够更好地兼容各种设备。 drawable目录也是相同的道理,虽然Android Studio没有帮我们自动生成,但是我们应该自己创建drawable-hdpi、drawable-xhdpi、drawable-xxhdpi等目录。在制作程序的时候, 最好能够给同一张图片提供几个不同分辨率的版本,分别放在这些目录下,然后程序运行的时 候,会自动根据当前运行设备分辨率的高低选择加载哪个目录下的图片。当然这只是理想情况,更多的时候美工只会提供给我们一份图片,这时把所有图片都放在drawable-xxhdpi目录下就好,因为这是最主流的设备分辨率目录。