安卓开发学习笔记

Windows 系统手动安装 Flutter 环境

✅ 一、准备条件

  1. 操作系统:Windows 10/11(推荐 64 位)
  2. 安装要求:

Git(Flutter 安装依赖)

# 查看
git --version

# 默认安装路径
C:\Program Files\Git

Android SDK(用于构建 APK)

# 查看
sdkmanager --list

# 默认安装路径
C:\Users\<你的用户名>\AppData\Local\Android\Sdk

JDK(建议 JDK 17)

# 查看
java -version

# 默认安装路径
C:\Program Files\Java\jdk-17

✅ 二、安装 Flutter SDK

1. 下载 Flutter

2. 解压

解压到路径,例如:

C:\flutter

3. 配置环境变量

将以下路径添加到系统环境变量 Path 中:

C:\flutter\bin

然后重启终端(cmd/powershell)。


✅ 三、安装 Android SDK(命令行方式)

1. 下载 Android 命令行工具

注意:解压后的目录结构必须是:

C:\Android\cmdline-tools\latest\bin

2. 配置环境变量

添加以下环境变量:

ANDROID_HOME=C:\Android
Path += C:\Android\platform-tools
Path += C:\Android\cmdline-tools\latest\bin

3. 安装必要组件

sdkmanager --sdk_root=C:\Android "platform-tools" "platforms;android-34" "build-tools;34.0.0"

✅ 四、安装 JDK(建议 JDK 17)

JAVA_HOME = C:\Program Files\Java\jdk-17
Path += %JAVA_HOME%\bin

✅ 五、验证安装

flutter doctor

检查是否识别出所有组件并显示 ✅。


✅ 六、创建和构建项目

1. 创建项目

flutter create myapp
cd myapp

2. 构建 APK

flutter build apk --release

输出文件路径:

build\app\outputs\flutter-apk\app-release.apk

✅ 附:常见建议

项目 推荐配置
JDK OpenJDK 17
Android SDK platform-tools, android-34, build-tools-34
构建命令 flutter build apk --release
不建议使用权限 尽量不要使用管理员/root 构建

Flutter 现代化项目目录结构

my_flutter_app/                    # 项目根目录
├── android/                      # Android 平台相关代码(自动生成)
├── ios/                          # iOS 平台相关代码(自动生成)
├── lib/                          # Flutter 应用主代码目录
│   ├── main.dart                 # 入口文件,应用启动点
│   ├── src/                     # 业务代码目录(可按需自定义)
│   │   ├── widgets/             # 复用 Widget 组件
│   │   ├── pages/               # 页面级 Widget(Screen)
│   │   ├── models/              # 数据模型
│   │   ├── services/            # 业务逻辑或 API 请求
│   │   ├── utils/               # 工具类函数
│   │   └── providers/           # 状态管理(如 Provider、Riverpod)
├── assets/                       # 静态资源目录(图片、字体等)
│   ├── images/                   # 图片资源
│   ├── fonts/                    # 字体资源
│   └── translations/             # 国际化资源(如 ARB 文件)
├── test/                        # 单元测试代码
├── pubspec.yaml                 # Flutter 项目配置文件,管理依赖、资源
├── analysis_options.yaml        # Dart 分析规则配置(lint 规则)
├── .gitignore                   # Git 忽略文件
├── README.md                    # 项目说明文档
└── build/                       # 构建输出目录(自动生成)

关键说明


现代 Flutter 项目技术栈示例



Windows 下手动安装 Kotlin + Gradle 开发环境

✅ 一、准备条件

JDK(建议 JDK 17)

# 查看
java -version

# 默认安装路径
C:\Program Files\Java\jdk-17

Android SDK(用于构建 APK)

# 查看
sdkmanager --list

# 默认安装路径
C:\Users\<你的用户名>\AppData\Local\Android\Sdk

Gradle 构建工具

# 查看
gradle -v

# 默认安装路径
C:\Gradle\gradle-8.0

你下载并解压 Gradle 后,一般会放在一个目录,比如上面路径。

这个目录下有bin文件夹,里面有gradle.bat,需要把这个bin路径加到系统环境变量 PATH 中,才能全局使用gradle命令。


✅ 二、安装 JDK

1. 下载 JDK

2. 安装并配置环境变量

假设你将 JDK 安装在:

C:\Program Files\Java\jdk-17

添加系统环境变量:

JAVA_HOME = C:\Program Files\Java\jdk-17
Path += %JAVA_HOME%\bin

✅ 三、安装 Gradle

1. 下载 Gradle

2. 解压并配置环境变量

假设你解压到:

C:\gradle\gradle-8.7

添加环境变量:

GRADLE_HOME = C:\gradle\gradle-8.7
Path += %GRADLE_HOME%\bin

3. 验证

gradle -v

✅ 四、安装 Android SDK(命令行方式)

1. 下载 Android 命令行工具

