PlusMagi's Blog By Pitt Phunsanit Technology การพัฒนา Cross-Platform สำหรับ HarmonyOS

การพัฒนา Cross-Platform สำหรับ HarmonyOS

การก้าวเข้าสู่ยุค HarmonyOS NEXT ถือเป็นจุดเปลี่ยนสำคัญของสถาปัตยกรรมซอฟต์แวร์ เมื่อ Huawei ประกาศตัดความเข้ากันได้กับรันไทม์ Android (AOSP) ออกไปโดยสิ้นเชิง นั่นหมายความว่าไฟล์ .apk แบบเดิมจะไม่สามารถติดตั้งหรือรันบนระบบนี้ได้อีกต่อไป

สำหรับองค์กรและทีมนักพัฒนาที่มีแอปพลิเคชันเดิมบน iOS และ Android อยู่แล้ว คำถามสำคัญคือ “จะนำแอปเดิมข้ามแพลตฟอร์มมายัง HarmonyOS ได้อย่างไรโดยไม่ต้องเขียนโค้ดใหม่ทั้งหมดตั้งแต่ศูนย์?”

บทความนี้จะเจาะลึก 3 แนวทางหลักในการสร้างแอป Cross-Platform สู่ HarmonyOS รวมถึงเฟรมเวิร์ก เครื่องมือ และข้อควรระวังในการวางสถาปัตยกรรม


ภูมิทัศน์ของ Cross-Platform บน HarmonyOS

ในการรองรับ HarmonyOS NEXT ระบบนิเวศของเฟรมเวิร์กยอดนิยมได้แยกออกเป็น 3 เส้นทางหลัก:

รูปแบบเครื่องมือ / เทคโนโลยีหลักความพร้อมของระบบนิเวศระดับความซับซ้อนในการพอร์ต
Dart / Declarative NativeFlutter (OpenHarmony Engine)สูงมาก (คอมมูนิตี้และองค์กรผลักดันสูง)ปานกลาง (เน้นพอร์ต Native Plugins)
JavaScript / Web-basedReact Native / Taro / Uni-appปานกลางถึงสูงต่ำถึงปานกลาง
C++ / Game EngineCocos, Unity, Unreal Engineสูง (รองรับผ่าน NDK/C++ APIs)ปานกลาง

เจาะลึกแนวทางยอดนิยม: Flutter บน HarmonyOS

Flutter ถือเป็นหนึ่งในตัวเลือกอันดับหนึ่งของนักพัฒนาทั่วโลกสำหรับการทำ Cross-Platform สำหรับ HarmonyOS นั้น ชุมชน OpenHarmony ร่วมกับ Huawei ได้พัฒนา Flutter Engine สำหรับ OpenHarmony (OHOS) ขึ้นมาโดยเฉพาะ


สถาปัตยกรรมการทำงาน

  • Flutter Engine (C++)
    ถูกคอมไพล์ให้เข้ากันได้กับ HarmonyOS NDK และเชื่อมต่อการวาดภาพผ่าน Skia หรือ Impeller ลงบน Surface ของ HarmonyOS
  • Framework Layer (Dart)
    วิดเจ็ต UI, State Management (เช่น Bloc, Provider, Riverpod) และ Business Logic สามารถนำมาใช้ต่อได้ทันทีเกือบ 100%
  • Platform Channel
    แปลงคำสั่งที่ต้องคุยกับ Native ให้เชื่อมต่อไปยังโค้ด ArkTS แทน Java/Kotlin (Android) หรือ Swift/Obj-C (iOS)

ตัวอย่างการสร้าง Platform Channel บน HarmonyOS (ArkTS)

เมื่อต้องการเรียกใช้ Native Feature เฉพาะของ HarmonyOS จาก Flutter

JavaScript

// entryability/EntryAbility.ets (ฝั่ง Native ArkTS)
import { FlutterAbility } from '@ohos/flutter_ohos';
import { MethodChannel } from '@ohos/flutter_ohos';

export default class EntryAbility extends FlutterAbility {
  configureFlutterEngine(flutterEngine) {
    super.configureFlutterEngine(flutterEngine);

    const channel = new MethodChannel(
      flutterEngine.getDartExecutor().getBinaryMessenger(),
      'com.example.app/system_info'
    );

    channel.setMethodCallHandler({
      onMethodCall(call, result) {
        if (call.method === 'getOSVersion') {
          result.success('HarmonyOS Pure Native');
        } else {
          result.notImplemented();
        }
      }
    });
  }
}

