Java Android 开发完整教程
这份教程将带你从零开始,一步步成为一名合格的 Android 应用开发者。

第一部分:入门准备与环境搭建
这是你开始 Android 开发的第一步,确保你的电脑上配置好了所有必要的工具。
第 1 课:为什么选择 Android 开发?
- 市场巨大:Android 拥有全球最大的移动操作系统市场份额。
- 开放生态:基于开源的 AOSP,开发者有更高的自由度。
- 强大的社区和工具:Google 提供了完善的官方文档、工具和庞大的开发者社区。
- 职业发展:移动开发是 IT 行业的热门方向之一。
第 2 课:环境搭建 - "Hello, World!" 的基石
你需要安装以下三件套,它们是 Android 开发的核心。
-
Java Development Kit (JDK)
- 作用:这是运行 Java 代码的基础,Android Studio 内部会使用它来编译你的代码。
- 版本选择:推荐安装 JDK 8 (LTS) 或 JDK 11 (LTS),JDK 8 兼容性最好,JDK 11 是较新的长期支持版本。
- 下载地址:Oracle JDK 或 OpenJDK (推荐使用 OpenJDK,如 Adoptium 的 Temurin JDK)。
-
Android Studio
(图片来源网络,侵删)- 作用:Google 官方推荐的集成开发环境,集成了代码编辑器、调试器、模拟器、性能分析工具等一切你需要的东西。
- 下载地址:Android Studio 官网
- 安装:按照向导一步步安装即可,在安装过程中,它会自动提示你下载最新的 Android SDK (Software Development Kit)。
-
Android Virtual Device (AVD) - 模拟器
- 作用:在你的电脑上创建一个虚拟的 Android 手机,方便你测试应用。
- 配置:打开 Android Studio,点击
Tools->AVD Manager,在这里你可以创建和配置各种型号、系统版本的虚拟设备。
实践:成功安装并启动 Android Studio,创建一个模拟器,并运行它。
第二部分:Android 核心概念
这是 Android 开发的灵魂,理解了这些,你就能看懂任何 Android 应用的结构。
第 3 课:应用的基本构成 - APK 是什么?
一个 Android 应用被打包成一个 .apk (Android Package) 文件,它包含了以下核心部分:

