移动技术从未停止进化,而 Android 始终是创新的核心引擎。无论是渴望高薪职位、追求创业梦想,还是希望用技术创造价值,学习 Android 开发都是拥抱数字时代的战略性选择。从一行代码到一个改变世界的应用,你的旅程将从这里开始,接下来我们将开始进行学习Android开发。
.exe
安装文件.dmg
镜像文件.tar.gz
压缩包.exe
文件,按向导完成安装(建议勾选 Android Virtual Device 选项)。.dmg
中的 Android Studio 到 Applications 文件夹。.tar.gz
文件到目标目录(如 /opt/android-studio
)。bin
目录,运行 ./studio.sh
,按提示完成 SDK 安装。安装 JDK(Java Development Kit)
首先,确保你已经安装了 JDK(Java开发工具包)。Android Studio 和其他工具需要它来编译和运行Android应用。
步骤:
JAVA_HOME
环境变量,指向你的 JDK 安装目录。设置 JAVA_HOME
环境变量
JAVA_HOME
是一个重要的环境变量,Android Studio 和一些构建工具(如 Gradle)会使用它来找到你的 JDK。
Windows
JAVA_HOME
,变量值为 JDK 的安装路径(例如 C:Program FilesJavajdk-11
)。安装 Android SDK 和设置 ANDROID_HOME
环境变量
Android SDK 是开发Android应用所必需的,它包含了编译、构建和模拟等工具。
步骤:
ANDROID_HOME
环境变量: Android SDK 的路径是另一个重要的环境变量。你需要设置 ANDROID_HOME
来告诉 Android Studio 和构建工具(如 Gradle)SDK 的位置。Windows
打开 控制面板 > 系统 > 高级系统设置 > 环境变量。
在 "系统变量" 区域,点击 新建。
输入变量名为 ANDROID_HOME
,变量值为 Android SDK 的路径(通常是 C:Users
)。
找到 Path
变量,点击 编辑,在最后添加以下内容:
%ANDROID_HOME%tools
%ANDROID_HOME%platform-tools
点击 确定 保存。
配置 Gradle 环境(可选)
Gradle 是 Android Studio 使用的构建工具,它也可以通过设置环境变量来进行配置。
Windows
下载并解压 Gradle。
打开 控制面板 > 系统 > 高级系统设置 > 环境变量。
在 "系统变量" 区域,点击 新建。
输入变量名为 GRADLE_HOME
,变量值为 Gradle 的解压路径(例如 C:Gradle
)。
找到 Path
变量,点击 编辑,在最后添加以下内容:
%GRADLE_HOME%bin
以上步骤帮助你配置了在 Android 开发中所需要的环境变量,包括 JDK、Android SDK 和 Gradle 等。确保每个环境变量都正确配置,以便能够顺利进行 Android 应用的开发和构建。
新建项目
启动 Android Studio 点击 New Project
选择模版(推荐使用 Empty Activity)最简模版
配置项目:
com.example.helloworld
)Gradle
构建脚本的语法,这里选择 Kotlin DSL
点击 Finish,等待 Gradle
构建完成
运行项目
使用模拟器
创建虚拟设备(AVD):
启动模拟器:
运行应用:
点击工具栏 Run 按钮(绿色三角)或按 Shift+F10
。
选择已启动的模拟器,等待应用安装并自动启动。
使用真机调试
结果如下
要想了解Android项目结构,首先我们得先
切换至项目预览模式,这方便我们观察和认识项目结构,展开关键如下所示
接下来我们将逐步分析Android项目结构中核心目录与文件详解
AndroidManifest.xml
Activity(活动)
、Service(服务)
、BroadcastReceiver(广播)
、ContentProvider(内容提供者)
)在之后我们会详细讲解这四大组件
声明文件的编码为
UTF-8
通常 Android 项目会使用UTF-8编码。
是整个 Android 应用清单的根元素,所有其他元素都应该包含在此标签内。
xmlns:android="http://schemas.android.com/apk/res/android"
:这是 android
命名空间的声明,它定义了 XML 中属性的前缀 android
,告诉 Android 系统该文件中包含的所有属性都与 Android 应用相关。
xmlns:tools="http://schemas.android.com/tools"
:这是 Android 开发工具的命名空间,主要用于在开发阶段向系统提供额外的信息,例如为 Android Studio 提供的工具标记。
是 Android 应用的主要配置元素,它描述了应用的基本信息,如图标、主题、支持的语言方向等
android:allowBackup="true"
:指示应用是否允许备份。true
表示允许,false
表示不允许。这有助于确保用户数据的备份和恢复。android:dataExtractionRules="@xml/data_extraction_rules"
:定义应用数据提取规则(针对 Android 13 或更高版本)。这是一个 XML 文件,指定哪些数据可以被提取和备份。android:fullBackupContent="@xml/backup_rules"
:指定应用的完整备份规则。与 dataExtractionRules
配合使用,可以控制哪些数据需要进行全备份。android:icon="@mipmap/ic_launcher"
:指定应用的图标。这里引用了 @mipmap/ic_launcher
,它通常是 res/mipmap/
目录下的图标资源文件。android:label="@string/app_name"
:应用程序的名称,它会显示在用户的设备上。@string/app_name
引用了 res/values/strings.xml
中定义的字符串。android:roundIcon="@mipmap/ic_launcher_round"
:指定圆形图标。Android 会自动使用这个图标来显示圆形的应用图标,特别是在支持圆形图标的设备上(如一些 Android Wear 设备)。android:supportsRtl="true"
:支持从右向左的布局,适用于阿拉伯语、希伯来语等右到左书写的语言。android:theme="@style/Theme.HelloWorld"
:指定应用的主题。@style/Theme.HelloWorld
引用了 res/values/styles.xml
中定义的样式资源。tools:targetApi="31"
:该属性是用于 Android Studio 的工具命名空间,指示目标 API 级别,通常是 Android Studio 在开发过程中进行 Lint 检查时使用。
元素定义了一个应用中的 Activity。每个应用至少需要一个 Activity,作为应用的入口或界面。
android:name=".MainActivity"
:指定该 Activity 的类名。.MainActivity
表示 MainActivity
类位于包的根目录下(例如 com.example.app.MainActivity
)。android:exported="true"
:表示这个 Activity 是否可以被其他应用启动。在 Android 12(API 级别 31)及更高版本中,如果应用中包含了显式声明 intent-filter
的组件(如 Activity),则需要明确设置 android:exported
属性。true
表示可以由其他应用启动,false
表示不能被外部应用启动。
定义了一个或多个 Intent
,指定哪些外部操作可以启动这个组件(在此为 MainActivity
)。
:指示这是应用的主入口(即主 Activity)。它告诉系统这是一个主要的入口活动。
:告诉系统这个 Activity 是应用的启动 Activity。当用户点击应用图标时,会启动这个 Activity。通过理解 AndroidManifest.xml
文件的结构和内容,你可以更好地配置和管理 Android 应用的各个方面,其他配置在之后开发中用上了会对应的提一嘴,例如权限、服务、广播、内容提供者这些等等等等.
java/
或 kotlin/
: 存放 Java / Kotlin 源代码文件
res/
资源目录:存放所有非代码资源文件,Android 会自动生成 R.java
提供资源 ID。
子目录 | 用途 | 示例文件 |
---|---|---|
drawable/ |
图片、矢量图、形状定义等 | ic_launcher_background.xml |
layout/ |
界面布局文件(XML) | activity_main.xml |
mipmap/ |
应用图标(不同分辨率) | ic_launcher.png |
values/ |
字符串、颜色、样式等常量定义 | strings.xml , colors.xml |
menu/ |
菜单布局文件 | main_menu.xml |
raw/ |
原始文件(音频、视频等) | sound.mp3 |
anim/ |
动画资源 | fade_in.xml |
font/ |
字体文件 | roboto.ttf |
Gradle Scripts/
: 定义项目的构建配置和依赖管理:
文件 | 作用 |
---|---|
build.gradle.kts (Project) |
配置全局项目设置(如 Gradle 版本、仓库地址)。 |
build.gradle.kts (Module) |
配置模块级设置(编译版本、依赖库等)。 |
settings.gradle.kts |
定义项目包含哪些模块。 |
gradle.properties |
配置全局 Gradle 属性(如 JVM 内存大小)。 |
项目级 build.gradle.kts
路径:项目根目录/build.gradle.kts
作用:配置全局构建设置和插件依赖。
典型内容:
// 顶级构建文件,在这里你可以添加对所有子项目/模块共享的配置选项。
plugins {
// 引用 Android 应用程序插件,这个插件通常用于配置和构建 Android 应用。使用了 `libs.plugins` 别名来引用插件,
// 但 `apply false` 表示插件本身不会立即应用到当前模块,而是提供给子模块使用。
alias(libs.plugins.android.application) apply false
// 引用 Kotlin Android 插件,这个插件用于配置和构建包含 Kotlin 代码的 Android 应用。
// 同样使用 `apply false` 表示该插件不会直接应用在当前模块,而是提供给子模块使用。
alias(libs.plugins.kotlin.android) apply false
}
模块级 build.gradle.kts
路径:app/build.gradle.kts
作用:配置模块级构建选项、依赖项。
典型内容:
// 配置插件,声明本模块将使用 Android 应用插件和 Kotlin 插件。
plugins {
// 引用 Android 应用插件,它是构建 Android 应用所必需的。
alias(libs.plugins.android.application)
// 引用 Kotlin Android 插件,用于支持 Kotlin 代码的编译。
alias(libs.plugins.kotlin.android)
}
android {
// 设置应用的命名空间。通常用于避免不同模块之间的命名冲突。
namespace = "com.example.helloworld"
// 设置编译 SDK 版本。这里设置为 Android API 级别 35(实际开发中应该使用最新的稳定版)。
compileSdk = 35
// 配置应用的默认设置。
defaultConfig {
// 设置应用的包名,通常与应用的 Java 包名相同。
applicationId = "com.example.helloworld"
// 设置最低支持的 SDK 版本。这里设置为 21,表示应用支持从 Android 5.0(Lollipop)开始的设备。
minSdk = 21
// 设置目标 SDK 版本,表示应用测试和优化的目标设备版本。这里设置为 35,表示适配 Android 12。
targetSdk = 35
// 设置版本号。版本号必须递增,每次发布新版本时要更改此值。
versionCode = 1
// 设置应用的版本名称。这个值通常会显示在应用的设置页面或安装界面。
versionName = "1.0"
// 设置测试用的 JUnit 测试运行器。
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
}
// 配置构建类型。这里只配置了 release 类型,表示发布版本的构建设置。
buildTypes {
release {
// 禁用代码混淆,设置为 false 不会启用 ProGuard 或 R8 混淆工具。
isMinifyEnabled = false
// 配置 ProGuard 文件。ProGuard 是一个代码优化工具,通常用于发布版本进行混淆和优化。
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"), // 使用默认的 ProGuard 配置
"proguard-rules.pro" // 项目自定义的 ProGuard 配置文件
)
}
}
// 配置 Java 编译选项。
compileOptions {
// 设置 Java 版本兼容性,这里设置为 Java 11。
sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11
}
// 配置 Kotlin 编译选项。
kotlinOptions {
// 设置 Kotlin 的 JVM 目标版本,这里设置为 Java 11。
jvmTarget = "11"
}
}
// 配置项目的依赖项。
dependencies {
// AndroidX 相关的库。这里包括核心扩展库、AppCompat、Material Design 组件、Activity 相关库等。
implementation(libs.androidx.core.ktx) // 提供对 Android 核心库的 Kotlin 扩展支持
implementation(libs.androidx.appcompat) // 支持应用在不同 Android 版本下的兼容性
implementation(libs.material) // 提供 Material Design 组件库
implementation(libs.androidx.activity) // 提供与 Activity 生命周期相关的库
implementation(libs.androidx.constraintlayout) // 提供用于布局的 ConstraintLayout 库
// 单元测试依赖。使用 JUnit 进行本地单元测试。
testImplementation(libs.junit) // JUnit 用于执行本地单元测试
// Android 测试依赖。使用 AndroidX 提供的 JUnit 和 Espresso 进行 UI 测试。
androidTestImplementation(libs.androidx.junit) // AndroidX JUnit 测试框架
androidTestImplementation(libs.androidx.espresso.core) // Espresso 用于 UI 测试
}
settings.gradle.kts
路径:项目根目录/settings.gradle.kts
作用:定义项目包含哪些模块及仓库地址。
典型内容:
// 配置插件管理(pluginManagement),决定了如何查找和解析插件。
pluginManagement {
repositories {
// 配置 Google 的插件仓库,限制只包含特定的插件(通过正则匹配)。
google {
content {
// 只包含 com.android.* 相关的插件
includeGroupByRegex("com\.android.*")
// 只包含 com.google.* 相关的插件
includeGroupByRegex("com\.google.*")
// 只包含 androidx.* 相关的插件
includeGroupByRegex("androidx.*")
}
}
// 配置 Maven 中央仓库,查找和解析插件。
mavenCentral()
// 配置 Gradle 插件门户,查找和解析插件。
gradlePluginPortal()
}
}
// 配置依赖解析管理(dependencyResolutionManagement),用来管理项目的依赖解析策略。
dependencyResolutionManagement {
// 设置仓库模式,当在子项目中查找依赖时,如果子项目定义了自己的仓库,将会报错。
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
// 配置全局的仓库,所有的项目都将从这些仓库中查找依赖。
repositories {
// 使用 Google 的仓库(用于 Android 构建相关的依赖)。
google()
// 使用 Maven 中央仓库,查找和解析其他常见的 Java 依赖。
mavenCentral()
}
}
// 设置根项目的名称。
rootProject.name = "HelloWorld"
// 包含项目的模块,这里表示项目的主模块是 ":app"。
include(":app")
gradle.properties
路径:项目根目录/gradle.properties
作用:配置全局 Gradle 属性(语法与 Groovy 相同)。
常用配置:
# 这个设置对于调整内存设置特别有用。
org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8
# -Xmx2048m:设置最大堆内存为 2048MB。根据需要,你可以增大或减少这个值来优化内存使用。
# -Dfile.encoding=UTF-8:确保文件编码为 UTF-8。
# AndroidX 包结构,使其更清楚哪些包是由 Android 操作系统捆绑的,哪些是打包在应用的 APK 中。
# https://developer.android.com/topic/libraries/support-library/androidx-rn
android.useAndroidX=true
# 设置为 true 时,项目将使用 AndroidX 支持库而非旧版支持库。
# 这对于支持库迁移至 AndroidX 非常重要,确保项目采用最新的 Android 开发标准。
# Kotlin 代码风格设置:可以设置为 "official" 或 "obsolete"。
kotlin.code.style=official
# 设置 Kotlin 代码风格为官方风格。"official" 是标准的 Kotlin 代码风格,"obsolete" 是旧版风格。
# 启用库的 R 类命名空间,以便它的 R 类只包含该库自身声明的资源,而不包含库的依赖项的资源,
# 从而减少该库的 R 类大小。
android.nonTransitiveRClass=true
# 设置为 true 时,Android 会为每个库启用命名空间,从而减少 R 类的大小,
# 使其仅包含该库内的资源,而不包含其他依赖库的资源。
在日后开发中,我们都离不开对 Gradle Scripts
的管理,至少我们要了解到这些基础的知识,至于其他在之后出现了相关再提及并研究。
Android一个App有很多界面,这不是一个Activity能完成的,接下来我们将创建一个新的界面,步骤如下
创建完成之后我们可以在Android 应用的全局配置文件 AndroidManifest.xml
中发现,AndroidStudio 会自动帮我们注册 Activity
这样我们就可以创建新的界面了,这里先不讲页面之间如何跳转,在之后文章中我们在详细说明。想要运行新界面,我们可以进行如下操作:
将想要运行的界面设置为 android:exported="true"
表示这个 Activity 可以被其他应用启动,包括本地编译器, 然后我们将之前 MainActivity
的
范围的代码给剪切到想要运行的界面下,这样我们就可以运行制定的界面了。
在下一章节我们将会对Android中的一些常见的UI组件件进行详细的学习和运用。
参与评论
手机查看
返回顶部