(포스팅 2022.08.01)
본인은 안드로이드폰의 커널 개발팀에서 일했었습니다. 그때 작업했던 내용 중 일부를 공유하고자 합니다.
제가 근무한 2005회사에서는 다양한 안드로이드폰을 출시하였습니다. 폰마다 다양하게 HW스펙 및 SW기능을 가지고 있습니다. 이렇게 다양한 폰을 만드는데 소스코드 관리는 어떻게 했을까요? 제가 알고 있는 정보는 5년 이상 지난 정보이지만 공유해 보고자 합니다.
이번 포스팅은 하나의 모델에서 HW/SW가 변경되는 경우입니다. 하나의 소스코드를 가지고 대응해야 합니다.
- 주요 예제
개발 버전별로 HW 스펙이 달라지는 경우
판매처가 여러 곳이고 SW 요구사항이 다른 경우
- 필요조건
소스코드는 하나로 유지한다.
편의상 아래의 용어를 사용하겠습니다.
여러 버전의 HW/SW를 대응하는 가장 쉬운 방법은, 하나의 바이너리에 모든 기능을 넣고 필요한 코드만 활성화시키는 것입니다. 안드로이드폰의 바이너리가 부팅하면서 HW스펙과 SW요구사항을 파악하여 스스로 셋팅을 완료하는 것입니다.
원바이너리로 모든 것을 대응할 수 없다면, 필요한 경우의 수만큼 바이너리를 따로 만들어야 합니다. 원소스 환경에서 여러종류의 바이너리를 생성하려면, 빌드 명령을 입력할 때 옵션으로 필요한 요구사항을 추가하는 방식을 사용하게 됩니다.
원바이너리로 HW/SW 분리를 한다는 것은, 바이너리가 부팅하면서 보드의 정보를 파악하여 자신의 셋팅값을 바꾸는 것을 의미합니다.
하나의 바이너리에서 모든 경우에 대응하도록 소스코드를 구성하면 이상적일 것입니다. 그러나 사용자 공간을 가능한 넓게 확보하려면 바이너리의 크기가 작을 수록 좋으므로, 꼭 필요한 기능들만 바이너리에 포함시키게 됩니다.
원소스에서 여러가지 종류의 바이너리를 빌드하려면, 빌드 시작시에 설정값을 넣어주어야 합니다. 이런 설정작업을 GUI 또는 전용 툴을 이용하면 편리하겠습니다만, 필요시 빌드를 자동화해야 하는 등 여러 조건을 충족시며야 하므로 별도의 도구를 사용하긴 어렵습니다. 대부분 빌드 명령에 옵션을 주는 방식으로 이루어집니다.
빌드명령의 옵션에 따라 바이너리 빌드시 다음의 일들이 일어납니다.
안드로이드 폰을 사용하시거나 앱을 개발하시는 분은 많지만, 안드로이드 소스코드를 빌드하시는 분은 많지 않을 것 같습니다.
제가 그동안 배우고 익혀온 내용을 풀어보려 해도, 어느 정도 깊이를 주어야 할 지 잘 모르겠네요.
추가 내용을 원하시는 분은, 질문글을 달아주시면 포스팅을 하겠습니다.
언제나 감사드립니다.
fastboot 프로그래밍 (0) | 2022.08.19 |
---|---|
fastboot로 다운로드 후 리커버리 모드로 진입 (0) | 2022.08.01 |
안드로이드폰 진동/무음모드 제거 (0) | 2022.07.25 |
드라이버 칩 긴급변경시 SW 작업 (0) | 2022.04.21 |
갤럭시 S7 안드로이드 오토 만들기 작업 (0) | 2022.04.08 |
댓글 영역