注意:解压后的目录结构必须是:

C:\Android\cmdline-tools\latest\bin

2. 配置环境变量

添加以下环境变量:

ANDROID_HOME=C:\Android
Path += C:\Android\platform-tools
Path += C:\Android\cmdline-tools\latest\bin

3. 安装必要组件

sdkmanager --sdk_root=C:\Android "platform-tools" "platforms;android-34" "build-tools;34.0.0"

✅ 五、创建 Kotlin + Gradle 项目

1. 创建项目结构

mkdir kotlin-app
cd kotlin-app
gradle init

在交互中选择:

2. 项目结构

kotlin-app/
├── build.gradle.kts     // Kotlin DSL 构建脚本
├── settings.gradle.kts
└── src/
    └── main/
        └── kotlin/
            └── App.kt

3. 示例代码(src/main/kotlin/App.kt

fun main() {
    println("你好,Kotlin!")
}

✅ 六、构建和运行项目

构建项目

gradle build

运行程序

gradle run

依赖管理

gradle dependencies   # 查看依赖树
gradle --refresh-dependencies  # 强制刷新依赖

✅ 七、常见问题建议

项目 建议版本/说明
JDK JDK 17
Gradle Gradle 8.x(支持 Kotlin DSL)
Kotlin 可使用内置 Gradle 插件版本
IDE 可选,命令行即可开发

✅ 附加资源

Gradle国内镜像

bin.zip 只含运行环境。

Kotlin项目常见目录结构

MyAndroidProject/               # 项目根目录
├── app/                       # 应用模块(主程序)
│   ├── src/
│   │   ├── main/
│   │   │   ├── java/           # Java 或 Kotlin 源代码目录
│   │   │   │   └── ...         # 按包名分目录,比如 com/example/app
│   │   │   ├── res/            # 资源文件目录(布局、图片、字符串等)
│   │   │   │   ├── layout/     # 界面布局 XML 文件
│   │   │   │   ├── drawable/   # 图片资源(png、jpg等)
│   │   │   │   ├── mipmap/     # 启动图标(多分辨率)
│   │   │   │   ├── values/     # 字符串、颜色、尺寸、样式等 XML
│   │   │   │   ├── font/       # 字体文件(ttf/otf)
│   │   │   │   └── anim/       # 动画资源 XML 文件
│   │   │   ├── AndroidManifest.xml  # 应用清单文件,配置应用信息、权限等
│   │   │   └── assets/         # 原始资源文件(无需预处理,如字体、html)
│   │   └── test/               # 单元测试代码目录
│   ├── build.gradle            # 模块级 Gradle 构建脚本
│   └── proguard-rules.pro      # 混淆配置文件
├── build/                     # 构建输出目录(编译生成文件)
├── gradle/                    # Gradle 包装器相关文件
│   └── wrapper/
│       └── gradle-wrapper.properties  # Gradle 版本配置
├── gradle.properties          # Gradle 全局配置参数
├── settings.gradle            # 项目设置文件(包含模块配置)
├── build.gradle               # 项目级 Gradle 构建脚本,配置插件版本等
└── local.properties           # 本地 SDK 路径等私有配置(通常不上传)

说明


项目环境依赖版本查看

项目文件 查什么版本 关键词示例
gradle-wrapper.properties Gradle 构建版本 distributionUrl=...gradle-8.4-bin.zip
build.gradle(项目级) Gradle 插件 / Kotlin 插件版本 com.android.tools.build:gradle:8.4.0
gradle.properties Kotlin 配置 / JVM 参数 kotlin.code.style=official
app/build.gradle compileSdk / minSdk / targetSdk / Kotlin 版本 compileSdk 34, jvmTarget = "1.8"
dependencies 所依赖的所有库和版本 implementation 'androidx.core:core-ktx:1.15.0'

Docker构建参考

services:
  android-build:
    image: thyrlian/android-sdk
    volumes:
      - ./:/app
      - ./gradle-cache:/root/.gradle
    working_dir: /app
    environment:
      - GRADLE_OPTS=-Dorg.gradle.daemon=false
      - JAVA_OPTS=-Xmx4g
    command: >
      sh -c "
        chmod +x gradlew &&
        ./gradlew clean assembleDebug
      "
    # 构建发布版本需要签名
  android-release:
    image: thyrlian/android-sdk
    volumes:
      - ./:/app
      - ./gradle-cache:/root/.gradle
    working_dir: /app
    environment:
      - GRADLE_OPTS=-Dorg.gradle.daemon=false
      - JAVA_OPTS=-Xmx4g
      # 签名相关环境变量
      - KEYSTORE_FILE=/app/keystore/release.jks
      - KEYSTORE_PASSWORD=${KEYSTORE_PASSWORD}
      - KEY_ALIAS=${KEY_ALIAS}
      - KEY_PASSWORD=${KEY_PASSWORD}
    command: >
      sh -c "
        chmod +x gradlew &&
        ./gradlew clean assembleRelease
      "
# 构建调试版本
docker compose up android-build

# 构建发布版本(需要配置签名)
docker compose up android-release


🤖Go 项目生成 Android SDK (AAR) 并在 Kotlin 调用

  1. 安装 gomobile
go install golang.org/x/mobile/cmd/gomobile@latest
go install golang.org/x/mobile/cmd/gobind@latest
gomobile init
  1. 编写 Go 库
  1. 生成 AAR 库
gomobile bind -target=android ./mylib

输出文件:

mylib.aar ← Android 依赖库

mylib-sources.jar ← 源码 (可选)
  1. 导入到安卓项目

mylib.aar放到app/libs/目录

修改app/build.gradle

dependencies {
    implementation files('libs/mylib.aar')
}
  1. Kotlin 调用 Go 库
import mylib.Mylib

val result = Mylib.hello("World")
Log.d("GoLib", result)  // 输出: Hello, World!

最新主流技术栈

🔹核心技术栈

Kotlin → 谷歌官方推荐的 Android 主语言,现代化、空安全、协程支持。

Jetpack Compose → 作为系统主题、声明式 UI 框架,已经是新项目的主流。

Material Design 3 (Material You) → 最新的 UI 设计规范,支持动态配色(跟随系统主题)。

Android Architecture Components (AAC) → ViewModel、LiveData、Lifecycle、Navigation 等,配合 Compose/Flow 用来管理状态和架构。

🔹最佳实践

Material3 → Material Design 3 的 UI 组件库。

顶部状态栏和底部导航栏颜色统一,UI不覆盖系统图标,也完整填充手势区,整体扁平化设计。

Jetpack Compose 作为系统主题(纯 Compose 主题,不依赖 XML 样式)

Lifecycle Runtime → 生命周期感知(lifecycle-runtime-ktx 常配合协程使用)。

Activity Compose → 连接 ComponentActivity 和 Compose。

Material Icons Extended → Google 提供的扩展图标集,UI 常用。

Hilt/Dagger 或 Koin → 依赖注入

Room/Datastore → 数据存储

Navigation-Compose → 页面路由

Coroutines + Flow → 异步 & 响应式编程

🔹系统要求

最低 SDK 23 (Android 6.0) → 保证兼容大部分机型。

目标 SDK 35 (Android 15) → 跟随 Play 商店要求。

编译 SDK 35 → 保持最新 API 能力。

gradle构建工具

https://github.com/gradle/gradle/raw/v8.14.3/gradle/wrapper/gradle-wrapper.jar
https://services.gradle.org/distributions/gradle-8.14.3-wrapper.jar

https://services.gradle.org/distributions/gradle-8.14.3-bin.zip

Github流水线构建示例

提交新tag标签触发

name: Android Build APK

on:
  push:
    tags:
      - 'v*'
  workflow_dispatch:

jobs:
  build:
    runs-on: ubuntu-latest
    permissions:
      contents: write

    steps:
      # 检出代码
      - uses: actions/checkout@v4

      # 安装 JDK 17 并缓存 Gradle
      - name: Set up JDK 17
        uses: actions/setup-java@v4
        with:
          distribution: temurin
          java-version: 17
          cache: gradle

      # 自动生成 keystore
      - name: Generate keystore for CI
        run: |
          keytool -genkeypair \
            -alias ci-key \
            -keyalg RSA \
            -keysize 2048 \
            -validity 10000 \
            -keystore keystore.jks \
            -storepass 123456 \
            -keypass 123456 \
            -dname "CN=CI, OU=Dev, O=Company, L=City, S=State, C=CN"

      # 生成 keystore.properties
      - name: Generate keystore.properties
        run: |
          echo "storeFile=keystore.jks" > keystore.properties
          echo "storePassword=123456" >> keystore.properties
          echo "keyAlias=ci-key" >> keystore.properties
          echo "keyPassword=123456" >> keystore.properties

      # 授权 gradlew 可执行
      - name: Grant execute permission for gradlew
        run: chmod +x ./gradlew

      # 构建 release APK
      - name: Build release APK
        run: ./gradlew assembleRelease
        env:
          KEY_ALIAS: ci-key
          KEY_PASSWORD: 123456
          STORE_FILE: keystore.jks
          STORE_PASSWORD: 123456

      # 上传 APK artifact
      - name: Upload APK artifact
        uses: actions/upload-artifact@v4
        with:
          name: frp-Android
          path: app/build/outputs/apk/release/*.apk
          retention-days: 7

      # 创建 GitHub Release
      - name: Create GitHub Release
        uses: softprops/action-gh-release@v2
        with:
          tag_name: ${{ github.ref_name }}
          name: frp-Android ${{ github.ref_name }}
          files: app/build/outputs/apk/release/*.apk
          draft: false
          prerelease: false
          make_latest: true
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
❤️转载请注明出处❤️