3 điểm bởi GN⁺ 2026-01-05 | 1 bình luận | Chia sẻ qua WhatsApp
  • Một framework cho phép phát triển ứng dụng Android native chỉ bằng Swift, cấu thành toàn bộ từ UI đến manifest và lifecycle trong một ngôn ngữ duy nhất
  • Cung cấp cấu trúc xây dựng Android UI theo phương thức UI khai báo, hoàn toàn không dùng XML, Java hay Kotlin
  • Hoạt động như một framework Android native thuần túy, không phải web wrapper hay transpiler
  • Có thể định nghĩa UI bằng cú pháp khai báo tương tự SwiftUI, đồng thời ẩn hoàn toàn tầng JNI phức tạp
  • Mang lại trải nghiệm phát triển tích hợp khi định nghĩa trực tiếp cả Android Manifest và cấu hình Gradle bằng mã Swift
  • Là một phương án native mới để lập trình viên Swift mở rộng sang Android, đồng thời là bước ngoặt mở ra khả năng mới cho phát triển đa nền tảng dựa trên Swift

Tổng quan về Droid

  • Droid là một framework được thiết kế để có thể phát triển ứng dụng Android native chỉ bằng ngôn ngữ Swift
  • Được tổ chức để quản lý UI, cấu hình ứng dụng, lifecycle và manifest trong một ngôn ngữ và một codebase duy nhất
  • Loại bỏ sự phụ thuộc vào XML, Java và Kotlin vốn được xem là bắt buộc trong phát triển Android
  • Bao gồm các thành phần native của Android như AndroidX, Flexbox và Material Design
  • Cung cấp cú pháp khai báo tương tự SwiftUI để đơn giản hóa việc định nghĩa UI
  • Ẩn hoàn toàn tầng JNI và cho phép truy cập qua API cấp cao

Mục tiêu thiết kế và đặc điểm

  • Dựa trên Pure Swift, toàn bộ UI, manifest và cấu hình ứng dụng đều được viết bằng Swift
  • Áp dụng UI khai báo, chú trọng tính dễ đọc và khả năng kết hợp
  • Duy trì phương thức phát triển No XML hoàn toàn không sử dụng XML
  • Áp dụng mô hình thực thi Android native, không phải cách tiếp cận dựa trên web hay chuyển đổi mã
  • Cung cấp cấu trúc tích hợp để định nghĩa UI, manifest và phụ thuộc Gradle tại một nơi

Cách tổ chức UI khai báo

  • Sử dụng API thân thiện với Swift để xây dựng Android UI theo kiểu khai báo
  • Biểu diễn widget Android bằng mã Swift như ConstraintLayout, VStack, TextView, MaterialButton
  • Định nghĩa trực tiếp trong mã các ràng buộc layout, sự kiện click và thiết lập style

Viết Android Manifest bằng Swift

  • Khai báo chính Android Manifest bằng mã Swift
  • Quản lý ở cấp độ mã các thiết lập như biểu tượng ứng dụng, theme, activity và fragment
  • Tích hợp trong một file Swift duy nhất việc xử lý sự kiện lifecycle và logic cấu hình

Tài liệu và môi trường phát triển

  • Có tài liệu chính thức và đang tiếp tục được mở rộng
  • Dù chưa toàn bộ tính năng Android đều được tài liệu hóa, các hướng dẫn hiện có được cung cấp ở dạng đã tinh chỉnh
  • Có thể bắt đầu phát triển ngay lập tức thông qua Swift Stream IDE

Phạm vi hỗ trợ

  • Hỗ trợ widget Android cổ điển
  • Hỗ trợ thư viện AndroidX
  • Hỗ trợ component Material Design
  • Hỗ trợ layout Flexbox

Trạng thái dự án

  • Dự án đang được phát triển tích cực và tiến hóa nhanh chóng
  • API đang được cải thiện với khả năng mở rộng trong tương lai, nhưng tầm nhìn cốt lõi vẫn được giữ nguyên
  • Tích cực khuyến khích phản hồi và tham gia

