์ด ๋ฌธ์์ ์๋ณธ์ ์ธ๋ถ ์ํค์์ ๊ฐ์ ธ์์ต๋๋ค.
1. ๊ฐ์[ํธ์ง]
Android Open Source Project(AOSP)๋ ๊ตฌ๊ธ์ด ๋ง๋ ๋ชจ๋ฐ์ผ ํ๋ซํผ์ ์คํ์์ค ์ด์ ์ฒด์ ํ๋ก์ ํธ์ด๋ค. ํํ ์๋๋ก์ด๋๊ฐ ์คํ ์์ค๋ผ๋ ๊ฑด ์ด AOSP์ ์์ค ์ฝ๋ ๊ณต๊ฐ๋ฅผ ์๊ธฐํ๋ ๊ฒ์ด๋ค.
AOSP์ ์์ค๋ ๋ชจ๋ ๊ณต๊ฐํ์ง๋ง, ํ์ปด๊ณผ MTK์ ์นฉ์ ์ ์ฒด์ BSP ๋ถ๋ถ์ ๊ณต๊ฐํ์ง ์๋๋ค. AOSP๋ ๊ตฌ๊ธ์์ ๊ฐ๋ฐํ๋ Pixel2/3/4 ์ ์์ค๋ฅผ ํ์ธํ ์ ์๊ณ , Android PDK ๋ NDK ๊ฐ๋ฐ์๋ ์ฐ๋ถํฌ ํ๊ฒฝ์ ๋น๋ํด์ ์ด๋ฏธ์ง๋ฅผ ์ค์ค๋ก ๋ง๋ค ์ ์๋ค. ์ฐ๋ถํฌ20.04์์ Android 10๋น๋
Android source๋ Q-OS ๊ธฐ์ค์ผ๋ก ๋๋ต 100GB ์ ๋์ ํฌ๊ธฐ์ด๊ณ , /.repo #๊ฐ 47GB๋ก ๊ฑฐ์ 50% ์ฉ๋์ ์ฐจ์งํ๊ณ ์๋ค. Git ์ ์ฒด๋ฅผ ๋ค์ด๋ก๋ ๋ฐ์ผ๋ฉด git log๋ฅผ ํตํด์ history ํ์ธ์ด ๊ฐ๋ฅํ์ง๋ง, ๊ตณ์ด ์ ์ฒด history๋ฅผ ํ์ธํ ํ์๊ฐ ์๋ ๊ฒฝ์ฐ git log ์ ๋ณด๋ ๋์คํฌ ๋ญ๋น์ด๋ค. ์๋ฅผ ๋ค์ด, ๊ฐ๋ฐ์๊ฐ commit์ ์ด๋ฏธ ๋ง๋ ์ํ์์ commit ์ ๋ฐ์ํ system ์ด๋ฏธ์ง๋ฅผ ๋ง๋๋ ๊ฒฝ์ฐ git log ์ ์ฒด๋ฅผ ๋ค์ด๋ก๋ ํ ํ์์ ์๋ค. ๋ํ Android source๋ Linux์ MacOS์ prebuilt tool chain ๊น์ง ํฌํจํ๊ณ ์์ด Linux์์๋ง ๋น๋ํ๋ ๊ฒฝ์ฐ Mac OS tool chain์ ์ญ์ ๊ฐ๋ฅํ๋ค.Git log์ Tool chain์ ์ญ์ ํ๋ฉด 100GB์์ 65GB๋ก ์์ค ํฌ๊ธฐ๋ฅผ ์ค์ผ ์ ์๋ค #๋ฐฉ๋ฒ
AOSP ์์ค์ ๋น๋๋ ๊ณต์์ ์ผ๋ก ๋ฆฌ๋ ์ค์ Mac OS๋ง ์ง์ํ๋ค. Windows 10์ WSL (Windows Subsystem for Linux)์์๋ 'Case in-sensitive file system not supported' ์๋ฌ ๋น๋๊ฐ ๋ถ๊ฐ๋ฅํ๋ค#.
AOSP์ ์์ค๋ ๋ชจ๋ ๊ณต๊ฐํ์ง๋ง, ํ์ปด๊ณผ MTK์ ์นฉ์ ์ ์ฒด์ BSP ๋ถ๋ถ์ ๊ณต๊ฐํ์ง ์๋๋ค. AOSP๋ ๊ตฌ๊ธ์์ ๊ฐ๋ฐํ๋ Pixel2/3/4 ์ ์์ค๋ฅผ ํ์ธํ ์ ์๊ณ , Android PDK ๋ NDK ๊ฐ๋ฐ์๋ ์ฐ๋ถํฌ ํ๊ฒฝ์ ๋น๋ํด์ ์ด๋ฏธ์ง๋ฅผ ์ค์ค๋ก ๋ง๋ค ์ ์๋ค. ์ฐ๋ถํฌ20.04์์ Android 10๋น๋
Android source๋ Q-OS ๊ธฐ์ค์ผ๋ก ๋๋ต 100GB ์ ๋์ ํฌ๊ธฐ์ด๊ณ , /.repo #๊ฐ 47GB๋ก ๊ฑฐ์ 50% ์ฉ๋์ ์ฐจ์งํ๊ณ ์๋ค. Git ์ ์ฒด๋ฅผ ๋ค์ด๋ก๋ ๋ฐ์ผ๋ฉด git log๋ฅผ ํตํด์ history ํ์ธ์ด ๊ฐ๋ฅํ์ง๋ง, ๊ตณ์ด ์ ์ฒด history๋ฅผ ํ์ธํ ํ์๊ฐ ์๋ ๊ฒฝ์ฐ git log ์ ๋ณด๋ ๋์คํฌ ๋ญ๋น์ด๋ค. ์๋ฅผ ๋ค์ด, ๊ฐ๋ฐ์๊ฐ commit์ ์ด๋ฏธ ๋ง๋ ์ํ์์ commit ์ ๋ฐ์ํ system ์ด๋ฏธ์ง๋ฅผ ๋ง๋๋ ๊ฒฝ์ฐ git log ์ ์ฒด๋ฅผ ๋ค์ด๋ก๋ ํ ํ์์ ์๋ค. ๋ํ Android source๋ Linux์ MacOS์ prebuilt tool chain ๊น์ง ํฌํจํ๊ณ ์์ด Linux์์๋ง ๋น๋ํ๋ ๊ฒฝ์ฐ Mac OS tool chain์ ์ญ์ ๊ฐ๋ฅํ๋ค.Git log์ Tool chain์ ์ญ์ ํ๋ฉด 100GB์์ 65GB๋ก ์์ค ํฌ๊ธฐ๋ฅผ ์ค์ผ ์ ์๋ค #๋ฐฉ๋ฒ
AOSP ์์ค์ ๋น๋๋ ๊ณต์์ ์ผ๋ก ๋ฆฌ๋ ์ค์ Mac OS๋ง ์ง์ํ๋ค. Windows 10์ WSL (Windows Subsystem for Linux)์์๋ 'Case in-sensitive file system not supported' ์๋ฌ ๋น๋๊ฐ ๋ถ๊ฐ๋ฅํ๋ค#.
2. ํน์ง[ํธ์ง]
์ญ์ ๋ง๊ทธ๋๋ก Android Open Source Project ์ด๋ค๋ณด๋. ์ฌ๋ฌ ๊ฐ๋ฐ์์๊ฒ๋ ์ํฅ์ ์ค๋ค. ์๋ฅผ ๋ค์ด AOSP ๊ธฐ๋ฐ์ผ๋ก ์ ์๋ LineageOS๊ฐ ์๊ณ ๊ทธ์ธ์๋ AOSP ๊ธฐ๋ฐ์ผ๋ก ์ ์๋ ์ปค์คํ
ํ์จ์ด๊ฐ ์๋์์ด ๋ง๋ค. ๋ํ ์ ์กฐ์ฌ์ ๋ถ๊ฐ๊ธฐ๋ฅ์ด ๋ค์ด๊ฐ์์ง ์์ ๊ต์ฅํ ๋น ๋ฆฟํ๊ณ ๋ถ๋๋ฝ๋ค.
2.1. ์๋๋ก์ด๋์์ ๊ด๊ณ[ํธ์ง]
์๋๋ก์ด๋์ ๊ธฐ๋ณธ์ด ๋๋ OS์ด๋ค. ํ์ง๋ง AOSP=์๋๋ก์ด๋๋ ์๋๋ค. ์๋๋ก์ด๋๋ ์์ฐํ ๊ตฌ๊ธ์ด ์ํ๊ถ ๋ฐ ์ ์๊ถ์ ๊ฐ์ง ์ด์์ฒด์ ์ด๋ฉฐ, ์๋๋ก์ด๋๋ผ๋ ์ด๋ฆ์ ๋ฌ๊ณ ์ ํ์ ์ถ์ํ๋ ค๋ฉด ๊ตฌ๊ธ์ด ์ ์ํ๋ ํ๋์จ์ด ๊ธฐ์ค ๋ฐ ์ํํธ์จ์ด ํ
์คํธ(CTS)๋ฅผ ๋ง์กฑํ๊ณ ํ๋ ์ด์คํ ์ด๋ฅผ ํฌํจํ ๊ตฌ๊ธ์ ์๋น์ค ํ๋ ์์ํฌ(GMS)๋ฅผ ํ์ฌํ ๋ค ์ต์ข
์ ์ผ๋ก ๊ตฌ๊ธ์ ์น์ธ์ ๋ฐ์์ผ ํ๋ค.[1] AOSP๋ ์๋๋ก์ด๋์์ ์ด๋ฐ ๋ฌธ์ ๊ฐ ๋๋ ๋ถ๋ถ์ ๋บ ๋ถ๋ถ์ ์๋ฏธํ๋ฉฐ, AOSP ๊ธฐ๋ฐ์ ์ด์์ฒด์ ๋ผ๊ณ ํด์ ์๋๋ก์ด๋๋ผ๋ ์ด๋ฆ์ ๋ฌ ์๋ ์๋ค.
๋จ, ๋์ ์๋ฏธ๋ก ์ ์กฐ์ฌ์ ์ปค์คํ ์ด ๋ค์ด๊ฐ์ง ์์, ์์ ์๋๋ก์ด๋๋ฅผ AOSP๋ผ๊ณ ๋ถ๋ฅด๊ธฐ๋ ํ๋ค.
AOSP์ ์์ค๊ฐ ๊ณต๊ฐ๋์ด ์๋ค์ง๋ง ๊ตฌ๊ธ์ GMS(Google Mobile Service)์ ๋ ์ ์ ์ธ ๊ธฐ๋ฅ์ ์ ์ ์ถ๊ฐํ๊ณ ์์ด์ ์ฌ์ค์ ๊ตฌ๊ธ์ ์ธ์ฆ์ ๋ฐ์ง ์์ ์๋๋ก์ด๋๋ ๋ญ๊ฐ ๋ฐ์ชฝ์ง๋ฆฌ ๋ฌผ๊ฑด์ด ๋์ด๋ฒ๋ ธ๋ค.[2] ์ด๊ฒ ๋๋ฌธ์ GMS์ ๊ธฐ๋ฅ์ ์คํ์์ค๋ก ์ฌ๊ตฌํํ๋ microG๋ผ๋ ํ๋ก์ ํธ๊ฐ ์งํ๋๊ณ ์๋ค.
๋จ, ๋์ ์๋ฏธ๋ก ์ ์กฐ์ฌ์ ์ปค์คํ ์ด ๋ค์ด๊ฐ์ง ์์, ์์ ์๋๋ก์ด๋๋ฅผ AOSP๋ผ๊ณ ๋ถ๋ฅด๊ธฐ๋ ํ๋ค.
AOSP์ ์์ค๊ฐ ๊ณต๊ฐ๋์ด ์๋ค์ง๋ง ๊ตฌ๊ธ์ GMS(Google Mobile Service)์ ๋ ์ ์ ์ธ ๊ธฐ๋ฅ์ ์ ์ ์ถ๊ฐํ๊ณ ์์ด์ ์ฌ์ค์ ๊ตฌ๊ธ์ ์ธ์ฆ์ ๋ฐ์ง ์์ ์๋๋ก์ด๋๋ ๋ญ๊ฐ ๋ฐ์ชฝ์ง๋ฆฌ ๋ฌผ๊ฑด์ด ๋์ด๋ฒ๋ ธ๋ค.[2] ์ด๊ฒ ๋๋ฌธ์ GMS์ ๊ธฐ๋ฅ์ ์คํ์์ค๋ก ์ฌ๊ตฌํํ๋ microG๋ผ๋ ํ๋ก์ ํธ๊ฐ ์งํ๋๊ณ ์๋ค.
2.2. ์ปค์คํ ํ์จ์ด์์ ๊ด๊ณ[ํธ์ง]
AOSP๋ ์ปค์คํ
ํ์จ์ด์ ๊ด๊ณ๊ฐ ๋ง๋ค. ์๋ก์ด AOSP ์์ค ์ฝ๋๊ฐ ๋์ค๋ฉด. ๊ฐ๋ฐ์๋ค์ด ์ ์์ค ์ฝ๋๋ก ๊ฐ๋ฐ์ ์์ํ๋ค. ๋ค๋ง. ๋ช๋ช ์ปค์คํ
ํ์จ์ด๋ LineageOS ๊ธฐ๋ฐ๋ ์์ด. AOSP ๊ธฐ๋ฐ์ธ LineageOS์ ์ ๋ฒ์ ์ด ๋์ค๋ฉด ๊ฐ๋ฐ์๋ค์ด ๊ทธ๊ฑธ๋ก ๊ฐ๋ฐํ๋ ๊ฒฝ์ฐ๋ ์๋ค.
์์ธํ ๋ด์ฉ์ ์ปค์คํ ํ์จ์ด/์๋๋ก์ด๋ ๋ฌธ์๋ฅผ, AOSP ๊ธฐ๋ฐ์ ์ปค์คํ ํ์จ์ด ๋ชฉ๋ก์ ์ปค์คํ ํ์จ์ด/์๋๋ก์ด๋/๋ชฉ๋ก ๋ฌธ์์ 2.1๋ฌธ๋จ์ด๋ ์๋๋ก์๋ ์ฌ์ฉ์ ์ธํฐํ์ด์ค ๋ชฉ๋ก ํ์ ์ฐธ์กฐํ๋ฉด ๋๋ค.
์์ธํ ๋ด์ฉ์ ์ปค์คํ ํ์จ์ด/์๋๋ก์ด๋ ๋ฌธ์๋ฅผ, AOSP ๊ธฐ๋ฐ์ ์ปค์คํ ํ์จ์ด ๋ชฉ๋ก์ ์ปค์คํ ํ์จ์ด/์๋๋ก์ด๋/๋ชฉ๋ก ๋ฌธ์์ 2.1๋ฌธ๋จ์ด๋ ์๋๋ก์๋ ์ฌ์ฉ์ ์ธํฐํ์ด์ค ๋ชฉ๋ก ํ์ ์ฐธ์กฐํ๋ฉด ๋๋ค.
3. ํ์ฌ๋ ๊ธฐ์ข [ํธ์ง]
๊ตฌ๊ธ ์๋น์ค ์์ด ์์ AOSP๋ง ํ์ฌํ ๋๋ฐ์ด์ค๋ B2C๋ก ํ๋งค๋์ง ์๊ฑฐ๋ ์๋ฒ ๋๋ OS์ฉ์ผ๋ก ํ์ฌ๋ ๊ธฐ๊ธฐ๊ฐ ๋๋ถ๋ถ์ด๊ธฐ ๋๋ฌธ์ ์ฌ๊ธฐ์์ AOSP๋ ๊ตฌ๊ธ ์๋น์ค๊ฐ ํ์ฌ๋์ด์๋๋ฆฌ๋ ๊ตฌ๊ธ ์์ ์๋๋ก์ด๋๊ฐ ์ ์กฐ์ฌ ์ปค์คํ
์์ด ํ์ฌ๋ ๊ธฐ๊ธฐ ๋ํ ํฌํจํ๋ค.
- ๊ตฌ๊ธ ํฝ์ ์๋ฆฌ์ฆ ๊ธฐ๊ธฐ
- ๊ตฌ๊ธ ๋ฅ์์ค ์๋ฆฌ์ฆ์ ๊ตฌ๊ธ ํ๋ ์ด ์๋์ ๊ธฐ๊ธฐ
- ์๋๋ก์ด๋ ์ ํ๋ซํผ ๋์ ๊ธฐ๊ธฐ
4. ์ ๋ฐ์ดํธ[ํธ์ง]
AOSP ์์ฒด๊ฐ ๊ธฐ๊ธฐ ์ ์กฐ์ฌ๊ฐ ์๋ ๊ตฌ๊ธ์์ ๊ด๋ฆฌ, ๋ฐฐํฌํ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ์
๋ฐ์ดํธ๊ฐ ๋งค์ฐ ์ ์ํ๋ค. ๋ง์ฝ ์๋ก์ด ๋ณด์ํจ์น๊ฐ ๋์๋ค ํ๋ฉด ๋ฉฐ์น ์์ ์๋ก์ด ๋ณด์ํจ์น๊ฐ ์ ์ฉ๋๋ ๋ง๋ฒ์ ๋ณผ ์์๋ค.
ํ์ฌ๋ ์ผ๋ฐ ์๋๋ก์ด๋์์๋(8.0 ์ด์) ์ ์กฐ์ฌ ์ปค์คํ ๊ณผ ๊ตฌ๊ธ์ ๋ฒ ์ด์ค๋ฅผ ๋ถ๋ฆฌํจ์ผ๋ก์จ ์ ๋ฐ์ดํธ๋ฅผ ์ฝ๊ฒ ํ ์ ์๋ ๊ตฌ์กฐ(Android Treble)๊ฐ ์ ์ฉ๋์ด ์๋ค.
ํ์ฌ๋ ์ผ๋ฐ ์๋๋ก์ด๋์์๋(8.0 ์ด์) ์ ์กฐ์ฌ ์ปค์คํ ๊ณผ ๊ตฌ๊ธ์ ๋ฒ ์ด์ค๋ฅผ ๋ถ๋ฆฌํจ์ผ๋ก์จ ์ ๋ฐ์ดํธ๋ฅผ ์ฝ๊ฒ ํ ์ ์๋ ๊ตฌ์กฐ(Android Treble)๊ฐ ์ ์ฉ๋์ด ์๋ค.
[1] ์์ ํ ์กฐ๊ฑด์ ๋ชจ๋ ๋ง์กฑํ๋ค๊ณ ํ๋๋ผ๋ ์ฌ์
์ ์ด์ ๋ฑ ๊ตฌ๊ธ์ ์๋์ ๋ฐ๋ผ ํ๊ฐํ์ง ์์ ์ ์์์ ๋ช
์ํ๊ณ ์๋ค.
[2] ์๋ฅผ ๋ค์ด, ํธ์ ์๋ฆผ์ ๋ฐ๋ ์ฑ์ ๋น์ฐํ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ๋์๊ฐ์ผ ํ์ง๋ง ์๋๋ก์ด๋ 8.0 ์ค๋ ์ค๋ถํฐ ๊ตฌ๊ธ์ Firebase Cloud Messaging์ ์ฐ์ง ์์ผ๋ฉด ๋ฐฑ๊ทธ๋ผ์ด๋์์ ๋์๊ฐ์ง ์๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๊ฒ์ GMS์ ๊ตฌํ๋์ด ์๋ค.