Android 应用开发入门
1. 概述
1.1 功能简介
本文档介绍 SMDT RK3588 板 Android 应用开发的基础知识,包括开发环境搭建、项目结构、UI 布局、Activity 生命周期以及应用安装调试方法。通用 Android 部分是参考说明,平台相关内容都按本产线实机验证修订过,验证环境取自 2026-10-22 的实机:
| 项目 | 实测值 |
|---|---|
| 板卡 | rk3588_smdt_3588a_v31(C-3588LQ 核心板 + SHIMETAPI-M5-R2A 底板) |
| Android 版本 | 16(API 36,ro.product.first_api_level=36,userdebug) |
| ABI | 仅 arm64-v8a(64 位单 ABI,ro.product.cpu.abilist 实测) |
| 内核 | 6.1.172-android14-11-g5b6e3d242716-ab15726104(GKI) |
| NPU | RK1828 PCIe NPU 卡(rknn-smi 实测 Online,5GB 专属内存,见 §1.2 说明) |
| 分区方案 | 动态分区 + A/B 双槽位(系统分区有两份,升级写备用槽,出错可回退) |
本板固件由双 SDK 联编产出,编译与烧录见 §4.5 与 ../sdk-build/ch01-android-sdk-build.md。
1.2 应用场景
- Android 原生应用开发(标准 Android 应用)
- 板级外设控制应用(通过 JNI 访问 GPIO/UART/I2C 等)
- 多媒体应用(摄像头、音视频播放,基于 RK3588 编解码能力)
- AI 推理应用(板载 RK1828 PCIe NPU 卡,配合 RKNN API;注意不是 RK3588 SoC 内置 NPU,见
ch02-android-jni-development.md§4.5)
1.3 工作原理
Android 应用开发架构(参考说明):
Java/Kotlin → Android SDK → Framework API → HAL → Linux Kernel → RK3588 硬件2. 硬件准备
| 设备 | 型号/规格 | 数量 | 说明 |
|---|---|---|---|
| 开发主机 | PC (Windows/Linux/macOS) | 1 | 安装 Android Studio |
| 核心板 | C-3588LQ | 1 | RK3588 八核 64 位(4×A76 + 4×A55),最高 2.4 GHz |
| 底板 | SHIMETAPI-M5-R2A | 1 | |
| USB 数据线 | Type-C | 1 | ADB 连接(仅支持 USB OTG 口,实测可用) |
3. 软件准备
3.1 通用开发环境(参考说明)
- Android Studio:官方 IDE,支持 Java/Kotlin 开发
- Android SDK:API Level 36(Android 16),可通过 SDK Manager 安装;
minSdk可按需降低以兼容旧版本 - JDK:JDK 17
- ADB 工具:Android SDK Platform Tools 中包含
3.2 固件 SDK(本产线双 SDK 联编)
应用开发日常只需 ADB + APK,一般不接触 SDK 源码树。需要联编固件(定制 framework、预置应用等)时,源码树结构如下,详见 ../sdk-build/ch01-android-sdk-build.md:
| 树 | 路径 | 说明 |
|---|---|---|
| A16 | ROCKCHIP_ANDROID16.0_SSI_SDK | system 侧(frameworks/、预置应用、AOSP 树) |
| A14 | RK_Android14_SDK_Archive | vendor 侧(kernel-6.1/、device/rockchip/、RKTools/) |
4. 操作步骤
4.1 创建 Android 项目
在 Android Studio 中创建新项目:
- 选择 Empty Views Activity 模板
- 目标 SDK 选 API 36 (Android 16)(
minSdk可按需降低) - 包名格式:
com.example.<project_name> - 语言可选 Java 或 Kotlin
4.2 项目结构说明
app/
├── src/
│ ├── main/
│ │ ├── java/com/example/<app>/ # Java/Kotlin 源代码
│ │ ├── res/ # 资源文件(布局、图片、字符串等)
│ │ │ ├── layout/ # XML 布局文件
│ │ │ ├── values/ # 字符串、颜色、主题等
│ │ │ ├── drawable/ # 图片资源
│ │ │ └── mipmap/ # 应用图标
│ │ └── AndroidManifest.xml # 应用清单文件
│ └── test/ # 单元测试
│ └── androidTest/ # 集成测试
├── build.gradle.kts # 模块级构建配置
└── ...4.3 Activity 生命周期
Android Activity 生命周期包含七种回调方法,按顺序执行:
onCreate() → onStart() → onResume() → (运行中) → onPause() → onStop() → onDestroy()4.4 UI 布局
Android 应用使用 XML 布局文件定义 UI,常用布局类型:
| 布局 | 说明 |
|---|---|
LinearLayout | 线性排列(水平/垂直) |
RelativeLayout | 相对定位 |
ConstraintLayout | 约束布局,灵活高效 |
FrameLayout | 帧布局,层叠显示 |
4.5 固件编译与烧录(指向专章)
本产线为双 SDK 联编架构,编译和烧录由专门章节覆盖,此处只给入口:
- 编译:唯一入口
bash build_ssi16.sh all(七阶段:deploy → setup → ssi → uboot → vendor → merge → update),详见../sdk-build/ch01-android-sdk-build.md。 - 产物:
rockdev/Image-rk3588_u/update.img整包(~2.3GB);GKI/GRF 模式下 dtb 打在vendor_boot.img内,无单独 kernel.img/resource.img 分区 - 烧录:RKDevTool/upgrade_tool 烧
update.img整包,详见../quick-start-guide/ch01-android-flashing-and-boot.md - 增量出包(改了什么跑哪个阶段):见
../sdk-build/ch02-android-build-system-incremental-build.md§4.2
4.6 应用安装与调试
4.6.1 ADB 连接
# 连接设备(通过 USB OTG 口)
adb shell
# 查看设备列表
adb devicesuserdebug 固件默认可直接 ADB,无需额外开启开发者选项。
4.6.2 安装与卸载应用
# 安装 APK
adb install <apk文件路径>
# 重新安装(保留数据)
adb install -r <apk文件路径>
# 卸载应用
adb uninstall <package_name>4.6.3 文件传输
# 上传文件到设备
adb push <本地路径> <远程路径>
# 从设备下载文件
adb pull <远程路径> <本地路径>4.6.4 日志查看
# 查看所有日志
adb logcat
# 过滤日志级别
adb logcat *:W
# 按 TAG 过滤
adb logcat ActivityManager:I MyApp:D *:S
# 按应用 PID 过滤
adb logcat --pid=$(pidof com.example.app)4.6.5 设备信息查看
# 查看系统属性
adb shell getprop
# 查看系统服务状态
adb shell dumpsys
# 生成 bug 报告
adb bugreport更多调试方法(dmesg、日志分析)见 ../quick-start-guide/ch03-adb-debugging-and-logs.md。
4.7 板级 DTS(本产线)
本产线板级 dts 为 rk3588_smdt_3588a_v31(独立完整 dts,不是 DTBO overlay),唯一源在 A16 板卡资产目录 device/rockchip/rockchip_generic/board/rk3588_smdt_3588a_v31/,修改流程与功能块布局详见 ../system-development/ch01-android-system-customization.md §4.2。应用开发一般无需改 dts。
5. 代码详解
5.1 基础 Activity 示例(参考说明)
// MainActivity.java
package com.example.myapp;
import android.os.Bundle;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView tv = findViewById(R.id.text_view);
tv.setText("Hello, RK3588!");
}
}5.2 AndroidManifest.xml 配置(参考说明)
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.myapp">
<application
android:allowBackup="true"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/Theme.MyApp">
<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>6. 常见问题
6.1 ADB 连接失败
- 确保使用 USB OTG 口连接
- 确保设备已开启开发者选项和 USB 调试
- 不支持多个 ADB 客户端同时使用,仅支持连接一个设备
6.2 应用安装失败
- 检查 APK 签名是否与现有版本冲突
- 确认目标 SDK 版本是否与设备兼容
- 使用
adb install -r重新安装
6.3 应用崩溃(Force Close)
- 使用
adb logcat查看崩溃日志,定位异常堆栈 - 检查 AndroidManifest.xml 中权限声明是否完整
- 检查资源文件引用是否正确
7. 相关文档
| 文档 | 说明 |
|---|---|
| ch02-android-jni-development.md | JNI 开发与 NDK 使用 |
| ch01-android-hal-development.md | HAL 层开发与驱动集成 |
| ch01-android-npu-guide.md | NPU 推理与 AI 应用开发 |
| ../quick-start-guide/ch03-adb-debugging-and-logs.md | ADB 调试与日志分析 |
| ../sdk-build/ch01-android-sdk-build.md | 固件编译(双 SDK 联编) |
| 01Linux系统/04application-development/ch01-c-cpp-application-development.md | C/C++ 开发参考 |
