【愚公系列】《Android应用案例开发大全》002-Android 开发环境的搭建
【行业认证·权威头衔】✔ 华为云天团核心成员特约编辑/云享专家/开发者专家/产品云测专家✔ 开发者社区全满贯CSDN博客商业化双料专家/阿里云签约作者/腾讯云内容共创官/掘金亚马逊51CTO顶级博主✔ 技术生态共建先锋横跨鸿蒙、云计算、AI等前沿领域的技术布道者【荣誉殿堂】 连续三年蝉联华为云十佳博主2022-2024 双冠加冕CSDN年度博客之星TOP220222023 十余个技术社区年度杰出贡献奖得主【知识宝库】覆盖全栈技术矩阵◾ 编程语言.NET/Java/Python/Go/Node…◾ 移动生态HarmonyOS/iOS/Android/小程序◾ 前沿领域物联网/网络安全/大数据/AI/元宇宙◾ 游戏开发Unity3D引擎深度解析文章目录一、Android 开发环境的搭建1.Android Studio 和 Android SDK 下载2.Android Studio 和 Android SDK 的安装3.第一个 Android 程序1. 创建第一个 Android 应用程序2. 案例 Sample_1_1 的简单介绍一、Android 开发环境的搭建本节主要讲解基于 Android Studio 的 Android 开发环境的搭建、模拟器的创建和运行以及 Android 开发环境搭建好之后对其开发环境进行测试并创建第一个 Android 应用程序 Sample_1_1 等相关知识。1.Android Studio 和 Android SDK 下载在 Android 官方网站下载 Android Studio如图所示。单击网页中被椭圆圈中的区域开始 Android Studio 的下载。说明进入如图所示界面后读者可以自行选择下载所需版本的 Android Studio。2.Android Studio 和 Android SDK 的安装下载完成后会得到一个名称为android-studio-bundle-145.3276617-windows.exe随选择下载版本的不同此名称可能不同的可执行文件。这时就可以开始安装了具体步骤如下1双击下载的名称为android-studio-bundle-145.3276617-windows.exe的可执行文件。2进入Android Studio 安装界面后单击Next按钮开始安装。其中 Android Studio 软件已经默认勾选但同时也勾选Android SDK和Android Virtual Device项然后单击Next按钮。3接着进入 Android Studio 安装许可协议界面。阅读完许可协议之后单击I Agree按钮。在此界面可以选择 Android Studio 和 Android SDK 的安装位置选择好之后单击Next按钮。4进入界面后可以选择将 Android Studio 快捷图标放在开始菜单的哪个文件夹中。这里读者可以自行选择笔者在此处选择的是名称为Android Studio的文件夹然后单击Install按钮。5进入界面后说明 Android Studio 和 Android SDK 已经开始安装。等待几分钟之后随网络速度不同而不同Android Studio 和 Android SDK 的安装就会完成。然后单击Next按钮。6单击Finish按钮。第一次安装都会出现这个界面此界面中第一个选项的含义是如果之前安装过 Android Studio可以使用以前版本的配置文件第二个选项含义为不导入配置文件。因为这里是演示第一次安装 Android Studio 的情况所以选择第二项然后单击OK按钮。7单击OK按钮之后稍等几分钟。这是 Android Studio 配置向导的第一个界面在其中单击Next按钮之后。8进入界面后需要选择安装配置模式。其中第一个选项表示标准化安装第二个选项表示自定义安装。笔者在这里选择的是第二个选项然后单击Next按钮。9接着进入界面此界面显示了 Android SDK 需要更新的内容。单击Finish按钮Android SDK 更新开始。10进入所示的界面等待几分钟之后随网络速度不同而不同等待SDK 更新完成然后单击Finish按钮。11至此Android Studio 和 Android SDK 的安装完成读者可以开始使用 Android Studio 进行开发了。3.第一个 Android 程序前面小节已经介绍了 Android 的来龙去脉、Android SDK 的下载、Android SDK 的配置和创建及启动模拟器等重要内容接下来将带领读者构建第一个 Android 应用程序并对该程序进行简单的讲解其具体内容如下。1. 创建第一个 Android 应用程序1如图所示双击第一个选项选择创建一个新的 Android Studio 项目然后会进入如图 所示的界面在此界面可以更改标有红色标记的项目然后单击Next按钮。2单击Next按钮后会进入如图所示的界面在此界面中可以选择自己项目编译需要的 SDK 版本。这一步笔者选择默认选项然后单击Next按钮就会进入如图所示的界面。3进入界面后可以选择 Activity 的类型这里笔者选择默认的 Activity 样式然后单击Next按钮。在此界面中可以修改 Activity 的名称和 Activity 布局文件的名称然后单击Finish按钮。4接着进入到的界面说明项目创建成功。此时单击工具栏中的图标打开 AVD 管理器将会出现如图所示的界面然后单击图中被标记的Create Virtual Device按钮开始创建一个新的模拟器。5可以选择需要创建的目标设备类型以及设备的参数笔者在此选择的是默认值读者可以根据需要自行选择然后单击Next按钮。6可以自行选择想要创建的模拟器版本并且在此界面还可以下载对应模拟器的配置文件。然后单击Next按钮在此界面可以设置模拟器的名称等信息然后单击Finish按钮说明模拟器创建成功。7模拟器创建成功之后单击图标启动模拟器。启动模拟器需要一些时间等待几分钟后将进入如图所示的界面说明模拟器已经启动成功。然后单击 Android Studio 主界面工具栏中的图标编译运行项目。8此界面功能为选择项目运行的目标设备。如图所示Android Studio 已经默认选中刚才创建的模拟器。然后单击OK按钮项目开始进行编译打包运行。等待几分钟后就会出现如图所示的界面说明项目运行成功。2. 案例 Sample_1_1 的简单介绍通过前面的学习读者已经能够创建并运行简单的 Android 程序了但可能对 Android 项目还不够了解接下来将通过对 Sample_1_1 程序做详细介绍使读者了解 Android 项目的目录结构以及 Sample_1_1 的运行机理。1在 Android Studio 中提供了几种不同的项目结构类型其中Project结构类型和Android结构类型比较常用下面对Project结构类型下的 Android 项目结构做详细的讲解。app 目录项目中的 Android 模块。Android Studio 中项目分为 Project工作间、Module模块两种概念在创建项目时会默认创建一个模块这里的 app 就是一个 Module一个 Android 应用程序的文档结构。lib 目录存放 Android 项目依赖的类库例如项目中用到的.jar文件。src 目录Android 项目的源文件目录存放应用程序中所有用到的资源文件。androidTest 目录存放应用程序单元测试代码读者可以在这里进行单元测试。main 目录Android 项目的主目录其中java目录用来存放.java源代码文件res存放资源文件包含图像、字符串资源、Activity 布局等资源AndroidManifest.xml是项目的配置文件。app 目录下 build.gradleAndroid 项目 Gradle 构建脚本。build 目录Android Studio 项目的编译目录。gradle 目录存放项目用到的构建工具。gradle 目录下 build.gradleAndroid Studio 项目的构建脚本。External Libraries 目录显示项目所依赖的所有类库。2上面介绍了 Sample_1_1 项目中各个目录和文件的作用接下来介绍的是该项目的系统控制文件AndroidManifest.xml该文件的主要功能为定义该项目的使用架构、版本号及声明 Activity 组件等其具体代码如下。代码位置见随书源代码/第1章/Sample_1_1 目录下的AndroidManifest.xml。?xml version1.0 encodingutf-8?!-- XML 的版本以及编码方式 --manifestxmlns:androidhttp://schemas.android.com/apk/res/androidpackagecom.example.sample_1_1applicationandroid:allowBackuptrueandroid:iconmipmap/ic_launcher!--定义了该项目手机中的图标--android:labelstring/app_name!-- 定义了该项目在手机中的名称 --android:supportsRtltrue android:themestyle/AppThemeactivityandroid:name.MainActivityintent-filteractionandroid:nameandroid.intent.action.MAIN/categoryandroid:nameandroid.intent.category.LAUNCHER//intent-filter!-- 声明 Activity 可以接受的 Intent --/activity/application/manifest第 1~3 行定义了程序的版本、编码方式、用到的架构以及该程序所在的包。第 5~9 行定义了程序在手机上的显示图标、显示名称以及显示风格。第 10~15 行定义了一个名为MainActivity的 Activity 以及该 Activity 能够接受的 Intent。3上面介绍了 Sample_1_1 项目的系统控制文件AndroidManifest.xml接下来介绍的是该项目的布局文件activity_main.xml该文件的主要功能为声明 XML 文件的版本以及编码方式、定义布局并添加控件 TextView其具体代码如下。代码位置见随书源代码/第1章/Sample_1_1/app/src/main/res/layout 目录下的activity_main.xml。?xml version1.0 encodingutf-8?!-- XML 的版本以及编码方式 --RelativeLayoutxmlns:androidhttp://schemas.android.com/apk/res/androidxmlns:toolshttp://schemas.android.com/toolsandroid:idid/activity_mainandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentandroid:paddingBottomdimen/activity_vertical_marginandroid:paddingLeftdimen/activity_horizontal_marginandroid:paddingRightdimen/activity_horizontal_marginandroid:paddingTopdimen/activity_vertical_margintools:contextcom.example.sample_1_1.MainActivity!-- 定义一个布局 --TextViewandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:textHello World!/!-- 向布局中添加一个 TextView 控件 --/RelativeLayout第 2~11 行定义了布局方式为RelativeLayout且左右和上下的填充方式为match_parent。第 12~15 行向该布局中添加了一个TextView控件其宽度和高度模式分别为wrap_content、wrap_content在 TextView 控件显示的内容为 “Hello World!”。4上面介绍了本项目的布局文件activity_main.xml接下来将为读者介绍的是项目的主控制类MainActivity本类为继承自 Android 系统AppCompatActivity的子类其主要功能为调用父类的onCreate方法并切换到main布局其具体代码如下。代码位置见随书源代码/第1章/Sample_1_1/src/main/java/com.example.sample_1_1 目录下的MainActivity.java。packagecom.example.myapplication;importandroid.support.v7.app.AppCompatActivity;// 引入相关类importandroid.os.Bundle;publicclassMainActivityextendsAppCompatActivity{// 定义一个 ActivityOverrideprotectedvoidonCreate(BundlesavedInstanceState){// 重写的 onCreate 回调super.onCreate(savedInstanceState);// 调用基类的 onCreate 方法setContentView(R.layout.activity_main);// 指定当前显示的布局}}第 4 行是对继承自AppCompatActivity的子类的声明。第 5~9 行重写了AppCompatActivity的onCreate回调方法在onCreate方法中先调用基类的onCreate方法然后指定用户界面为R.layout.activity_main对应的文件为src/main/res/layout/activity_main.xml。5上面介绍了本项目的主控制类MainActivity接下来将为读者介绍app目录下 Android 项目的 Gradle 构建脚本build.gradle文件该文件声明了用于编译的 SDK 版本、用于 Gradle 编译项目的工具版本和项目引用的依赖等信息其具体代码如下。代码位置见随书源代码/第1章/Sample_1_1 目录下的build.gradle。apply plugin: com.android.application // 使用 com.android.application 插件 android { compileSdkVersion 24 // 用于编译的 SDK 版本 buildToolsVersion 24.0.3 // 用于 Gradle 编译项目的工具版本 defaultConfig { applicationId com.example.myapplication // 应用程序包名 minSdkVersion 15 // 最低支持的 Android 版本 targetSdkVersion 24 // 目标版本 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:24.2.1 testCompile junit:junit:4.12 }Android Studio 是基于 Gradle 来对项目进行构建的因此build.gradle文件对开发人员来说非常重要很多关于项目的配置都需要在其中完成。有兴趣的读者可以参考其他的书籍资料详细学习一下 Gradle将大有裨益。