ทางเลือกสาย Web-First: React Native และ Uni-app

React Native (React Native for OpenHarmony – RN4OH)

  • พัฒนาโดยการเชื่อมต่อ Hermes JavaScript Engine เข้ากับรันไทม์ของ ArkUI
  • ตัว Component พื้นฐานเช่น <View>, <Text> จะถูก Map เข้ากับคอมโพเนนต์ของ ArkUI โดยตรง
  • เหมาะสำหรับทีมที่มี Codebase เป็น React Native อยู่แล้ว แต่ยังมีข้อจำกัดเรื่อง Third-party Library ใน npm ที่ผูกกับ Android NDK ลึกๆ ซึ่งต้องรอคอมมูนิตี้พอร์ต C++ TurboModules

Uni-app และ Mini-Program Frameworks

  • แพลตฟอร์มยอดนิยมสำหรับองค์กรที่พัฒนาแอปบริการหรืออีคอมเมิร์ซ
  • สามารถคอมไพล์โค้ด Vue.js ออกมาเป็น Atomic Service (元服务) บน HarmonyOS ได้โดยตรง ทำให้ไม่ต้องติดตั้งผ่าน Store และรันเป็น Card/Widget ได้ทันที

ความท้าทายหลักในการทำ Cross-Platform สู่ HarmonyOS

แม้โค้ดฝั่ง Business Logic หรือ UI ข้ามแพลตฟอร์มจะนำกลับมาใช้ได้ แต่ความท้าทายทางเทคนิคจะไปตกอยู่ที่ชั้น Native Integration

  1. การแทนที่ GMS/Firebase ด้วย HMS Core
    • Push Notifications
      ต้องเปลี่ยนจาก FCM (Firebase Cloud Messaging) ไปใช้ Push Kit ของ Huawei
    • แผนที่และระบุตำแหน่ง
      สลับจาก Google Maps ไปยัง Map Kit และ Location Kit
    • การยืนยันตัวตนและการชำระเงิน
      เปลี่ยนสถาปัตยกรรม Auth และ In-App Purchase ไปยัง HMS Core APIs
  2. Third-party C++ Libraries
    • ไลบรารีเฉพาะทาง เช่น Image Processing, Cryptography หรือ Audio Engine ที่เคยใช้ไฟล์ .so ของ Android จะต้องนำซอร์สโค้ด C/C++ มาคอมไพล์ใหม่ด้วย HarmonyOS Clang Toolchain (Native C++ SDK)
  3. การออกแบบ Responsive ให้เข้ากับ Multi-device Form Factors
    • สถาปัตยกรรมของ HarmonyOS เน้นอุปกรณ์จอพับ (Foldables) และแท็บเล็ตเป็นพิเศษ เลย์เอาต์ของแอป Cross-Platform จึงต้องปรับปรุง Breakpoint และรองรับ Drag-and-Drop หรือ Multi-window ได้อย่างลื่นไหล

สรุปแนวทางเชิงกลยุทธ์สำหรับทีมพัฒนา

การขยายแอปพลิเคชันสู่ระบบนิเวศ HarmonyOS ไม่จำเป็นต้องทิ้งโค้ดเดิมทั้งหมด หากโปรเจกต์ของคุณพัฒนาด้วย Flutter หรือ React Native การใช้ Engine สำหรับ OpenHarmony จะช่วยประหยัดเวลาและต้นทุนในการพัฒนาส่วน UI ไปได้มากกว่า 70%

ภารกิจหลักของนักพัฒนาจะมุ่งเน้นไปที่การสร้าง Abstraction Layer ในระดับแพลตฟอร์ม เพื่อสลับระหว่าง Google Mobile Services (GMS), Apple Frameworks และ Huawei Mobile Services (HMS) รวมถึงการเขียน Platform Channel สั้น ๆ บน ArkTS เพื่อเข้าถึงฮาร์ดแวร์เฉพาะตัวของ HarmonyOS ได้อย่างเต็มประสิทธิภาพ


Exit mobile version