# 第一个Android应用

## 目录
- [创建新项目](#创建新项目)
- [项目结构说明](#项目结构说明)
- [编写第一个Activity](#编写第一个activity)
- [运行应用](#运行应用)
- [常见问题](#常见问题)

---

## 创建新项目

### 步骤1：启动Android Studio

```java
// 1. 打开 Android Studio
// 2. 选择 "New Project"
// 3. 或 File → New → New Project
```

### 步骤2：选择项目模板

```java
// 推荐模板：
// - Empty Activity（空 Activity，适合初学者）
// - Basic Activity（基础 Activity，包含导航）
// - Bottom Navigation Activity（底部导航）
// - Navigation Drawer Activity（侧边栏导航）

// 选择 "Empty Activity" → Next
```

### 步骤3：配置项目

```java
// 项目配置：
// - Name: MyFirstApp（项目名称）
// - Package name: com.example.myfirstapp（包名）
// - Save location: 选择保存路径
// - Language: Java 或 Kotlin
// - Minimum SDK: API 21（Android 5.0）
// - Build configuration language: Gradle Kotlin DSL 或 Groovy

// 点击 Finish
```

### 步骤4：等待项目创建

```java
// Android Studio 会自动：
// 1. 创建项目结构
// 2. 下载依赖
// 3. 同步 Gradle
// 4. 构建项目

// 首次创建可能需要几分钟
```

---

## 项目结构说明

### 项目视图

```
MyFirstApp/
├── app/                          # 应用模块
│   ├── src/
│   │   ├── main/
│   │   │   ├── java/             # Java/Kotlin 源代码
│   │   │   │   └── com/example/myfirstapp/
│   │   │   │       └── MainActivity.java
│   │   │   ├── res/              # 资源文件
│   │   │   │   ├── layout/       # 布局文件
│   │   │   │   │   └── activity_main.xml
│   │   │   │   ├── values/       # 值资源
│   │   │   │   │   ├── strings.xml
│   │   │   │   │   ├── colors.xml
│   │   │   │   │   └── themes.xml
│   │   │   │   └── mipmap/      # 应用图标
│   │   │   └── AndroidManifest.xml  # 应用清单
│   │   └── test/                 # 测试代码
│   └── build.gradle              # 模块构建配置
├── gradle/                       # Gradle 配置
├── build.gradle                  # 项目构建配置
└── settings.gradle               # 项目设置
```

### 关键文件说明

#### AndroidManifest.xml

```xml
<!-- 应用清单文件 -->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.myfirstapp">
    
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/Theme.MyFirstApp">
        <activity
            android:name=".MainActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>
```

#### build.gradle (Module: app)

```gradle
plugins {
    id 'com.android.application'
}

android {
    namespace 'com.example.myfirstapp'
    compileSdk 33

    defaultConfig {
        applicationId "com.example.myfirstapp"
        minSdk 21
        targetSdk 33
        versionCode 1
        versionName "1.0"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation 'androidx.appcompat:appcompat:1.6.1'
    implementation 'com.google.android.material:material:1.9.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
}
```

---

## 编写第一个Activity

### MainActivity.java

```java
package com.example.myfirstapp;

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        // 获取 TextView
        TextView textView = findViewById(R.id.textView);
        textView.setText("Hello, Android!");
    }
}
```

### activity_main.xml

```xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>
```

### 添加按钮和点击事件

```java
// activity_main.xml 中添加按钮
<Button
    android:id="@+id/button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Click Me"
    app:layout_constraintTop_toBottomOf="@id/textView"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent" />

// MainActivity.java 中添加点击事件
Button button = findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        TextView textView = findViewById(R.id.textView);
        textView.setText("Button Clicked!");
    }
});
```

---

## 运行应用

### 方式1：在模拟器上运行

```java
// 1. 确保已创建并启动模拟器
// 2. 点击运行按钮（绿色三角形）
// 3. 或 Run → Run 'app'
// 4. 选择目标设备（模拟器）
// 5. 等待应用安装和启动
```

### 方式2：在真机上运行

```java
// 1. 连接手机到电脑
// 2. 启用 USB 调试
// 3. 验证连接：adb devices
// 4. 点击运行按钮
// 5. 选择真机设备
// 6. 等待应用安装和启动
```

### 构建APK

```java
// 1. Build → Build Bundle(s) / APK(s) → Build APK(s)
// 2. 等待构建完成
// 3. 在 app/build/outputs/apk/ 目录找到 APK 文件
```

### 安装APK

```bash
# 使用 ADB 安装
adb install app-debug.apk

# 或直接在手机上安装 APK 文件
```

---

## 常见问题

### 问题1：Gradle同步失败

```java
// 解决方案：
// 1. File → Invalidate Caches / Restart
// 2. File → Sync Project with Gradle Files
// 3. 检查网络连接
// 4. 配置 Gradle 代理
```

### 问题2：找不到R类

```java
// 解决方案：
// 1. Build → Clean Project
// 2. Build → Rebuild Project
// 3. 检查资源文件是否有错误
// 4. 检查包名是否正确
```

### 问题3：应用崩溃

```java
// 解决方案：
// 1. 查看 Logcat 错误信息
// 2. 检查代码逻辑
// 3. 检查资源文件
// 4. 使用调试器调试
```

### 问题4：布局不显示

```java
// 解决方案：
// 1. 检查布局文件语法
// 2. 检查 View ID 是否正确
// 3. 检查 setContentView() 是否调用
// 4. 检查主题和样式
```

---

## 下一步

```java
// 完成第一个应用后，建议学习：
// 1. Activity 生命周期
// 2. 布局和 View
// 3. 事件处理
// 4. 资源管理
// 5. Intent 和 Activity 跳转
```

---

## 总结

创建第一个 Android 应用是学习 Android 开发的重要一步。通过实践，可以更好地理解 Android 应用的基本结构和开发流程。

---

*最后更新：2024年*