- Manifest (清单) 文件 (
AndroidManifest.xml):- 应用的“身份证”和“说明书”。
- 定义了应用的包名、版本号、所需权限(如访问网络、相机)。
- 声明了应用包含的所有组件(Activity, Service, BroadcastReceiver, ContentProvider)。
- 资源:
- 存放在
res/目录下,包括布局文件 (layout/)、图片 (drawable/)、字符串 (values/strings.xml)、颜色 (values/colors.xml) 等。 - 优点:实现代码与资源的分离,方便多语言适配和主题切换。
- 存放在
- 原生代码 (Native Libraries):
- 使用 C/C++ 编写的库,存放于
jni/目录,用于高性能计算或调用系统底层 API。
- 使用 C/C++ 编写的库,存放于
- Dalvik 可执行文件 / ART 字节码:
- 你的 Java 代码会被编译成
.dex(Dalvik Executable) 文件,这是 Android 设备上运行的格式。
- 你的 Java 代码会被编译成
第 4 课:四大核心组件
Android 应用的核心由四种组件构成,每种组件都有其独特的生命周期和用途。
-
Activity (活动)
- 是什么:用户界面,一个屏幕,微信的聊天列表、聊天窗口、朋友圈都是不同的 Activity。
- 作用:与用户进行交互。
- 关键点:生命周期 (
onCreate,onStart,onResume,onPause,onStop,onDestroy),理解生命周期是掌握 Activity 的关键。
-
Service (服务)
- 是什么:在后台长时间运行没有用户界面的组件。
- 作用:执行耗时操作,如播放音乐、下载文件、网络请求,即使应用被切换到后台,Service 依然可以工作。
- 类型:Started (由其他组件启动,执行完任务后停止) 和 Bound (提供一个接口供其他组件绑定和交互)。
-
Broadcast Receiver (广播接收器)
- 是什么:一个“监听器”,用于接收系统或应用发出的广播消息。
- 作用:让应用对系统级事件(如开机、电池电量低、网络状态改变)或应用内事件做出响应。
- 例子:手机电量低于 20% 时,系统发出广播,你的 App 可以通过 BroadcastReceiver 收到这个通知并提醒用户。
-
Content Provider (内容提供器)
- 是什么:一个数据共享的标准接口。
- 作用:让一个应用的数据可以被其他应用安全地访问,你的通讯录 App 就是使用 Content Provider 来管理联系人数据,其他应用可以通过它来读取联系人。
- 数据来源:可以是数据库、文件或网络。
第 5 课:用户界面 - 布局与控件
界面是用户与应用交互的窗口。
- 控件:
TextView:显示文本。Button:可点击的按钮。EditText:用户可输入文本的框。ImageView:显示图片。RecyclerView:高效显示滚动列表(如微信朋友圈)。
- 布局:
- 定义了控件的排列方式。
- 常用布局:
LinearLayout:线性布局,控件垂直或水平排列。RelativeLayout:相对布局,控件相对于其他控件或父容器定位。ConstraintLayout:强大的约束布局,通过约束关系来定位控件,性能好,层级少,是目前的主流选择。
- 两种编写布局的方式:
- XML 布局文件:推荐方式,将界面设计与 Java/Kotlin 代码分离,清晰明了。
- Java 代码动态创建:灵活性高,但代码可读性差,不推荐用于复杂界面。
第三部分:Java 编程与 Android 结合
我们将 Java 语言应用到 Android 开发中。
第 6 课:Activity 生命周期实战
创建一个新项目,选择 "Empty Activity",然后重写 Activity 的所有生命周期方法,并在每个方法中打印日志,然后通过旋转屏幕、按 Home 键、返回键等操作,观察 Logcat 中日志的打印顺序,这是理解 Activity 行为最有效的方法。
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.d("Lifecycle", "onCreate");
}
@Override
protected void onStart() {
super.onStart();
Log.d("Lifecycle", "onStart");
}
// ... 其他生命周期方法
}
第 7 课:处理用户交互
在 XML 布局文件中放置一个 Button 和一个 TextView,然后在 Java 代码中为 Button 设置点击事件监听器。
// 在 MainActivity.java 中
Button myButton = findViewById(R.id.my_button);
TextView myTextView = findViewById(R.id.my_text_view);
myButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
myTextView.setText("Hello, Android!");
}
});
第 8 课:数据传递 - Intent
Intent 是 Android 中不同组件间通信的“信使”。
- 显式 Intent:明确指定要启动的目标组件(类名),常用于启动同一个应用内的 Activity。
// 从当前 Activity 跳转到 SecondActivity Intent intent = new Intent(MainActivity.this, SecondActivity.class); startActivity(intent);
- 隐式 Intent:只描述想要执行的操作(如“打开一个网页”、“显示一张地图”),由系统选择合适的组件来处理,常用于调用系统应用或与其他应用交互。
// 打开一个网页 Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://www.google.com")); startActivity(intent);
第 9 课:数据存储
应用需要保存数据,Android 提供了多种方式。
- SharedPreferences:键值对存储,适合保存简单的配置信息(如用户名、开关状态)。
- 文件存储:将数据以文件形式存储在设备内部或外部存储。
- SQLite 数据库:轻量级的关系型数据库,适合存储结构化的复杂数据(如联系人列表、文章内容)。
- 网络存储:将数据存储在服务器上。
第四部分:进阶与最佳实践
当你掌握了基础后,这些知识能让你写出更专业、更健壮的应用。
第 10 课:使用 RecyclerView 构建高效列表
ListView 已经过时,RecyclerView 是现代 Android 开发中显示列表和网格的标准组件,它通过“回收”视图项来极大地提升性能和内存效率。
核心三要素:
RecyclerView:列表容器。Adapter:适配器,负责将数据绑定到视图项上。LayoutManager:布局管理器,负责决定视图项的排列方式(线性、网格、瀑布流)。
第 11 课:异步处理 - AsyncTask 与线程
网络请求、文件读写等耗时操作不能在主线程(UI线程)中执行,否则会导致应用“卡死”(ANR - Application Not Responding)。
AsyncTask:一个简单的异步工具类,适合短时间的后台任务。注意:在 Android 8.0 (Oreo) 及以上版本,它被标记为废弃。Thread/Handler:更底层的多线程和消息处理机制。ExecutorService:Java 并发包中的线程池,用于管理多个任务。RxJava/Kotlin Coroutines:现代 Android 开发中处理异步操作的主流方案,代码更简洁、更易于管理。
第 12 课:网络请求
现代应用几乎都离不开网络。
HttpURLConnection:Android SDK 自带的 HTTP 请求 API,功能简单。OkHttp:一个高效的 HTTP 客户端,是目前最流行的网络请求库。Retrofit:基于 OkHttp 的类型安全的 HTTP 客户端,它将网络请求接口化,让你可以用 Java 接口的方式来描述 API,并用注解配置参数,大大简化了网络请求的代码。
推荐组合:Retrofit + OkHttp + Gson (或 Moshi) 是目前 Android 网络请求的黄金搭档。
第 13 课:依赖注入
- 是什么:一种设计模式,旨在降低组件之间的耦合度。
- 为什么用:让你的代码更易于测试、维护和复用。
- 常用框架:
- Dagger 2:Java 和 Android 生态中最成熟的依赖注入框架。
- Hilt:Google 推出的、基于 Dagger 2 的依赖注入库,专为 Android 设计,配置更简单,是当前的首选。
第五部分:推荐学习路径与资源
学习路径建议
- 基础阶段 (1-2 个月):
- 目标:掌握环境搭建、四大组件、UI 布局、数据存储、基本网络请求。
- 实践:仿照一个简单的 App,如“记事本”、“天气预报”(使用假数据)。
- 进阶阶段 (2-3 个月):
- 目标:深入理解
RecyclerView、RecyclerView、ViewPager、Fragment、Handler/Thread、Retrofit。 - 实践:开发一个功能更完整的 App,如“今日头条”新闻列表、“GitHub 客户端”。
- 目标:深入理解
- 高级阶段 (持续学习):
- 目标:学习架构(MVVM, MVI)、组件化、Jetpack 组件、性能优化、Kotlin 语言。
- 实践:重构旧项目,或开发大型商业级 App。
推荐资源
- 官方文档 (最重要!):
- Android Developers 官网:所有知识的源头,最权威、最准确。
- 视频教程:
- Bilibili:搜索“Android 教程”,有大量免费且优质的中文教程,如“郭霖”、“黑马程序员”等。
- YouTube:搜索 "Android Tutorial",有顶级的英文教程,如 Philipp Lackner, CodingWithMitch 等。
- 书籍:
- 《Android 第一行代码》(郭霖):非常适合国内初学者。
- 《Android Programming: The Big Nerd Ranch Guide》:经典英文教材,讲解深入浅出。
- 社区:
- Stack Overflow:遇到问题时,99% 的情况都能在这里找到答案。
- 掘金、CSDN、思否:国内优秀的技术社区,有很多高质量的博客和文章。
祝你学习顺利,早日成为一名优秀的 Android 开发者!
