下面我将为你提供一个从零开始、非常详细的 Java 开发安卓 App 的完整指南,包括环境搭建、核心概念、开发流程和进阶方向。

目录
-
第一部分:准备工作
- 1 安装 Java Development Kit (JDK)
- 2 安装 Android Studio
- 3 配置 Android SDK
- 4 创建第一个项目 (Hello World)
-
第二部分:Android App 核心概念
- 1 项目结构解析
- 2 四大组件
- Activity (活动)
- Service (服务)
- BroadcastReceiver (广播接收器)
- ContentProvider (内容提供者)
- 3 布局文件
- 4 资源文件
- 5 Intent (意图)
-
第三部分:实战演练 - 计算器 App
- 1 需求分析
- 2 设计 UI 界面
- 3 编写 Java 逻辑
- 4 运行与调试
-
第四部分:进阶学习与最佳实践
(图片来源网络,侵删)- 1 使用版本控制 (Git)
- 2 MVVM 架构模式
- 3 网络请求 (Retrofit, OkHttp)
- 4 数据持久化 (SharedPreferences, Room)
- 5 异步处理 (AsyncTask, Thread Handler, RxJava)
-
第五部分:资源与总结
- 1 推荐学习资源
- 2 Java vs. Kotlin
第一部分:准备工作
1 安装 Java Development Kit (JDK)
Android 开发需要 JDK 来编译 Java 代码,推荐安装 LTS (长期支持) 版本,如 JDK 8 或 JDK 11。
- 下载地址: Oracle JDK 或 OpenJDK
- 安装: 运行安装程序,按照提示完成安装,记住安装路径,后面配置环境变量可能会用到。
2 安装 Android Studio
这是 Google 官方推荐的 Android IDE,集成了所有必要的开发工具。
- 下载地址: Android Studio 官网
- 安装: 下载对应你操作系统的版本,运行安装程序,在安装过程中,它会自动检测你已安装的 JDK,如果没有检测到,它会提示你下载或手动指定 JDK 路径。
3 配置 Android SDK
Android Studio 安装时会自动下载最新的 Android SDK (Software Development Kit),这是开发 Android App 所必需的库和工具集。
- 打开 SDK Manager: 在 Android Studio 中,点击
Tools->SDK Manager。 - SDK Platforms: 在
SDK Platforms标签页,确保你已经勾选了你想开发的 Android 版本(最新的 API Level 和一个较旧的版本以兼容更多设备)。 - SDK Tools: 在
SDK Tools标签页,确保以下工具已勾选并安装:- Android SDK Build-Tools: 构建工具,版本建议选择最新的。
- Android SDK Command-line Tools: 命令行工具。
- NDK (Native Development Kit): 如果需要开发 C/C++ 模块。
- Android Emulator: 模拟器。
4 创建第一个项目 (Hello World)
- 打开 Android Studio,选择
New Project。 - 选择
Empty Activity模板,然后点击Next。 - 配置项目:
- Name: 你的 App 名称,如
MyFirstApp。 - Package name: 应用的唯一标识符,通常是反向域名格式,如
com.example.myfirstapp。 - Save location: 项目保存路径。
- Language: 选择
Java。 - Minimum SDK: 选择你希望支持的最低 Android 版本。
- Name: 你的 App 名称,如
- 点击
Finish,Android Studio 会自动构建你的项目,这可能需要几分钟时间。
构建完成后,你会看到一个模拟器或者连接的真机屏幕上显示 "Hello World!",恭喜,你已经成功迈出了第一步!
第二部分:Android App 核心概念
1 项目结构解析
打开 app/src/main 目录,这是你代码的核心区域:
java/: 存放 Java 源代码。com.example.myfirstapp/: 包名下的文件夹。MainActivity.java: 应用的主界面。
res/: 存放所有非代码资源。layout/: XML 布局文件,定义 UI 界面。activity_main.xml对应MainActivity。drawable/: 图片资源。mipmap-hdpi/,mipmap-mdpi/等: App 的启动图标。values/: 字符串、颜色、样式等配置文件。strings.xml用于存储硬编码的文本。
AndroidManifest.xml: 应用的“身份证”,声明了所有 Activity、Service、权限等信息。
2 四大组件
这是 Android 应用的四大基石,每个组件都有其独特的生命周期和用途。
- Activity (活动): 用户界面的载体,一个 App 通常由多个 Activity 组成,比如一个登录界面 (
LoginActivity),一个主界面 (MainActivity),每个屏幕通常对应一个 Activity。 - Service (服务): 在后台运行没有用户界面的组件,音乐播放器、下载文件等。
- BroadcastReceiver (广播接收器): 用于接收系统或 App 发出的广播消息,监听手机电量低、网络状态改变等。
- ContentProvider (内容提供者): 用于管理应用共享的数据,让不同 App 可以安全地访问数据,联系人、短信等系统数据就是通过 ContentProvider 提供的。
3 布局文件
UI 界面通常在 res/layout/ 目录下的 XML 文件中定义,这种方式将 UI 逻辑与 Java 代码分离,便于维护。
activity_main.xml 可能长这样:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
android:textSize="24sp" />
<Button
android:id="@+id/my_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Click Me" />
</LinearLayout>
4 资源文件
除了布局,还有各种资源:
- 字符串:
res/values/strings.xml,<string name="app_name">My First App</string>。 - 颜色:
res/values/colors.xml。 - 图片:
res/drawable/。
在 Java 代码中通过 R 类引用它们,R.string.app_name。
5 Intent (意图)
Intent 是 Android 中不同组件间通信的“信使”,它可以在 Activity 之间跳转、启动服务等。
- 显式 Intent: 明确指定要启动的目标组件。
Intent intent = new Intent(this, SecondActivity.class); startActivity(intent);
- 隐式 Intent: 只描述想要执行的操作,系统会找到合适的组件来处理,打开网页。
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.google.com")); startActivity(intent);
第三部分:实战演练 - 计算器 App
让我们创建一个简单的计算器来巩固所学知识。
1 需求分析
一个简单的计算器,有两个输入框(数字1,数字2),一个下拉框选择运算符(+, -, *, /),一个按钮“计算”,一个文本框显示结果。
2 设计 UI 界面
打开 res/layout/activity_main.xml,修改其内容如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="16dp">
<EditText
android:id="@+id/et_num1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Enter first number"
android:inputType="number" />
<EditText
android:id="@+id/et_num2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:hint="Enter second number"
android:inputType="number" />
<Spinner
android:id="@+id/spinner_operator"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp" />
<Button
android:id="@+id/btn_calculate"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:text="Calculate" />
<TextView
android:id="@+id/tv_result"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:text="Result: "
android:textSize="20sp"
android:textStyle="bold" />
</LinearLayout>
3 编写 Java 逻辑
-
准备运算符数据:
- 在
res/values/strings.xml中添加运算符字符串:<resources> <string name="app_name">Simple Calculator</string> <string-array name="operators"> <item>+</item> <item>-</item> <item>*</item> <item>/</item> </string-array> </resources>
- 在
-
修改
MainActivity.java:package com.example.calculator; // 替换成你的包名 import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.EditText; import android.widget.Spinner; import android.widget.TextView; import android.widget.Toast; public class MainActivity extends AppCompatActivity { private EditText etNum1, etNum2; private Spinner spinnerOperator; private Button btnCalculate; private TextView tvResult; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 初始化视图 etNum1 = findViewById(R.id.et_num1); etNum2 = findViewById(R.id.et_num2); spinnerOperator = findViewById(R.id.spinner_operator); btnCalculate = findViewById(R.id.btn_calculate); tvResult = findViewById(R.id.tv_result); // 设置下拉框 ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.operators, android.R.layout.simple_spinner_item); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinnerOperator.setAdapter(adapter); // 设置按钮点击事件 btnCalculate.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { calculate(); } }); } private void calculate() { try { // 获取输入值 String num1Str = etNum1.getText().toString(); String num2Str = etNum2.getText().toString(); if (num1Str.isEmpty() || num2Str.isEmpty()) { Toast.makeText(this, "Please enter numbers", Toast.LENGTH_SHORT).show(); return; } double num1 = Double.parseDouble(num1Str); double num2 = Double.parseDouble(num2Str); double result = 0; // 获取选中的运算符 String operator = spinnerOperator.getSelectedItem().toString(); switch (operator) { case "+": result = num1 + num2; break; case "-": result = num1 - num2; break; case "*": result = num1 * num2; break; case "/: if (num2 == 0) { Toast.makeText(this, "Cannot divide by zero", Toast.LENGTH_SHORT).show(); return; } result = num1 / num2; break; } // 显示结果 tvResult.setText("Result: " + result); } catch (NumberFormatException e) { Toast.makeText(this, "Invalid number format", Toast.LENGTH_SHORT).show(); } } }
4 运行与调试
点击 Android Studio 上的绿色运行按钮,选择模拟器或真机,你的计算器 App 就可以运行了。
第四部分:进阶学习与最佳实践
当你掌握了基础后,可以学习以下内容来构建更复杂、更专业的应用。
1 使用版本控制 (Git)
使用 Git 和 GitHub/GitLab 来管理你的代码版本,这是专业开发的必备技能,Android Studio 内置了 Git 支持。
2 MVVM 架构模式
直接在 Activity 中写所有逻辑(MVC 模式)会导致代码臃肿且难以测试,现代 Android 开发推荐使用 MVVM (Model-View-ViewModel) 架构:
- Model: 数据层,负责处理数据和业务逻辑。
- View: UI 层,即 XML 布局和 Activity/Fragment。
- ViewModel: 连接 Model 和 View 的桥梁,持有与 UI 相关的数据,并监听数据变化来更新 UI,它不持有 Activity 的引用,因此配置更改(如屏幕旋转)时不会丢失数据。
3 网络请求
现代 App 几乎都需要网络,推荐使用以下库:
- Retrofit: 一个类型安全的 HTTP 客户端,用于将 REST API 调用转换为 Java 接口。
- OkHttp: 一个高效的 HTTP 客户端,Retrofit 底层默认使用它。
- Gson/Moshi: 用于将 JSON 数据解析/序列化为 Java 对象。
4 数据持久化
- SharedPreferences: 用于存储简单的键值对数据,如用户设置。
- Room: 一个强大的 ORM (对象关系映射) 库,用于将数据存储在 SQLite 数据库中,它是 Google 推荐的本地数据库解决方案。
- File: 直接读写文件。
5 异步处理
Android 的 UI 线程(主线程)不能执行耗时操作(如网络请求、文件读写),否则会导致应用卡顿(ANR - Application Not Responding),所有耗时任务都必须在后台线程执行。
- AsyncTask: 已被标记为废弃,不推荐在新项目中使用。
- Thread + Handler: 基础方法,但代码复杂。
- RxJava: 一个强大的异步编程库,可以简化复杂的异步逻辑。
- Kotlin Coroutines: Kotlin 的协程是目前处理异步任务最优雅、最推荐的方式,但也可以在 Java 中使用一些替代方案。
第五部分:资源与总结
1 推荐学习资源
- 官方文档: Android Developers 官网 (最好的学习资料)
- 教程网站:
- 视频课程:
Udemy, Coursera, B站 上有很多优质的 Java/Kotlin 安卓开发课程。
2 Java vs. Kotlin
| 特性 | Java | Kotlin |
|---|---|---|
| 官方地位 | 官方语言,历史悠久 | Google 官方推荐的首选语言 |
| 语法 | 冗长,模板代码多 | 简洁,空安全,函数式编程特性 |
| 互操作性 | - | 100% 兼容 Java,可以在同一个项目中混用 |
| 开发效率 | 较低 | 高,代码量少,不易出错 |
| 学习曲线 | 简单 | 相对平滑,但新特性需要学习 |
总结建议:
- 如果你是初学者: 可以从 Java 开始,因为它学习资源多,语法基础扎实,能让你更好地理解 Android 的底层原理。
- 如果你是专业开发者或想快速上手: 强烈推荐直接学习 Kotlin,它是为 Android 而生,能让你写出更安全、更简洁、更高效的代码,你可以把 Java 看作是 Kotlin 的一个子集,很多概念是相通的。
希望这份详细的指南能帮助你顺利开启 Java Android 开发之旅!祝你编码愉快!