相关新闻

北京华恒智信助力国有温泉酒店破解人才选拔无标准难题

北京华恒智信助力国有温泉酒店破解人才选拔无标准难题

【客户行业】国有企业;旅游行业;温泉度假【问题类型】人才盘点【客户背景】某温泉酒店是国有企业下属公司,该温泉酒店有室内室外温泉池共30余个,除温泉外,该酒店还有各种类型套房,包括:豪华套房…

2026/10/2 10:24:15 阅读更多 →
中小企业Agent选型指南:核心能力与实施策略

中小企业Agent选型指南:核心能力与实施策略

1. 中小企业Agent选型现状与挑战2026年,企业智能化转型已进入深水区。作为从业15年的企业数字化转型顾问,我观察到中小企业在Agent选型上普遍面临三大困境:一是预算有限但需求复杂,既要功能全面又要控制成本;二是技术团…

2026/9/28 12:38:08 阅读更多 →
嵌入式接口时序深度解析:从建立保持时间到示波器调试实战

嵌入式接口时序深度解析:从建立保持时间到示波器调试实战

1. 项目概述:为什么接口时序是嵌入式开发的“命门”干了十几年嵌入式,从8位单片机玩到现在的多核异构SoC,有一个东西始终是硬件工程师和底层驱动工程师的“必修课”,也是项目调试中最容易踩坑的地方——那就是接口时序。你可能觉得…