1 bình luận

 
GN⁺ 2026-01-05
Ý kiến trên Hacker News
  • Đã công bố Swift Stream IDE v1.17.0. Giờ đây có thể phát triển ứng dụng Android native hoàn chỉnh chỉ bằng Swift
    Không cần đụng tới XML, Java hay Kotlin. Bên trong, framework SwifDroid do tác giả tạo ra sẽ xử lý vòng đời Android, Activity, Fragment, các widget UI (Material, Flexbox, v.v.) và tự động quản lý cả dependency Gradle
    Nó biên dịch mã Swift để tạo ra một project có thể chạy ngay trong Android Studio. Cả công cụ lẫn framework đều được phát hành theo giấy phép mã nguồn mở MIT

    • Khá thú vị. Tôi tò mò về điểm giao nhau giữa kinh nghiệm Android cần có đối với lập trình viên Swift, và kinh nghiệm Swift cần có đối với lập trình viên Android/Kotlin
      Bạn nói không cần đụng tới XML, Java, Kotlin, nhưng tôi muốn biết liệu một lập trình viên Swift hoàn toàn không có kinh nghiệm Android có thể tạo ứng dụng thành công hay không
      Ngoài ra, tôi cũng muốn biết hiện tại và trong năm tới, khoảng bao nhiêu phần trăm ứng dụng Kotlin hoặc Flutter có thể được viết bằng Swift
    • Một trong những điểm mạnh của Swift là khả năng tương tác với thư viện C/C++. Chúng thường được cung cấp qua dependency SwiftPM hoặc Bazel, nên tôi muốn biết dependency SwiftPM được xử lý như thế nào
    • Tôi tò mò về cách binding mã Java/Kotlin sang Swift
      Bên tôi cũng đang thử làm điều tương tự nhưng dùng Rust thay vì Swift
    • Xin chúc mừng. Tôi cũng từng nghĩ đến việc thống nhất môi trường phát triển bằng Swift, đây thực sự là một công việc rất ấn tượng
  • Kiểu thử nghiệm này rốt cuộc vẫn phải đi qua JNI, nên có giới hạn vì 80% API chỉ được lộ ra qua Java
    Những dự án như vậy lúc nào cũng thú vị, nhưng cuối cùng sẽ đâm phải vấn đề leaky abstraction
    Cũng giống như trên iOS phải biết Objective-C, và trên Windows phải biết .NET/COM vậy

    • Dạo này ngay cả trong hệ sinh thái Apple, muốn thành công thì cũng phải xử lý được cả Swift lẫn Objective-C
      Theo kinh nghiệm của tôi với Unity, việc marshaling từ C# sang C khá mượt, còn với Swift thì tốn công hơn nhiều
      Thực tế là mỗi framework mới lại phải xử lý riêng
  • Dùng một ngôn ngữ chung xuyên nền tảng như Swift hay Kotlin nhìn bề ngoài có vẻ hay, nhưng tôi nghĩ trên thực tế nó không hiệu quả như kỳ vọng
    Cuối cùng bạn vẫn phải duy trì hai codebase, khác biệt và cách lách quá nhiều, nên thà cứ để mỗi bên dùng ngôn ngữ riêng của mình còn hơn
    Hầu hết lập trình viên đều xây dựng sự nghiệp bằng cách học nhiều ngôn ngữ, và việc chuyển đổi cũng không quá khó. Đây là ý kiến cá nhân, nhưng tôi vẫn thấy bản thân dự án là rất tuyệt vời

    • Dù vậy, những thử nghiệm như thế này vẫn giúp kỹ sư quen một nền tảng có thể làm việc ở nền tảng khác
      Trước đây tôi cũng từng học vài tháng để làm ứng dụng Android native bằng Java, nhưng không thấy vui nên bỏ cuộc
      Tôi thiên về phát triển native hoàn chỉnh, và dù đã dùng framework cross-platform suốt vài chục năm, tôi chưa từng thấy thành công lớn nào
      Việc chuyển ngôn ngữ luôn đi kèm chi phí chuyển đổi ngữ cảnh. Mỗi lần tôi qua lại giữa Swift và PHP là lại hay mắc lỗi cú pháp
      Có thể học ngôn ngữ rất nhanh, nhưng để thành thạo SDK, thư viện chuẩn và framework thì cần rất nhiều thời gian
    • Các framework kiểu này giúp làm tính năng đơn giản nhanh hơn, nhưng khi muốn dùng tính năng đặc thù của nền tảng thì lại thành cản trở
      Đặc biệt là bây giờ nhờ công cụ AI mà tốc độ xử lý việc đơn giản vốn đã nhanh rồi, nên hiệu quả tiết kiệm tổng thời gian phát triển không còn lớn
      Nếu ứng dụng về bản chất chỉ ở mức web app thì còn được, chứ không thì tôi không khuyến nghị
    • Kotlin và Swift rất giống nhau, và ở những chỗ có khác biệt thì tôi lại nghĩ không nên cố trừu tượng hóa
      Xét riêng về ngôn ngữ thì tôi thấy Swift tốt hơn, nhưng KMP lâu đời và ổn định hơn nên thực tế có lẽ tôi sẽ dùng bên đó
    • Biết nhiều ngôn ngữ thực ra lại mang đến sự tự do
      Nhưng tôi không thích việc bị phụ thuộc sâu hơn vào một hệ sinh thái của tập đoàn lớn nào đó
      Hơn nữa, cá nhân tôi thấy Swift là một ngôn ngữ khá khó chịu, nên cũng không muốn dùng nó ở nền tảng khác làm gì
  • Tôi tò mò không biết nó so với Skip như thế nào
    Có vẻ dự án này không nhằm đưa mã iOS SwiftUI sang Android, mà tập trung vào phát triển Swift dành riêng cho Android
    Tôi muốn biết liệu điều đó có dẫn đến chất lượng ứng dụng tốt hơn không, và đã có ví dụ thực tế nào chưa

  • Chỉ riêng việc không phải dùng Android Studio hay IntelliJ thôi cũng đã là một cải thiện lớn rồi. Làm rất hay

    • Dùng Xcode để tránh Android thì có vẻ là một lựa chọn giống như nghịch axit hydrochloric
    • Tôi muốn biết có tránh được cả Gradle không. Không rõ nó có giúp bỏ qua cơn ác mộng quản lý dependency đó không
  • Cửa sổ xin đồng ý cookie có cảm giác không tuân thủ quy định của châu Âu

  • Tôi không hiểu tại sao phát triển di động lại bất tiện hơn PC đến vậy
    Tôi thắc mắc vì sao ngay cả việc tạo một Hello World bằng assembly trên mobile cũng lại khó như thế

    • Làm thì vẫn làm được. Nhưng nó đau khổ ngang với việc viết Hello World bằng assembly trên PC, nên chẳng ai làm cả
  • Tôi đã nghỉ phát triển Android một thời gian, nên nếu tóm tắt tình hình hiện nay thì
    Trước đây iOS dùng Swift, Android dùng Java
    Còn bây giờ thì Java đã được thay bằng Kotlin, và có thêm các framework cross-platform như Flutter hay React Native
    Tôi tò mò không biết Swift on Android có phải là một lớp trừu tượng nữa giống như vậy không, hay là nó gần native hơn
    Xét cho cùng thì thứ nhanh nhất chẳng phải vẫn là mã native sao?

    • React Native không dựa trên webview. Nó là một lớp dịch native chuyển JSX thành mã UI SwiftUI/Kotlin
      Cá nhân tôi thích Flutter hơn. Nhiều lập trình viên Android native cũng nói Flutter có thể là tương lai của phát triển Android
      Có thể tham khảo thảo luận liên quan tại chuỗi Reddit này
  • Dự án này theo hướng tiếp cận khác với SwiftCrossUI hay Skip
    SwiftCrossUI và Skip giữ nguyên SwiftUI để chạy trên nhiều nền tảng,
    còn SwifDroid là viết UI dành riêng cho Android bằng Swift
    Mục tiêu là tạo ứng dụng Android hoàn chỉnh bằng Swift mà vẫn dùng trực tiếp hệ thống View và API của Android, không cần Java/Kotlin/XML
    Nói cách khác, đây không phải “viết một lần chạy mọi nơi”, mà là triển khai trải nghiệm Android native bằng Swift

  • Tôi muốn biết cách xử lý HTTP request và parse JSON theo phong cách idiomatic trong Swift