๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๋นˆ ๊ตฌ๋ฉ ์ฑ„์šฐ๊ธฐ

[Android] ์•ˆ๋“œ๋กœ์ด๋“œ ๊ด€๋ จ ์งˆ๋ฌธ 1 - ์•ˆ๋“œ๋กœ์ด๋“œ ๊ธฐ์ดˆ

https://yamanf.medium.com/cracking-the-android-code-interview-android-basics-5739efe98431

 

 

Cracking the Android Code Interview #1 : Android Basics

In this article series, we will together answer Android interview questions from beginner to advanced levels. Join me in this learning…

yamanf.medium.com

 

 

1. ์•ˆ๋“œ๋กœ์ด๋“œ์˜ ๊ธฐ๋ณธ ๊ฐœ๋…์€ ๋ฌด์—‡์ธ๊ฐ€?

์˜คํ”ˆ ์†Œ์Šค์—, ๋ฆฌ๋ˆ…์Šค๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ์šด์˜์ฒด์ œ๋กœ ์Šค๋งˆํŠธํฐ๊ณผ ํƒœ๋ธ”๋ฆฟ๊ณผ ๊ฐ™์€ ํ„ฐ์น˜์Šคํฌ๋ฆฐ ๋ชจ๋ฐ”์ผ ์žฅ์น˜๋ฅผ ์œ„ํ•ด ์„ค๊ณ„๋˜์—ˆ๋‹ค. 

๊ฐœ๋ฐœ์ž๋“ค์—๊ฒŒ๋Š” ํ˜์‹ ์  ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ๋“ค์„ ๊ฐœ๋ฐœํ•˜๋Š” ํ”Œ๋žซํผ์„ ์ œ๊ณตํ•˜๊ณ  ์‚ฌ์šฉ์ž๋“ค์—๊ฒŒ๋Š” ํ’๋ถ€ํ•œ ์•ฑ๊ณผ ์„œ๋น„์Šค ์ƒํƒœ๊ณ„๋ฅผ ์ œ๊ณตํ•œ๋‹ค.

 

2. ์•ˆ๋“œ๋กœ์ด๋“œ์˜ ์•„ํ‚คํ…์ฒ˜

๋ฆฌ๋ˆ…์Šค ์ปค๋„, ๋„ค์ดํ‹ฐ๋ธŒ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค, ์•ˆ๋“œ๋กœ์ด๋“œ ๋Ÿฐํƒ€์ด, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋ ˆ์ž„์›Œํฌ, ์ด 4๊ฐ€์ง€ ์ฃผ์š” ๊ตฌ์„ฑ ์š”์†Œ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค.

๋ฆฌ๋ˆ…์ˆ˜ ์ปค๋„ : ํ•ต์‹ฌ ์‹œ์Šคํ…œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค.

๋„ค์ดํ‹ฐ๋ธŒ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค : ์ €์ˆ˜์ค€ ๊ธฐ๋Šฅ๋“ค์„ ์ œ๊ณตํ•œ๋‹ค.

์•ˆ๋“œ๋กœ์ด๋“œ ๋Ÿฐํƒ€์ž„ : ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ๊ด€๋ฆฌํ•œ๋‹ค.

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋ ˆ์ž„์›Œํฌ : ๊ณ ์ˆ˜์ค€ ์„œ๋น„์Šค(์•กํ‹ฐ๋น„ํ‹ฐ ๊ด€๋ฆฌ, ๋ฆฌ์†Œ์Šค ์ฒ˜๋ฆฌ ๋“ฑ)๋ฅผ ์ œ๊ณตํ•œ๋‹ค.

 

3. ์•ˆ๋“œ๋กœ์ด๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์„ฑํ•˜๋Š” ์š”์†Œ๋“ค

์•ˆ๋“œ๋กœ์ด๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์•กํ‹ฐ๋น„ํ‹ฐ, ์„œ๋น„์Šค, ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ ๋ฆฌ์‹œ๋ฒ„, ์ฝ˜ํ…ํŠธ ํ”„๋กœ๋ฐ”์ด๋”๋กœ ๊ตฌ์„ฑ๋œ๋‹ค. 

