GN⁺: Rawdrawandroid – Java 없이 C와 Make로 안드로이드 앱 개발하기
(github.com/cnlohr)- C 코드를 Android에서 실행하고 싶은가요?
- 이 프레임워크는 약 2초 만에 APK를 생성하고 설치 및 자동 실행할 수 있으며, APK 크기는 약 25kB임
- API 30(Android R+)에서는 ARM64 + ARM32를 지원하기 위해 45kB임.
- 이 프레임워크의 데모는 다음을 포함함:
- OpenGL ES 지원 창 만들기
- 가속도계/자이로 입력, 멀티 터치
- 키 입력을 위한 Android 키보드
- APK에 애셋 파일을 저장하고
AAssetManager
로 읽기 - 사운드 사용과 같은 권한 지원
- USB 장치에 직접 접근
- 면책 조항: 이 코드는 사용자의 책임 하에 사용해야 함. 상업용 앱 제작에 문제가 있을 수 있음.
Why?
- 때로는 정상적인 방식에 맞지 않는 일을 하고 싶음
- 온라인에서의 모든 논의는 정상적인 프로세스를 사용하는 것에 집중함
- 이러한 프로세스는 변경되어 특정 작업을 수행하고 최신 상태를 유지하기 어려움
-
Makefile
을 사용하면 실행되는 명령을 정확히 확인하고 사용자 정의 규칙을 추가하며 빌드를 조정할 수 있음
- C는 보편적인 언어임
- Rawdraw는 ESP8266부터 RaspberryPi, Windows, Linux, 심지어 Android까지 모든 것에서 작동함
- 코드를 한 번 작성하면 어디서나 사용할 수 있음
- 빌드 프로세스를 콩깍지로 채우지 않으면 중요한 부분만 남게 됨
- 이는 개발, 배포 등을 용이하게 만들어 줌
- 모든 것이 훨씬 적은 시간이 소요됨
- 이는 또한 인터넷 상의 Luddite들에게 한 방 먹이는 것과도 관련이 있음
- Stack Overflow 질문에 "그것은 불가능하다" 또는 "당신은 잘못하고 있다"라고 게시하는 사람들
- JNI에서 권한을 요청하는 것은 "Java에서 해야 한다"는 등의 어리석은 것들
- 무엇이 가능하고 불가능한지에 대한 의견에 전혀 관심이 없음
- 이것은 컴퓨터 과학임. 제한이 없음. 원하는 대로 할 수 있음. 단지 비트일 뿐임. 당신은 나를 소유하지 않음
Hacker News 의견
-
"내가 원하는 건 뭐든지 할 수 있음. 그냥 비트일 뿐임. 넌 날 소유하지 않음." 공감함
-
Android 개발에서 Java와 Kotlin 생태계가 불편함. Java는 쓰기 힘든 언어이고, Kotlin은 덜 나쁘지만 빌드 도구와 패키지 관리, IDE 사용이 번거로움. 저자에게 감사함
-
Android Studio 설치가 필요해 보임. Android SDK만 다운로드할 수 있는 방법이 있는지 궁금함
- Makefile을 잠깐 봤을 때 Gradle을 피한 것 같지만, Java로 작성된 다른 도구들을 호출함
- Gradle 없이 Flutter 앱을 빌드하는 방법을 보고 싶음
-
C++/OpenGL ES 엔진을 크로스 플랫폼으로 개발했던 기억이 만족스러웠음
-
이 방법은 OpenGL을 통해 UI를 제공하고 Android 시스템과 많이 상호작용하지 않는 애플리케이션에 유용함
- NDK는 전통적인 Java Android 애플리케이션에서 속도를 높이기 위해 작은 C 코드를 작성하는 데 사용됨
- 이 해킹은 전체 화면에서 실행되는 OpenGL 앱을 순수 C로 작성할 수 있게 함
- 키보드, ADC 입력, USB와 같은 것들에 제한된 접근을 제공함
- Android 프레임워크를 C로 재구현하지 않으며, NDK는 NDK 코드가 프레임워크와 상호작용할 수 있는 제한된 접근을 제공함
- 주요 사용 사례는 크로마 추출을 기반으로 한 실시간 오디오 반응 시각화를 지원하는 프로그램임
-
XCode나 Android Studio를 사용할 때마다 웹 개발자들이 Vite 덕분에 얼마나 운이 좋은지 상기하게 됨
- 모든 것이 잘 작동함. 간단한 플러그인 시스템으로 무엇이든 통합할 수 있음
- 필요한 플러그인이 없을 때는 쉽게 커스텀 플러그인을 만들 수 있었음
- Vite가 고장 나면 완전히 망함. 다른 방법을 찾거나 패치가 나올 때까지 기다려야 함. Vite 내부를 스스로 고치는 것은 거의 불가능함
-
Elon 같은 자금이 많은 사람이 Linux를 모바일에서 작동하게 해야 함. 진행 중인 노력은 있지만 진전이 느림. 이중 독점을 깨고 이런 작업을 훨씬 쉽게 만들 것임
-
Lua를 이 시스템에 내장해 고수준 로직을 작성하면, 접근성 지원이 많이 필요하지 않은 게임이나 미디어 플레이어 같은 것에 유용할 것임
- 성능이 중요한 부분은 C 라이브러리를 쉽게 연결하거나 직접 C 코드를 작성할 수 있음
- (그런 다음 핵심을 점진적으로 Zig로 다시 작성함)
-
Java/Kotlin 도구는 모바일 개발에 최악임. 다른 훌륭한 언어와 도구들이 많은데도 여전히 이를 유지하는 이유를 모르겠음. Google이 Android 개발을 위해 Go를 네이티브 대안으로 제공하지 않은 이유를 이해할 수 없음
-
Make를 아직도 사용하는 사람들에게 놀람. 지난 20년 동안 다른 언어들이 만들어졌다는 것을 모르는 것 같음