AS从入门到精通-笔记(一)
AS第一节实验课
今天是AS实验课第一节课,完成AS的安装和配置,然后做一个hello world app,算是简单了解一下AS的基本操作。
一、安装和配置
网上教程很多,此处不再赘述。
二、了解基础界面和操作
这是建好project的界面,其中:
AndroidManifest.xml
:
Android 应用程序的清单文件,包含了应用程序的基本信息、组件声明、权限请求等。java
:
存放 Java 代码文件,这些代码是与 Android 应用程序的逻辑和功能相关的。通常包含了各种活动 (Activities)、服务 (Services)、广播接收器 (Broadcast Receivers) 等组件的代码。res
(资源):
用途:存放 Android 应用程序的资源文件,包括图像、布局、字符串、样式等。
这里的资源是与用户界面和应用程序功能相关的静态文件。drawable
:
用途:存放图像资源文件,如 PNG、JPEG 图片等。
这些图像可以在应用程序的界面中使用。layout
:
用途:存放 XML 文件,用于定义 Android 应用程序的用户 界面布局结构。
通过 XML 文件描述界面的结构和元素。mipmap
:
用途:存放应用程序的应用图标,包括各种不同分辨率的图 标。
Android 系统会根据设备的屏幕密度选择合适的图标。values
:
用途:存放资源值,如字符串、颜色、尺寸等。
这使得在应用程序中使用这些值更加灵活。xml
:
用途:存放一些 XML 文件,用于配置一些非布局、非字符串 等资源,如网络请求配置、权限配置等。
- 这里的
build.gradle.kts(Project:My_Application)
内容为具体解释如下:1
2
3
4// Top-level build file where you can add configuration options common to all sub-projects/ modules.
plugins {
id("com.android.application") version "8.1.1" apply false
}
plugins
:这是一个 Groovy 闭包(即代码块),用于配 置项目中的插件。id("com.android.application") version "8.1.1" apply false
:这行指示了应用了一个 Android 应用程序插件,它告诉 Gradle 构建系统这是一个 Android 应用项目。版本号为 “8.1.1” 表示使用的 Android Gradle 插件的版本。最后的 apply false 表示在此处 禁用了插件的自动应用,意味着该插件将不会在当前的 build.gradle 文件中被自动应用,可能会在后续的配置中手动应用。
- 这里的
build.gradle.kts(Module :app)
内容为这是一个 Android 项目的 build.gradle 文件内容,它用于配置 Android 项目的构建设置,包括依赖库、编译选项等。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39plugins {
id("com.android.application")
}
android {
namespace = "com.example.myapplication"
compileSdk = 33
defaultConfig {
applicationId = "com.example. myapplication"
minSdk = 24
targetSdk = 33
versionCode = 1
versionName = "1.0"
testInstrumentationRunner = "androidx. test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
isMinifyEnabled = false
proguardFiles(getDefaultProguardFile ("proguard-android-optimize.txt"), "proguard-rules.pro")
}
}
compileOptions {
sourceCompatibility = JavaVersion. VERSION_1_8
targetCompatibility = JavaVersion. VERSION_1_8
}
}
dependencies {
implementation("androidx. appcompat:appcompat:1.6.1")
implementation("com.google.android. material:material:1.8.0")
implementation("androidx. constraintlayout:constraintlayout:2.1.4")
testImplementation("junit:junit:4.13.2")
androidTestImplementation("androidx.test. ext:junit:1.1.5")
androidTestImplementation("androidx.test. espresso:espresso-core:3.5.1")
}
plugins
:1
2
3plugins {
id("com.android.application")
}这里声明了一个插件,com.android.application 表示这是一个 Android 应用项目,用于构建 Android 应用程序。
android
:1
2
3
4
5android {
namespace = "com.example.myapplication"
compileSdk = 33
...
}namespace
: 这是 Android 应用程序的命名空间,它指定了我的应用程序的基本包名。在这里,命名空间被设置为 com.example.myapplication。
compileSdk
: 指定了我的项目所使用的编译版本(SDK 版本)。在这里,使用的是 SDK 版本 33。defaultConfig:
1
2
3
4
5
6
7
8defaultConfig {
applicationId = "com.example.myapplication"
minSdk = 24
targetSdk = 33
versionCode = 1
versionName = "1.0"
testInstrumentationRunner = "androidx.test. runner.AndroidJUnitRunner"
}applicationId
: 这是我的 Android 应用程序的包名。在这里,它被设置为 com.example.myapplication。
minSdk
: 指定了应用程序支持的最低 Android 版本。在这里,最低支持 Android 版本为 24。
targetSdk
: 指定了应用程序的目标 Android 版本。在这里,目标 Android 版本为 33。
versionCode
: 这是 Android 应用程序的版本代码,用于区分不同版本。
versionName
: 这是 Android 应用程序的版本名,用于显示给用户。
testInstrumentationRunner
: 指定了用于运行单元测试的测试运行器。buildTypes:
1
2
3
4
5
6buildTypes {
release {
isMinifyEnabled = false
proguardFiles(getDefaultProguardFile ("proguard-android-optimize.txt"), "proguard-rules.pro")
}
}这里定义了一个构建类型 release,它用于生成发布版本的 APK 文件。在 release 构建类型中,设置了以下选项:
isMinifyEnabled
: 表示是否启用代码混淆。在发布版本中,一般会开启代码混淆以保护代码。
proguardFiles(...)
: 指定了 ProGuard 配置文件的位置,用于配置代码混淆规则。compileOptions:
1
2
3
4compileOptions {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}这里指定了 Java 编译选项,将源代码和目标代码的兼容性设置为 Java 1.8。
dependencies:
1
2
3
4
5
6
7
8dependencies {
implementation("androidx. appcompat:appcompat:1.6.1")
implementation("com.google.android. material:material:1.8.0")
implementation("androidx. constraintlayout:constraintlayout:2.1.4")
testImplementation("junit:junit:4.13.2")
androidTestImplementation("androidx.test. ext:junit:1.1.5")
androidTestImplementation("androidx.test. espresso:espresso-core:3.5.1")
}这里列出了项目的依赖项:
implementation
: 用于指定在应用程序运行时需要的库。
testImplementation
: 用于指定在进行单元测试时需要的库。
androidTestImplementation
: 用于指定在进行 Android 测试时需要的库。
以上这些配置文件是一个 Android 项目的基本构建设置,它定义了项目的属性、依赖关系以及编译选项等信息。
以下是运行后的模拟器界面:
三、设置Activity生命周期的Log日志
- 修改代码为
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55package com.example.myapplication;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
public class MainActivity extends AppCompatActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.d("MainActivity", "onCreate");
}
protected void onStart() {
super.onStart();
Log.d("MainActivity", "onStart");
}
protected void onResume() {
super.onResume();
Log.d("MainActivity", "onResume");
}
protected void onPause() {
super.onPause();
Log.d("MainActivity", "onPause");
}
protected void onStop() {
super.onStop();
Log.d("MainActivity", "onStop");
}
protected void onDestroy() {
super.onDestroy();
Log.d("MainActivity", "onDestroy");
}
protected void onRestart() {
super.onRestart();
Log.d("MainActivity", "onRestart");
}
} - 运行程序如图:
可知执行顺序确为onCreate()、onStart()、onResume()。 - back返回桌面并清理掉后台,如图:
可知执行顺序确为onPause()、onStop()、onDestory()。 - 再启动HelloWorld,在LogCat的输出日志中检查输出情况,如图:
可知执行顺序确为onRestart()、onStart()、onResume()。