38 คะแนน โดย xguru 2025-03-12 | 7 ความคิดเห็น | แชร์ทาง WhatsApp

แนะนำสภาพแวดล้อมการพัฒนาแอป Android ตามมาตรฐานปัจจุบัน

  • การบิลด์: gradle
  • การตั้งค่าการบิลด์: convention plugin
  • การจัดการ dependency: version catalog
  • นำ build cache มาใช้
  • การวิเคราะห์ประสิทธิภาพการบิลด์: build-scan
  • การจัดโครงสร้างโมดูล: แยกตามแต่ละ feature
  • เครือข่าย - retrofit
  • การแมป json - kotlinx serialization
  • การจัดเก็บข้อมูลแบบถาวร - jetpack datastore, room
  • DI - koin
  • ตัวโหลดรูปภาพ - coil
  • UI - compose
  • การสื่อสารระหว่าง View และ ViewModel - flow
  • การจัดการคุณภาพโค้ด - ktlint , konsist
  • การทดสอบหน่วย - junit 4

7 ความคิดเห็น

 
kipsong133 2025-03-13

ขอบคุณสำหรับบทความดีๆ

 
ganadist 2025-03-12

ในฐานะคนที่ลงเอยมาเป็นวิศวกร build ของแอป Android แบบไม่รู้ตัว ขอลองฝากความเห็นไว้หน่อย..

> ระบบ build : gradle

ถึงจะใหญ่หรือซับซ้อนมากแค่ไหน ก็ต้องใช้ gradle อยู่ดี... (มองไกล)
มีโปรเจ็กต์ด้านล่างนี้กำลังดำเนินอยู่เพื่อปรับปรุงประสิทธิภาพการ build ของ gradle ในโปรเจ็กต์ที่ใหญ่หรือซับซ้อนมาก ดังนั้นถ้าคุณใช้ gradle กับโปรเจ็กต์ขนาดใหญ่ ก็ควรเตรียมการย้ายล่วงหน้าไว้จะดีกว่า

> โครงสร้างโมดูล : แยกตาม feature

ส่วนตัวผมมองว่าไม่มีเหตุผลจำเป็นที่จะต้องเปิดเผย architectural layer ออกมาที่ระบบ build
ในกรณีของแอปที่ผมดูแลอยู่ ผมทำให้ build system มองเห็นโมดูลเป็น feature-api / feature-impl

  • feature-app :
    • data model หรือ interface ที่เชื่อมกับโมดูลอื่น
  • feature-impl:
    • implementation จริงของ feature

ถ้าจัดแบบนี้ การเปลี่ยนโค้ดใน feature-impl จะไม่ส่งผลต่อโมดูลอื่นที่อ้างอิง feature-api (แยก dependency ออกจากกัน) จึงช่วยได้มากทั้งกับ incremental build และการเพิ่ม build cache hit rate

> unit test - junit 4

เรื่องนี้ดูเหมือนว่าการตัดสินใจของ Google จะมีบทบาทค่อนข้างมาก

 
ganadist 2025-03-12

แต่เวลาจะนำเทคโนโลยีใหม่ล่าสุด(?) มาใช้ JUnit4 ก็มักจะกลายเป็นตัวถ่วงอยู่บ่อย ๆ เลยส่วนตัวก็มีความหวังเล็ก ๆ ว่าอยากให้ย้ายไป JUnit5 กันได้แล้ว
https://docs.gradle.com/develocity/test-distribution/

ถ้าใช้ junit-vintage-engine ก็พอจะรันเทสต์ junit4 บน junit5 ได้โดยแทบไม่ต้องแก้อะไรมาก แต่โอเวอร์เฮดค่อนข้างสูงทีเดียว (ช้าลงราว ๆ 20%)

 
kingori 2025-03-12

โห เป็นเกียรติของตระกูลฮัตเลยนะ

 
gera1d 2025-03-14

ผมคือวิลสัน!

 
brainer 2025-03-12

อืม.. พูดนอกเรื่องหน่อยว่าในช่วงไม่กี่ปีที่ผ่านมา มีการพบปรากฏการณ์แปลก ๆ ที่สตาร์ตอัปส่วนใหญ่ไปทาง Flutter ขณะที่บริษัทใหญ่ ๆ อย่าง META, OpenAI กลับไปทาง native..

 
tsboard 2025-03-12

พอดีปีนี้กำลังจะลองทำแอป Android อยู่พอดี เลยเป็นแนวทางที่มีประโยชน์มากครับ 555