์•กํ‹ฐ๋น„ํ‹ฐ : ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ฐœ๋ณ„์ ์ธ ํ™”๋ฉด์„ ์ œ๊ณตํ•œ๋‹ค.

์„œ๋น„์Šค : ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ž‘์—…์„ ์‹คํ–‰ํ•œ๋‹ค.

๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ ๋ฆฌ์‹œ๋ฒ„ : ์‹œ์Šคํ…œ ์ „์ฒด์˜ ์ด๋ฒคํŠธ์— ๋ฐ˜์‘ํ•œ๋‹ค.

์ฝ˜ํ…ํŠธ ํ”„๋กœ๋ฐ”์ด๋” : ๊ณต์œ  ๋ฐ์ดํ„ฐ๋“ค์„ ๊ด€๋ฆฌํ•œ๋‹ค.

 

4. ์•กํ‹ฐ๋น„ํ‹ฐ์™€ ํ”„๋ž˜๊ทธ๋จผํŠธ์˜ ์ฐจ์ด

์•กํ‹ฐ๋น„ํ‹ฐ๋Š” ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ฐ€์ง€๋Š” ๊ฐœ๋ณ„ ํ™”๋ฉด์„ ๋‚˜ํƒ€๋‚ด๊ณ , ํ”„๋ž˜๊ทธ๋จผํŠธ๋Š” ์•กํ‹ฐ๋น„ํ‹ฐ ์•ˆ์—์„œ ๋ชจ๋“ˆ์‹์ด๊ณ  ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ตฌ์„ฑ์š”์†Œ์ด๋‹ค. ํ”„๋ž˜๊ทธ๋จผํŠธ๋Š” ์œ ์—ฐํ•œ UI ๋””์ž์ธ, ์•ฑ ๋ ˆ์ด์•„์›ƒ์˜ ๋” ๋‚˜์€ ๊ตฌ์„ฑ๊ณผ ๊ด€๋ฆฌ๋ฅผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•œ๋‹ค.

 

 5. AndroidManifest.xml ํŒŒ์ผ์˜ ์šฉ๋„๋Š” ๋ฌด์—‡์ธ๊ฐ€

AndroidManifest.xml  ํŒŒ์ผ์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ๊ด€๋ จ๋œ ํ•„์ˆ˜ ์ •๋ณด๋“ค์„ ๋‹ด๊ณ  ์žˆ๋‹ค. ํ•„์ˆ˜ ์ •๋ณด๋“ค๋กœ๋Š” ํŒจํ‚ค์ง€ ์ด๋ฆ„, ๋ฒ„์ „, ๊ถŒํ•œ, ์•กํ‹ฐ๋น„ํ‹ฐ๋“ค์ด ์žˆ๋‹ค. ์ด๊ฒƒ์€ ์•ˆ๋“œ๋กœ์ด๋“œ ์‹œ์Šคํ…œ์ด ๋Ÿฐํƒ€์ž„ ๋™์•ˆ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ตฌ์กฐ์™€ ๋™์ž‘์„ ์ดํ•ดํ•˜๋Š” ๋ฐ ์ฒญ์‹œ์ง„์œผ๋กœ์„œ์˜ ์—ญํ• ์„ ํ•œ๋‹ค. 

 

6. Android ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ƒ๋ช…์ฃผ๊ธฐ

Android ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ƒ๋ช…์ฃผ๊ธฐ๋Š” ์—ฌ๋Ÿฌ ๋‹จ๊ณ„๋“ค๊ณ  ๊ตฌ์„ฑ๋œ๋‹ค.

onCreate(), onStart(), onResume(), onPause(), onStop(), onDestroy()๋กœ ๊ตฌ์„ฑ๋œ๋‹ค.

