안녕하세요. 그냥 생존 신고만 하고 있습니다.
요즘 심심해서, 그리고 상사의 권유로 인해 안드로이드 앱 개발을 독학으로 공부하고 있습니다.
이유는 제가 다니는 회사는 오버홀 정비도 하지만 납품/정비하는 장비가 매우 구식(ISA 규격이나 PCI 규격을 씁니다.)입니다. 근데 또 이게 미래에서 계속 쓴다는 보장이 없죠. 남아있는 물건도 얼마 안되서 지금 구하려면 매우 비싸기도 합니다.
그래서 부장님이 "나중엔 스마트폰 같은 소형 장비를 토대로 만들어진 솔루션이 대세가 되지 않겠어?" 라는 이유로 여러 툴(근데 HDL같은 거라서 밀접한 관계는 없습니다.)을 다뤄 본 경험이 있는 저에게 권유를 합니다.
그래서 뚝딱뚝딱 예제를 참고해가면서 수련합니다. 요즘은 책이나 교수나 강의보다 구글과 스택오버플로우가 훨신 더 잘 가르쳐줍니다. 역시 볼때마다 "너가 생각한 것들은 양놈이 먼저 했다 작은 성기들아" 라고 생각하게 만듭니다.
하지만 아무리 생각해봐도 납득이 안되는게, 얘들은 뭐만 하면 API를 뒤집어 엎고 단종시킵니다.
2018년으로 돌아가면서 AndroidX라는 통합 패키지를 제공하면서 완전한 하위 호환성을 광고했지만... 사실 개소리고 그냥 왠만한 것들이 다 단종(Deprecated)됩니다. 게다가 이건 지금도 현재 진행형입니다.
그래서 그 동안에 멀쩡하게 잘 쓸 수 있는 함수와 Manifest 설정들을 이후 SDK에서 다 씹어먹어버리는데 이걸 빌드와 디버그 단계에서 알려주질 않아요. 그러니까 API 단계를 낮춰서 빌드를 하면 잘 되는데 최신 API 단계에서 빌드를 하면 응 엿먹어ㅎ 라고 비웃듯이 앱이 죽습니다. 앞서 말했지만 왜 죽는지도 안 알려줘요.
예를 들면 UVC를 이용하기 위한 USB 권한 설정에서 뭐 말도 안하고 Access Denied를 해버리는데 컴파일 수준에서 경고도 안해줘요. 이걸 알아내기까지 수천줄의 코드를 디버그 포인트를 다 찝어가지고 알아냈습니다. 차라리 VHDL은 썼을때 최소한 얘들은 문제를 알려주진 않을지언정 빌드는 안했다.
그럼 하위 호환성 문제가 발생할 때마다 API 단계를 낮춰서 빌드하면 되지 않느냐? 그럼 앱스토어에 못 올립니다.
https://android-developers.googleblog.com/2019/02/expanding-target-api-level-requirements.html
이젠 구시대의 유물이 되어버린 여럿 기능과 매서드들이 언제 목숨이 끝날지도 모르는 상황에서, 최신 것만 쓰라고 강요하고, 거기서 정작 필요한 기능들은 지들 맘대로 칼질을 해버리는데 뭐 어쩌라는건지 모르겠습니다. 나보다 똑똑하니 다들 생각이 있어서 그렇게 개발했겠죠. 그래 지들 말대로 봄맞이 대청소 좋다 이겁니다. 근데 좀 제대로 했으면 좋겠네요.