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

๐Ÿ’ป Extracurricular/์ฝ”๋ฎค๋‹ˆํ‹ฐ ๋ชจ๊ฐ์ฝ”

(17)
๋ชจ๊ฐ์ฝ” < Kotlin ๊ธฐ์ดˆํŽธ > - 8์ผ์ฐจ โœ… ์ฝ”ํ‹€๋ฆฐ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋ฌธ๋ฒ• ๋ฐฐ์šฐ๊ธฐ โšก ์ฝ”ํ‹€๋ฆฐ์—์„œ ํ•จ์ˆ˜ ์‚ฌ์šฉํ•˜๊ธฐ ํ•จ์ˆ˜๋ž€? ํŠน์ • ์ž…๋ ฅ ๊ฐ’์— ๋Œ€ํ•œ ๊ฒฐ๊ณผ ๊ฐ’์„ ๋ฐ˜ํ™˜ ์ฝ”ํ‹€๋ฆฐ์—์„œ์˜ ํ•จ์ˆ˜๋Š” ์•„๋ž˜์˜ ํ˜•ํƒœ๋กœ ์‚ฌ์šฉ fun ํ•จ์ˆ˜์ด๋ฆ„(์ž…๋ ฅ๊ฐ’) { ํ•จ์ˆ˜ ๋‚ด์šฉ return ๋ฐ˜ํ™˜๊ฐ’ } return ์ด ๋ฐ˜ํ™˜ํ•œ๋‹ค๋Š” ๋œป! โšก ์ฝ”ํ‹€๋ฆฐ์—์„œ ์กฐ๊ฑด๋ฌธ ์‚ฌ์šฉํ•˜๊ธฐ ์กฐ๊ฑด๋ฌธ์ด๋ž€? ํŠน์ • ์กฐ๊ฑด์ผ ๋•Œ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋˜๋„๋ก ์„ค์ •ํ•˜๋Š” ๊ฒƒ if(์กฐ๊ฑด๋ฌธ){ } ์กฐ๊ฑด๋ฌธ์ด ์ฐธ์ด๋ผ๋ฉด ํ•ด๋‹น {} ์•ˆ์˜ ๋ช…๋ น์„ ์‹คํ–‰! if ( n ์กฐ๊ฑด๋ฌธ์„ ์ด์šฉํ•˜์—ฌ ํ•ด๊ฒฐ โšก ์ˆซ์ž๊ฐ€ ๊ฒน์น  ์ˆ˜ ์žˆ์Œ ๋กœ๋˜ ๋ฒˆํ˜ธ๋Š” ๋ชจ๋‘ ๋‹ค๋ฅธ ์ˆซ์ž์ด๊ธฐ ๋•Œ๋ฌธ์— ์ˆซ์ž๊ฐ€ ๊ฒน์น˜๋ฉด ์•ˆ๋จ => ๋ฐฐ์—ด๊ณผ ๋ฐ˜๋ณต๋ฌธ์„ ํ†ตํ•ด ํ•ด๊ฒฐ โœ… ์˜ค๋Š˜์˜ ๋ฌธ์ œ : ๋กœ๋˜๋ฒˆํ˜ธ์ถ”์ฒจ์•ฑ ๊ธฐ๋Šฅ ์™„์„ฑํ•˜๊ธฐ ์šฐ์ธก ํ•˜๋‹จ์˜ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅผ ๋•Œ๋งˆ๋‹ค ๋žœ๋คํ•œ(๊ฒน์น˜์ง€ ์•Š๋Š”) ์ˆซ์ž 6๊ฐœ๊ฐ€ ํ‘œ์‹œ๋˜๊ณ , ํ•ด๋‹น ์ˆซ์ž์— ๋งž๋Š” ๋ฐฐ๊ฒฝ์ƒ‰์œผ๋กœ ๋ฐ”๋€Œ๋„๋ก..
๋ชจ๊ฐ์ฝ” < Kotlin ๊ธฐ์ดˆํŽธ > - 7์ผ์ฐจ โœ… ๋ฒ„ํŠผ์ด ๋ˆŒ๋ ธ๋Š”์ง€ ๊ฐ์ง€ํ•˜๊ธฐ - ๋กœ๊ทธ๋กœ ํ™•์ธํ•˜๊ธฐ ๋ฒ„ํŠผ์˜ id ์„ค์ • id๋Š” ํ”„๋กœ์ ํŠธ ์•ˆ์—์„œ ๊ณ ์œ (unique)ํ•ด์•ผ ํ•จ! ๋ฒ„ํŠผ์˜ id๊ฐ€ runButton ์ด๋ผ๊ณ  ๊ฐ€์ • class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) findViewById(R.id.runButton).setOnClickListener { Log.d("๋กœ๋˜์•ฑ", "๋ฒ„ํŠผ ๋ˆ„๋ฆ„") } } } ์œ„์˜ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ์ด 4๊ฐ€์ง€ import๊ฐ€ ํ•„์š”ํ•จ! import androidx.appcompat..
๋ชจ๊ฐ์ฝ” < Kotlin ๊ธฐ์ดˆํŽธ > - 6์ผ์ฐจ โœ… ๋ ˆ์ด์•„์›ƒ ์ถ”๊ฐ€ํ•˜๊ธฐ โšกPalette ์ฐฝ Layouts ํด๋ฆญ LinearLayout(vertical) ๋“œ๋ž˜๊ทธ -> ํ™”๋ฉด์— ๋Œ์–ด๋‹ค ๋†“์Œ โšก Linear Layout์˜ constraint ์ถ”๊ฐ€ ์ƒ, ํ•˜, ์ขŒ, ์šฐ ์—ฌ๋ฐฑ 0์œผ๋กœ ๋ฐ”๊พธ๊ธฐ (=> ์ด ๋ถ€๋ถ„์—์„œ ์ž˜ ์•ˆ๋ผ์„œ xml์ฝ”๋“œ๋ฅผ ํ†ตํ•ด ์ง์ ‘ ์ˆ˜์ •ํ•จ ใ… ใ… ) โœ… ๋ฒ„ํŠผ ์ถ”๊ฐ€ํ•˜๊ธฐ โšก Linear Layout ์•ˆ์— ๋ฒ„ํŠผ ์ถ”๊ฐ€ Palette > Common ํด๋ฆญ Common > Button ํด๋ฆญ Button์„ ๋“œ๋ž˜๊ทธํ•˜์—ฌ Component Tree > Linear Layout์— ์ถ”๊ฐ€ โšก ๋ฒ„ํŠผ์˜ ์†์„ฑ ์ˆ˜์ • id๋ฅผ buttonNum1๋กœ ์ˆ˜์ • ์ˆ˜์ • ํ›„ ๋‹ค๋ฅธ ๊ณณ์„ ํด๋ฆญํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ์ฐฝ์ด ๋œธ (์ด๋•Œ Refactor ๋ฒ„ํŠผ ํด๋ฆญ) layout_width : 70dp layout_hei..
๋ชจ๊ฐ์ฝ” < Kotlin ๊ธฐ์ดˆํŽธ > - 5์ผ์ฐจ โœ… Layout์ด๋ž€? : ์—ฌ๋Ÿฌ ์ปดํฌ๋„ŒํŠธ(View)๋ฅผ ๋ฌถ์–ด์ฃผ๋Š” ๋ทฐ ๊ทธ๋ฃน Layout์˜ ์ข…๋ฅ˜์— ๋”ฐ๋ผ ์ปดํฌ๋„ŒํŠธ๋“ค์„ ๋‹ค๋ฅด๊ฒŒ ์ •๋ ฌํ•  ์ˆ˜ ์žˆ์Œ โœ… Layout์˜ ์ข…๋ฅ˜ โšก Linear Layout : ์ปดํฌ๋„ŒํŠธ๋“ค์„ ์ฐจ๋ก€๋Œ€๋กœ ๋‚˜์—ด ๐Ÿ‘€ Linear Layout ์˜ orientation ์†์„ฑ vertical - ์„ธ๋กœ๋กœ ๋‚˜์—ด horizontal - ๊ฐ€๋กœ๋กœ ๋‚˜์—ด ๋ณต์žกํ•œ ๋ ˆ์ด์•„์›ƒ๋ณด๋‹ค๋Š” ๋‹จ์ˆœํ•œ ๋ฆฌ์ŠคํŠธ (์ƒํ•˜ ์Šคํฌ๋กค, ์ขŒ์šฐ ์Šคํฌ๋กค) ๋ทฐ์ผ ๋•Œ Linear Layout ์„ ์‚ฌ์šฉ! โšก Frame Layout : ์•ก์ž ์•ˆ์— ๊ทธ๋ฆผ์„ ๋ผ์šฐ๋Š” ๋ฐฉ์‹์œผ๋กœ ์ปดํฌ๋„ŒํŠธ ๋ฐฐ์น˜ Frame Layout์— ๋ฐฐ์น˜ํ•œ ๊ฒƒ ์ค‘์— ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋ณด์ž„. ๋ฐฐ์น˜๋ณด๋‹ค๋Š” ๋‹ค๋ฅธ ์šฉ๋„(Web view ์šฉ ๋ ˆ์ด์•„์›ƒ ๋“ฑ)๋ฅผ ์œ„ํ•œ ๋ ˆ์ด์•„์›ƒ์„ ์ถ”๊ฐ€ํ•  ๋•Œ ์ฃผ๋กœ ์‚ฌ์šฉ โšก Constr..
๋ชจ๊ฐ์ฝ” < Kotlin ๊ธฐ์ดˆํŽธ > - 4์ผ์ฐจ *์ด ๊ฒŒ์‹œ๋ฌผ์˜ ๋งจ ๋งˆ์ง€๋ง‰ ๊ณผ์ œ๋ฅผ ์ œ์™ธํ•œ ์‚ฌ์ง„์€ ์•„๋ž˜ ๋งํฌ์˜ ์‚ฌ์ง„์„ ์ฒจ๋ถ€ํ•˜์˜€์Šต๋‹ˆ๋‹ค. https://codemate.kr/project/์•ˆ๋“œ๋กœ์ด๋“œ-APP-๋ฉ”์ดํŠธ-์ฝ”ํ‹€๋ฆฐ-๊ธฐ์ดˆํŽธ โœ… ๊ตฌ์กฐ ํŒŒ์•…ํ•˜๊ธฐ ํ”„๋กœ์ ํŠธ ์ฐฝ : ํ”„๋กœ์ ํŠธ์— ํฌํ•จ๋œ ํด๋”์™€ ํŒŒ์ผ๋“ค์„ ๋ณผ ์ˆ˜ ์žˆ๋Š” ์ฐฝ ์—๋””ํ„ฐ ์ฐฝ : ํŒŒ์ผ์„ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋Š” ์ฐฝ (๋ ˆ์ด์•„์›ƒ/์ฝ”๋“œ) ๋„๊ตฌ ์ฐฝ โœ… ํ”„๋กœ์ ํŠธ ์ฐฝ : ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๋ฐฉ์‹์œผ๋กœ ํด๋”์™€ ํŒŒ์ผ์„ ๋ณผ ์ˆ˜ ์žˆ์Œ ๊ฐ€์žฅ ๋งŽ์ด ์“ฐ์ด๋Š” ๊ฒƒ : Project & Android โšก ํ”„๋กœ์ ํŠธ ๋ชจ๋“œ : ๋ชจ๋“  ํด๋”์™€ ํŒŒ์ผ์„ ํด๋” ๊ตฌ์กฐ ๊ทธ๋Œ€๋กœ ๋ณผ ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“œ โšก ์•ˆ๋“œ๋กœ์ด๋“œ ๋ชจ๋“œ : ์•ˆ๋“œ๋กœ์ด๋“œ ๊ฐœ๋ฐœ์šฉ์œผ๋กœ ์ตœ์ ํ™”ํ•œ ํด๋”/ํŒŒ์ผ ๊ตฌ์กฐ ๊ฐœ๋ฐœํ•  ๋•Œ๋Š” ๋ณดํ†ต ์•ˆ๋“œ๋กœ์ด๋“œ ๋ชจ๋“œ๋ฅผ ์‚ฌ์šฉ! ๐Ÿ‘€ AndroidManifest.xml ์•ฑ์˜ ์ „์ฒด ๊ตฌ์„ฑ ์ •๋ณด๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” ํŒŒ..
๋ชจ๊ฐ์ฝ” < Kotlin ๊ธฐ์ดˆํŽธ > - 3์ผ์ฐจ *์ด ๊ฒŒ์‹œ๋ฌผ์˜ ๋งจ ๋งˆ์ง€๋ง‰ ๊ณผ์ œ๋ฅผ ์ œ์™ธํ•œ ์‚ฌ์ง„์€ ์•„๋ž˜ ๋งํฌ์˜ ์‚ฌ์ง„์„ ์ฒจ๋ถ€ํ•˜์˜€์Šต๋‹ˆ๋‹ค. https://codemate.kr/project/์•ˆ๋“œ๋กœ์ด๋“œ-APP-๋ฉ”์ดํŠธ-์ฝ”ํ‹€๋ฆฐ-๊ธฐ์ดˆํŽธ โœ… ์—๋ฎฌ๋ ˆ์ดํ„ฐ๋ž€? ์—๋ฎฌ๋ ˆ์ดํ„ฐ : ์ปดํ“จํ„ฐ์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ€์ƒ๊ธฐ๊ธฐ ๋‹ค์–‘ํ•œ ์•ˆ๋“œ๋กœ์ด๋“œ ๊ธฐ๊ธฐ๋ฅผ ์ปดํ“จํ„ฐ ์ƒ์—์„œ ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ๋„๋ก ์ œ๊ณต โšก ์žฅ์  ์•ˆ๋“œ๋กœ์ด๋“œ ๊ธฐ๊ธฐ๊ฐ€ ์—†์–ด๋„ ์•ฑ ํ…Œ์ŠคํŠธ ๊ฐ€๋Šฅ ๊ฐ๊ธฐ ๋‹ค๋ฅธ ํŠน์ง•์„ ๊ฐ–๊ณ  ์žˆ๋Š” ์Šค๋งˆํŠธํฐ์˜ ๊ธฐ๊ธฐ ํ˜ธํ™˜์„ฑ ๊ณ ๋ ค ๊ฐ€๋Šฅ โšก ๋‹จ์  ์ƒ๋‹นํžˆ ๋Š๋ฆฐ ์†๋„ ์ปดํ“จํ„ฐ ์šฉ๋Ÿ‰์„ ๋งŽ์ด ์‚ฌ์šฉํ•จ => ๋Œ€๋ถ€๋ถ„์˜ ์•ˆ๋“œ๋กœ์ด๋“œ ์•ฑ ๊ฐœ๋ฐœ์ž๋“ค์€ ๊ณต๊ธฐ๊ณ„ ์‚ฌ์šฉ! โœ… ์—๋ฎฌ๋ ˆ์ดํ„ฐ ์„ค์น˜ ๋ฐ ์‹คํ–‰ โšก AVD (Android Virtual Device) Manager ์•„์ด์ฝ˜ ํด๋ฆญ (Tool > AVD Manager๋กœ ๋“ค์–ด๊ฐˆ ์ˆ˜๋„ ์žˆ์Œ!) โšก ์—๋ฎฌ๋ ˆ์ดํ„ฐ ์„ค์น˜..
๋ชจ๊ฐ์ฝ” < Kotlin ๊ธฐ์ดˆํŽธ > - 2์ผ์ฐจ โœ… ํ”„๋กœ์ ํŠธ ์ƒ์„ฑํ•˜๊ธฐ 1. ์•ˆ๋“œ๋กœ์ด๋“œ ์ŠคํŠœ๋””์˜ค ํ”„๋กœ๊ทธ๋žจ ์—ด๊ธฐ 2. ‘Create New Project’ ํด๋ฆญ 3. ํ…œํ”Œ๋ฆฟ ์„ ํƒํ•˜๊ธฐ - ‘Empty Activity’ 4. ํ”„๋กœ์ ํŠธ ์„ค์ •ํ•˜๊ธฐ โšก Name : ํŠน์ˆ˜๋ฌธ์ž ์—†์ด ์˜์–ด๋กœ! โšก Package name : ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ณ ์œ ํ•œ ๊ฐ’ ๊ตฌ๊ธ€ ํ”Œ๋ ˆ์ด ์Šคํ† ์–ด์— ์˜ฌ๋ฆด ๊ฒฝ์šฐ ๋‹ค๋ฅธ ์•ฑ๋“ค๊ณผ ๊ฒน์น˜๋ฉด X (๋ณดํ†ต ๊ทœ์น™์ด ์žˆ์Œ) ๐Ÿ‘€ com.ํšŒ์‚ฌ์ด๋ฆ„.ํ”„๋กœ๊ทธ๋žจ์ด๋ฆ„ ex) com.comu.mogakko ๐Ÿ‘€ com.ํšŒ์‚ฌ์ด๋ฆ„.ํ”Œ๋žซํผ.ํ”„๋กœ๊ทธ๋žจ์ด๋ฆ„ ex) com.comu.android.mogakko โšก Save location : ํ”„๋กœ์ ํŠธ๊ฐ€ ์ €์žฅ๋  ์œ„์น˜ โšก Language : Kotlin (Java๋„ ์„ ํƒ ๊ฐ€๋Šฅ) โšก Minimum SDK : ์•ฑ์˜ ์ŠคํŽ™์„ ๊ฒฐ์ •ํ•˜๋Š” ์ค‘์š”ํ•œ ๋ถ€๋ถ„! ‘์ตœ์†Œ ์ด์ •..
๋ชจ๊ฐ์ฝ” < Kotlin ๊ธฐ์ดˆํŽธ > - 1์ผ์ฐจ โœ… ์ฝ”ํ‹€๋ฆฐ ๊ธฐ์ดˆํŽธ ๊ณผ์ • ๋กœ๋˜ ๋ฒˆํ˜ธ ์ƒ์„ฑ๊ธฐ ์•ฑ ์ œ์ž‘ ๋น„๋ฐ€ ๋ฉ”๋ชจ์žฅ ์•ฑ ์ œ์ž‘ โœ… ์‚ฌ์šฉ ์–ธ์–ด - ์ฝ”ํ‹€๋ฆฐ ์ฝ”ํ‹€๋ฆฐ์ด๋ž€? Java์™€ 100% ํ˜ธํ™˜ ๊ฐ€๋Šฅ (Java ์ฝ”๋“œ -> Kotlin ๋ณ€ํ™˜ ๊ฐ€๋Šฅ) ํ”„๋กœ๊ทธ๋žจ์˜ ์•ˆ์ •์„ฑ์„ ๋†’์—ฌ์คŒ (Null pointer exception ์˜ค๋ฅ˜ X) Java๋ณด๋‹ค ์–ธ์–ด ์ž์ฒด๊ฐ€ ๊ฐ„๊ฒฐํ•˜์—ฌ ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ํŽธํ•จ ๊ตฌ๊ธ€์ด ์ฑ„ํƒํ•œ ์•ˆ๋“œ๋กœ์ด๋“œ ๊ฐœ๋ฐœ ๊ณต์‹ ์–ธ์–ด โœ… ์•ฑ ๊ฐœ๋ฐœ ๋ฐฉ์‹ ๐Ÿ‘€ ๋„ค์ดํ‹ฐ๋ธŒ ์•ฑ os(์šด์˜์ฒด์ œ)์— ๋งž๋Š” ๊ฐœ๋ฐœํ™˜๊ฒฝ๊ณผ ์–ธ์–ด๋กœ ๋งŒ๋“  ์•ฑ - ์•ˆ๋“œ๋กœ์ด๋“œ : Kotlin, Java - iOS : Swift, Objective-C โšก ์žฅ์  ์›ํ•˜๋Š” ๊ฒƒ์€ ๋ญ๋“  ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ณ , ์„ฑ๋Šฅ์ด ์ข‹์Œ โšก ๋‹จ์  1) ์•ˆ๋“œ๋กœ์ด๋“œ, iOS ๋ฅผ ๋”ฐ๋กœ ๊ฐœ๋ฐœํ•ด์•ผ ํ•จ 2) ๊ฐœ๋ฐœ ๊ธฐ๊ฐ„์ด ์ƒ๋Œ€์ ์œผ๋กœ ์˜ค๋ž˜ ๊ฑธ๋ฆผ 3) ์—…๋ฐ์ดํŠธ ํ•  ๋•Œ๋งˆ๋‹ค ๊ตฌ๊ธ€ ..