NDK (Native Development Kit) **不是**獨立應用框架,而是 **JNI (Java Native Interface) 橋樑**,讓 Java/Kotlin 前端呼叫 C/C++ 高效能邏輯。**所有 Android App 入口點皆為 Java/Kotlin (`Activity`, `Service` 等)**,NDK 程式碼以共享庫 (`*.so`) 形式被載入。
┌─────────────────────────────────────┐
│ Java/Kotlin UI 層 (Activity/View) │ ← 必須存在,處理生命週期、觸控、權限
├─────────────────────────────────────┤
│ JNI 呼叫介面 (System.loadLibrary) │ ← 橋樑,資料編組 (jstring↔std::string)
├─────────────────────────────────────┤
│ C/C++ 邏輯層 (Game Engine, Codec) │ ← NDK 核心價值:效能、跨平台、既有庫復用
└─────────────────────────────────────┘
| 方案 | 原理 | 成熟度 | 適用場景 |
|---|---|---|---|
| Flutter (Dart) | 自繪引擎 Skia → GPU,Dart AOT 編譯 | ⭐⭐⭐⭐⭐ 生產就緒 | 跨平台高性能 UI |
| Qt for Android | Qt Quick (QML) + C++,Android 部署封裝 | ⭐⭐⭐⭐ 嵌入式/工控強 | 既有 Qt 代碼庫遷移 |
| imgui + SDL/Vulkan | 即時模式 GUI,C++ 直接繪製 | ⭐⭐ 工具/編輯器/遊戲 | 極簡 UI、除錯工具 |
| Kotlin Multiplatform (KMP) | 共享業務邏輯 (Kotlin),UI 原生 | ⭐⭐⭐⭐ 官方推薦 | 邏輯共用、UI 原生 |
GetStringUTFChars / `ReleaseStringUTFChars` 配對、NewGlobalRef 管理生命週期、避免頻繁跨邊界呼叫。NDK 是 **效能加速器**,非 **應用框架**。想完全避開 Java/Kotlin,請改用 Flutter/Qt/KMP 等完整跨平台方案;若堅持 C++ 核心,**薄 Java 殼 + JNI** 是 Android 平台的唯一正規路徑。