2026/10/4 3:13:27 阅读更多 →

最新新闻

Vue Flow 节点更新实战指南:从响应式 ref 到 store 双向同步

Vue Flow 节点更新实战指南:从响应式 ref 到 store 双向同步

前端UI组件 【免费下载链接】vue-flow A highly customizable Flowchart component for Vue 3. Features seamless zoom & pan 🔎, additional components like a Minimap 🗺 and utilities to interact with state and graph. 项目地址:…

2026/10/4 13:44:00 阅读更多 →
有哪些AI论文写作工具是真的贴合学术规范,而不是通用套壳?TaoToken统一Key实测拆解

有哪些AI论文写作工具是真的贴合学术规范,而不是通用套壳?TaoToken统一Key实测拆解

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 13:44:00 阅读更多 →
零训练秒出结果:TabFM表格大模型安装与快速入门完整教程(JAX/PyTorch双后端10分钟上手)

零训练秒出结果:TabFM表格大模型安装与快速入门完整教程(JAX/PyTorch双后端10分钟上手)

零训练秒出结果:TabFM表格大模型安装与快速入门完整教程(JAX/PyTorch双后端10分钟上手) 【免费下载链接】tabfm TabFM (Tabular Foundation Model) is a pretrained tabular foundation model developed by Google Research for tabular data…

