13 คะแนน โดย GN⁺ 2024-09-23 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • อยากรันโค้ด C บน Android ใช่ไหม?
  • เฟรมเวิร์กนี้สามารถสร้าง ติดตั้ง และรัน APK อัตโนมัติได้ภายในเวลาประมาณ 2 วินาที และมีขนาด APK ราว 25kB
    • บน API 30 (Android R+) จะมีขนาด 45kB เพื่อรองรับ ARM64 + ARM32
  • เดโมของเฟรมเวิร์กนี้มีสิ่งต่อไปนี้:
    • การสร้างหน้าต่างที่รองรับ OpenGL ES
    • อินพุตจาก accelerometer/gyroscope, มัลติทัช
    • คีย์บอร์ด Android สำหรับการป้อนคีย์
    • เก็บไฟล์แอสเซ็ตไว้ใน APK และอ่านด้วย AAssetManager
    • รองรับสิทธิ์การใช้งาน เช่น การใช้เสียง
    • เข้าถึงอุปกรณ์ USB ได้โดยตรง
  • ข้อสงวนสิทธิ์: โค้ดนี้ต้องใช้โดยผู้ใช้รับผิดชอบเอง อาจมีปัญหาเมื่อนำไปสร้างแอปเชิงพาณิชย์

Why?

  • บางครั้งก็อยากทำสิ่งที่ไม่เข้ากับวิธีการปกติ
    • การพูดคุยทั้งหมดบนอินเทอร์เน็ตมักโฟกัสกับการใช้กระบวนการแบบปกติ
    • กระบวนการเหล่านี้เปลี่ยนแปลงไปเรื่อย ๆ จนยากต่อการทำงานบางอย่างและรักษาให้ทันสมัย
    • การใช้ Makefile ทำให้เห็นคำสั่งที่รันได้อย่างชัดเจน เพิ่มกฎแบบกำหนดเอง และปรับแต่งการบิลด์ได้
  • C เป็นภาษาสากล
    • Rawdraw ใช้งานได้กับทุกอย่างตั้งแต่ ESP8266, RaspberryPi, Windows, Linux ไปจนถึง Android
    • เขียนโค้ดครั้งเดียวแล้วใช้ได้ทุกที่
  • ถ้าไม่ยัดเยียดส่วนครอบทับให้กระบวนการบิลด์ ก็จะเหลือแต่ส่วนที่สำคัญ
    • สิ่งนี้ช่วยให้การพัฒนา การดีพลอย และอื่น ๆ ง่ายขึ้น
    • ทุกอย่างใช้เวลาน้อยลงมาก
  • นี่ยังเกี่ยวข้องกับการสวนกลับพวก Luddite บนอินเทอร์เน็ตด้วย
    • คนที่ไปตอบคำถามบน Stack Overflow ว่า "มันเป็นไปไม่ได้" หรือ "คุณกำลังทำผิด"
    • เรื่องไร้สาระอย่างการบอกว่าการขอสิทธิ์จาก JNI "ต้องทำใน Java"
    • ไม่สนใจความคิดเห็นเลยว่าอะไรทำได้หรือทำไม่ได้
    • นี่คือวิทยาการคอมพิวเตอร์ ไม่มีข้อจำกัด คุณทำอะไรก็ได้ตามต้องการ มันก็เป็นแค่บิต คุณไม่ได้เป็นเจ้าของฉัน

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

 
GN⁺ 2024-09-23
ความคิดเห็นบน Hacker News
  • "ฉันทำอะไรก็ได้ตามที่ต้องการ มันก็เป็นแค่บิตเท่านั้นเอง แกไม่ได้เป็นเจ้าของฉัน" เห็นด้วย

  • ecosystem ของ Java และ Kotlin ในการพัฒนา Android นั้นใช้งานไม่สะดวก Java เป็นภาษาที่เขียนยาก ส่วน Kotlin แย่น้อยกว่าแต่ก็ยังยุ่งยากทั้งเรื่อง build tools, package management และการใช้ IDE ขอบคุณผู้เขียน

  • ดูเหมือนว่ายังต้องติดตั้ง Android Studio อยู่ สงสัยว่ามีวิธีดาวน์โหลดแค่ Android SDK หรือไม่

    • พอดู Makefile ผ่าน ๆ เหมือนว่าจะหลีกเลี่ยง Gradle ได้ แต่ก็ยังเรียกใช้เครื่องมืออื่นที่เขียนด้วย Java
    • อยากเห็นวิธี build แอป Flutter โดยไม่ใช้ Gradle
  • จำได้ว่าการพัฒนาเอนจิน C++/OpenGL ES แบบข้ามแพลตฟอร์มนั้นเป็นประสบการณ์ที่น่าพอใจ

  • วิธีนี้มีประโยชน์กับแอปพลิเคชันที่ให้ UI ผ่าน OpenGL และไม่ได้โต้ตอบกับระบบ Android มากนัก

    • โดยปกติ NDK ใช้สำหรับเขียนโค้ด C ขนาดเล็กเพื่อเพิ่มความเร็วให้แอป Android แบบ Java ดั้งเดิม
    • แฮ็กนี้ทำให้สามารถเขียนแอป OpenGL แบบเต็มหน้าจอด้วย C ล้วนได้
    • ให้การเข้าถึงแบบจำกัดกับสิ่งต่าง ๆ เช่น คีย์บอร์ด, อินพุต ADC และ USB
    • ไม่ได้เป็นการ reimplement Android framework ด้วย C และ NDK ก็ให้การเข้าถึงแบบจำกัดเพื่อให้โค้ด NDK โต้ตอบกับ framework ได้
    • use case หลักคือโปรแกรมที่รองรับภาพแสดงผลตอบสนองต่อเสียงแบบเรียลไทม์โดยอิงจากการแยก chroma
  • ทุกครั้งที่ใช้ XCode หรือ Android Studio ก็จะนึกขึ้นได้ว่านักพัฒนาเว็บโชคดีแค่ไหนที่มี Vite

    • ทุกอย่างทำงานได้ดี และสามารถรวมอะไรก็ได้เข้าด้วยกันผ่านระบบปลั๊กอินที่เรียบง่าย
    • ตอนที่ไม่มีปลั๊กอินที่ต้องการ ก็สามารถสร้างปลั๊กอินแบบกำหนดเองได้อย่างง่ายดาย
    • ถ้า Vite พัง ก็พังคือพังเลย ต้องหาวิธีอื่นหรือรอแพตช์ออกมา การแก้ภายในของ Vite ด้วยตัวเองแทบเป็นไปไม่ได้
  • คนที่มีเงินทุนมากแบบ Elon ควรทำให้ Linux ใช้งานบนมือถือได้ ตอนนี้มีความพยายามอยู่บ้างแต่คืบหน้าช้า มันจะช่วยทำลายภาวะ duopoly และทำให้งานแบบนี้ง่ายขึ้นมาก

  • ถ้าฝัง Lua เข้าไปในระบบนี้เพื่อเขียน logic ระดับสูง ก็น่าจะมีประโยชน์กับเกมหรือมีเดียเพลเยอร์ที่ไม่ต้องการการรองรับ accessibility มากนัก

    • ในส่วนที่ประสิทธิภาพสำคัญ ก็สามารถเชื่อมต่อ C libraries ได้ง่ายหรือเขียนโค้ด C เองโดยตรง
    • (แล้วค่อย ๆ เขียนส่วนแกนใหม่ด้วย Zig แบบค่อยเป็นค่อยไป)
  • เครื่องมือ Java/Kotlin แย่มากสำหรับการพัฒนามือถือ ทั้งที่มีภาษาและเครื่องมือดี ๆ อื่นอีกมาก แต่ก็ยังไม่เข้าใจว่าทำไมยังยึดติดกับสิ่งนี้ และไม่เข้าใจว่าทำไม Google ถึงไม่เสนอ Go เป็นทางเลือกแบบเนทีฟสำหรับการพัฒนา Android

  • แปลกใจที่ยังมีคนใช้ Make อยู่ ดูเหมือนพวกเขาจะไม่รู้ว่าตลอด 20 ปีที่ผ่านมาได้มีภาษาอื่น ๆ ถูกสร้างขึ้นมาแล้ว