Android의 하위 계층을 학습하고 발전하는 방법을 아는 것에 대해
3년 동안 안드로이드 SDK 개발을 했는데 너무 지쳐서 더 이상 진행할 수 없다는 생각이 들어서 1년 넘게 시간을 보내면서 감이 잡혔을 것 같아요. 전임자들의 경험에 따르면 안드로이드의 하위 계층을 완전히 시작하는 데 2년이 걸렸습니다.
먼저 진입 과정에 대해 이야기하겠습니다.
0단계, 소스 코드를 다운로드합니다. 4.2를 다운로드했는데 프레임워크 레이어 소스 코드는 10G이고 커널은 2G 이상입니다. ctags는 프레임워크 레이어용으로 구축되었습니다. 태그 파일이 모두 600M이어서 당시에는 충격을 받았습니다. vim+ctags+cscope를 사용하여 읽었는데, 꽤 훌륭했고 구조도 매우 명확했습니다.
첫 번째 단계로 Android 프레임워크 계층의 시작, 초기화, 서비스 프레임워크 초기화, 바인더, 메시지 루프, PackageManagerService, ActivityManagerService에 대해 설명하는 좋은 책 "안드로이드 설계 및 구현 1권"을 찾았습니다. 저자에 따르면 UI 하위 시스템에 대한 두 번째 볼륨이 나중에 출시될 예정이므로 계속 지켜봐 주시기 바랍니다. 사실 이 책을 수십 페이지 읽은 후 두 번째 단계에 대한 지식이 필요하다는 것을 깨달았습니다. 그렇지 않으면 읽을 수 없기 때문에 두 번째 단계로 건너뛰었습니다.
두 번째 단계는 Linux 시스템 프로그래밍을 배우는 것입니다. "Android의 설계 및 구현"을 읽으면서 프레임워크 계층의 기본 부분이 모두 Linux 프로그래밍이라는 것을 알았습니다. 이 부분의 지식을 익히기 위해 1,000페이지가 넘는 책인 "Linux 시스템 프로그래밍 매뉴얼"(TLPI)을 4개월 동안 공부했습니다. 예전에 WIndows 파일 시스템 작업을 해본 적이 있어서 상대적으로 Linux 시스템 프로그래밍 매뉴얼에 익숙합니다. C 언어 TLPI 연습은 매우 흥미롭고 그 양이 비교적 많습니다. 꾸준히 하면 많은 것을 얻을 수 있습니다.
세 번째 단계는 LKD와 PLKA의 절반 이상을 시청하면서 4개월 동안 Linux 커널에 대한 지식을 배우는 것이었습니다. 배울수록 아는 것이 적어지고, 점점 이해가 되지 않는 것 같은 느낌이 듭니다. 하지만 이건 그냥 천천히 갈고 닦으면 될 것 같아요.
네 번째 단계는 안드로이드 소스 코드를 다시 보는 것입니다. 이번에는 "안드로이드 설계 및 구현 제1권"을 단번에 읽고 마침내 프레임워크 레이어를 파악했습니다. 동시에 정말 여러 번 어지러움을 느꼈습니다. 이전에 Linux 커널 소스 코드를 볼 때 그렇게 어지러움증이 없었습니다. Java 레이어와 Native 레이어 사이를 끊임없이 이동하는 것은 약간 두뇌 소모적이었습니다. 그 중 자바의 기초가 그다지 탄탄하지 않다는 느낌이 들어서 다시 돌아가서 한 달 동안 『Core Java』 8판을 보충했습니다. 그런데 이 책에서는 UI 하위 시스템을 다루지 않아서 "안드로이드 커널 분석"을 읽었습니다.
다섯 번째 단계는 "안드로이드 커널 분석"입니다(이 책은 실제로 프레임워크 계층에 대해 이야기하고 있으며 저자도 연구원) 임베디드라서 프레임워크 레이어를 작성할 때 글이 별로 좋지도 않고 장황하기도 했지만, 나중에 ROM을 작성하고 개발보드를 가지고 놀 때 직업에 대해 이야기를 했을 수도 있고, 갑자기 이 책에 있는 지식이 좀 낡았다는 걸 알 수 있어요. value.) 이 책에서는 UI 하위 시스템과 키/터치 메시지 처리에 대해 설명합니다. 시스템은 여전히 매우 중요합니다. 특히 13장의 뷰 드로잉은 소스 코드 연구와 결합할 때 매우 유익합니다. 나중에 그는 매우 귀중한 정보인 컴파일 프레임워크와 ROM 관련 사항에 대해 이야기했습니다.
여섯 번째 단계에서는 전원 관리 모듈 등 다른 하위 시스템에 대한 지식을 보충하기 위해 "안드로이드 심층 이해" 시리즈를 읽었습니다. 개인적으로 이 시리즈가 좀 불편해 보인다고 생각합니다. 보충 확인으로서 여전히 꽤 가치가 있습니다.
7단계 '안드로이드 시스템 소스코드 시나리오 분석'은 뤄성양의 소스코드 분석 걸작으로 '안드로이드 설계 및 구현'보다 자세하지만 모듈 수가 적다는 단점이 있다. 선택한 코드도 "Android의 설계 및 구현"보다 약간 오래되었습니다. 책을 읽은 후에는 저자의 블로그를 공부해야 합니다. 내용이 많고 분명 만족스러울 것입니다.
8번째 단계는 개발보드를 구입해서 직접 플레이해 보는 것입니다. 아직 지식을 얻을 준비가 되지 않은 것 같아서 아직 이 단계에 도달하지 못했습니다. 몇 달이 더 걸릴 수 있으며 그 후에는 6410 또는 Raspberry Pi를 출시할 준비가 될 것입니다.
마지막으로 저는 11년 전에 Windows 분야에서 일했기 때문에 Linux에 대해 잘 모릅니다. Linux에 종사해 온 사람이라면 이 책들을 읽어야 합니다. 길을 잃다. 소스 코드로 직접 이동하는 것이 올바른 방법입니다.
모바일 GIS 개발에 관심을 갖고 배웠는데, 안드로이드 프레임워크 레이어 개발자 채용 플랫폼이 꽤 경쟁이 심하고, 스마트TV도 어렵습니다. 요즘은 각종 iOS 교육으로 인해 개발을 위해 돈을 벌려는 사람들이 쇄도하고 있지만, SDK 개발에만 사용할 수 있는 단점이 있습니다. 초심자, 베테랑, 신인이 많이 있습니다. SDK 개발에만 전적으로 집중하는 것은 좋지 않다고 생각합니다. 반면, Android 측에서는 초보 초보자가 iOS에서 돈을 벌지는 못했지만 지속 가능성이 매우 좋으며 SDK-"프레임워크" 드라이버"커널에서 계속할 수 있습니다. 열심히 일한 후 점점 리눅스 개발자/임베디드 개발자가 되어가는 사람들이 많습니다. 신입, 베테랑, 신인, 전문가 모두 각자의 자리를 차지하고 있으며, 계층 구조도 매우 좋습니다.