2026/10/4 13:44:00 阅读更多 →
如何使用check-prefix-template.sh工具:Madeira前缀模板完整自检指南

如何使用check-prefix-template.sh工具:Madeira前缀模板完整自检指南

如何使用check-prefix-template.sh工具:Madeira前缀模板完整自检指南 【免费下载链接】Madeira Run x86-64 Windows PC games on jailed iOS via FEX-Emu Wine DXMT 项目地址: https://gitcode.com/GitHub_Trending/mad/Madeira Madeira 可以在免越狱的 iO…

2026/10/4 13:44:00 阅读更多 →
告别本地环境:20多款ESP在线开发工具实测与选型指南

告别本地环境:20多款ESP在线开发工具实测与选型指南

1. 为什么我彻底放弃了本地ESP开发环境三年前如果有人跟我说“别装工具链了,浏览器里直接写ESP代码”,我大概率会嗤之以鼻。那时候我的开发机里躺着三套不同版本的ESP-IDF,每套都配着独立的Python虚拟环境,光是export.sh和export.…

2026/10/4 13:44:00 阅读更多 →
冷知识为何让人上头?从“没用的小学生知识”到内容创作与日常应用

冷知识为何让人上头?从“没用的小学生知识”到内容创作与日常应用

"都是没用的小学生知识,建议刷到点不感兴趣"——我对这句话太熟了,因为我自己就是做内容的人,这几年在短视频平台上刷到过不下几百个类似开场白的视频。标题配着这种自嘲语气,内容却是一个让人"哇"一声的冷知…

2026/10/4 13:42:59 阅读更多 →

日新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 11:40:45 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 9:43:54 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/3 9:42:36 阅读更多 →