์ด ์ƒ๋ช…์ฃผ๊ธฐ๋ฅผ ์ดํ•ดํ•˜๋Š” ๊ฑด ๋ฆฌ์†Œ์Šค๋“ค์„ ํšจ๊ณผ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ณ , ์„ค์ •(๊ตฌ์„ฑ/configuration) ๋ณ€๊ฒฝ์„ ์ฒ˜๋ฆฌํ•˜๊ณ , ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ƒํƒœ ์œ ์ง€์— ์ค‘์š”ํ•˜๋‹ค. 

 

7. Android์—์„œ R.layout, R.id์™€ ์•ˆ์—์„œ์˜ R

์•ˆ๋“œ๋กœ์ด๋“œ ๊ฐœ๋ฐœ์—์„œ 'R'์€ ์ž๋™์œผ๋กœ ์ƒ์„ฑ๋˜๋Š” ์ž๋ฐ” ํด๋ž˜์Šค๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. ์ด ํด๋ž˜์Šค๋Š” ๋ ˆ์ด์•„์›ƒ, ๋ฌธ์ž์—ด, ๋“œ๋กœ์–ด๋ธ” ์ด๋ฏธ์ง€๋“ค๊ณผ ๊ฐ™์€ ๋ฆฌ์†Œ์Šค๋“ค์˜ ์ฐธ์กฐ๋ฅผ ๋‹ด๊ณ  ์žˆ๋‹ค. R์€ ๋ฆฌ์†Œ์Šค ๊ด€๋ฆฌ๋ฅผ ๋‹จ์ˆœํ™”์‹œํ‚ค๊ณ , ๊ฐœ๋ฐœ์ž๋“ค์ด ๊ณ ์œ ํ•œ ์‹๋ณ„์ž๋“ค์„ ์ด์šฉํ•ด ํ”„๋กœ๊ทธ๋ž˜๋ฐ๋ฐฉ์‹์œผ๋กœ ๋ฆฌ์†Œ์Šค๋“ค์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.

 

8. setContentView() ๋ฉ”์†Œ๋“œ์˜ ์—ญํ• 

setContentView()๋Š” ์•กํ‹ฐ๋น„ํ‹ฐ์—์„œ ๋ ˆ์ด์•„์›ƒ์„ ์„ธํŒ…ํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋˜๊ณ , ํ™”๋ฉด ์•ˆ์—์„œ ๋ณด์—ฌ์ง€๋Š” UI ์š”์†Œ๋“œ์„ ์ •์˜ํ•˜๋Š”๋ฐ ์“ฐ์ธ๋‹ค. XML ๋ ˆ์ด์•„์›ƒ ํŒŒ์ผ์„ ์ธํ”Œ๋ ˆ์ดํŠธํ•˜๊ณ  ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค์˜ ์‹œ๊ฐ์  ๊ณ„์ธต๊ตฌ์กฐ๋ฅผ ๋งŒ๋“ค์–ด ์‚ฌ์šฉ์ž์™€์˜ ์ธํ„ฐ๋ ‰์…˜์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•œ๋‹ค. 

 

9. ๋‹ค์–‘ํ•œ ํ™”๋ฉด ํฌ๊ธฐ ๊ด€๋ฆฌ ์ „๋žต

Android์—์„œ ๋‹ค์–‘ํ•œ ํ™”๋ฉด ํฌ๊ธฐ ๊ด€๋ฆฌ ์ „๋žต์œผ๋กœ๋Š”  ๋ฐ˜์‘ํ˜• ๋ ˆ์ด์•„์›ƒ ๋””์ž์ธ, constraint layout, ๋ฆฌ์†Œ์Šค ํ•œ์ •์ž(qulifier, ์˜ˆ : mdpi, hdpi, xhdpi) ์‚ฌ์šฉ ๋“ฑ์ด ์žˆ๋‹ค. ๋ ˆ์ด์•„์›ƒ์„ ์ตœ์ ํ™”ํ•˜๊ณ  density-independent pixels(dp)๋ฅผ ์‚ฌ์šฉํ•ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋‹ค์–‘ํ•œ ํ™”๋ฉด ํฌ๊ธฐ์™€ ํ•ด์ƒ๋„์— ์›ํ™œํžˆ ๋Œ€์‘ํ•  ์ˆ˜ ์žˆ๋‹ค.