Skip to main content

[Android] Gradle, Groovy Books

졜근 Android λŠ” Android Studio λΌλŠ” 톡합 개발툴과 ν•¨κ»˜ μƒˆλ‘œμš΄ λΉŒλ“œ μ‹œμŠ€ν…œμ„ 곡개 ν–ˆλ‹€.

κ·Έλ™μ•ˆ Android μ˜ 유λͺ…ν•œ Opensource Library λŠ” λŒ€λΆ€λΆ„ Maven 을 기반으둜 배포되고 μžˆμ—ˆλŠ”λ° Android κ°€ μ±„νƒν•œ λΉŒλ“œνˆ΄μ€ λ°”λ‘œ Gradle μ΄λ‹€.

Gradle Logo
figure 1. Gradle Logo
Gradle μ€ Java μ§„μ˜μ—μ„œ Maven μ΄ν›„ μ£Όλͺ©λ°›κ³  μžˆλŠ” μ°¨μ„ΈλŒ€ λΉŒλ“œνˆ΄ 이닀.
Ant 와 Maven μ˜ μž₯점과 ν•¨κ»˜ 더 λ°œμ „λœ κΈ°λŠ₯듀을 μ œκ³΅ν•˜κ³  있고,  Groovy λΌλŠ” μ–Έμ–΄λ₯Ό 기반으둜 λ™μž‘ ν•œλ‹€κ³  ν•œλ‹€.

λ‚˜ μ—­μ‹œ Maven κΉŒμ§€λŠ” μ–΄κΉ¨λ„ˆλ¨Έλ‘œ λ³Έ 기얡이 μžˆμ§€λ§Œ, Gradle μ€ 정말 μ²˜μŒμΈμ§€λΌ Android λ₯Ό ν•˜λŠ”λ° μ΄λŸ°κ²ƒ κΉŒμ§€ ν•΄μ•Όλ˜λ‚˜ λΌλŠ” 생각이 듀기도 ν•œλ‹€.

ν•˜μ§€λ§Œ, Android μ˜ μ„±μž₯과정을 생각해 보면 μ΄λŸ¬ν•œ λΉŒλ“œνˆ΄μ€ λ°˜λ“œμ‹œ ν•„μš”ν•˜κΈ΄ ν•˜λ‹€.

졜근 Android Project λŠ” 단일 Project 둜 μ§„ν–‰ λ˜λŠ” κ²½μš°κ°€ 거의 없을 μ •λ„λ‘œ λ‹€μ–‘ν•œ Opensource 및 Libraries λ₯Ό ν¬ν•¨ν•˜κ³  μžˆλ‹€.

λ‹¨μˆœνžˆ Eclipse μ—μ„œ Compile 둜 Device 에 App 을 μ˜¬λ¦¬κΈ°μ—λŠ” λ©μΉ˜κ°€ λ„ˆλ¬΄ 컀지고 있고, 기본이 λ˜λŠ” Build Tool 이 μ—†κΈ° λ•Œλ¬Έμ— Ant λ‚˜ Maven λ“± κΈ°μ‘΄ Java μ§„μ˜μ—μ„œ 많이 μ‚¬μš©ν•˜κ³  μžˆλŠ” μ—¬λŸ¬ Builde Tool 듀이 μ‚¬μš©λ˜λ‹€ λ³΄λ‹ˆ 개발자 μž…μž₯μ—μ„œλŠ” μ—¬λŸ¬ Library λ₯Ό μ‚¬μš©ν• λ•Œ μ–΄λ €μš΄ 점에 봉착 ν•˜κΈ°λ„ ν•˜κΈ° λ•Œλ¬Έμ΄λ‹€.

그런데 이 Gradle λ₯Ό κ³΅λΆ€ν•˜κΈ° μœ„ν•΄μ„œλŠ” Groovy λΌλŠ” 언어에 λŒ€ν•œ 이해가 λ¨Όμ € μ„ ν–‰ λ˜μ–΄μ•Ό ν•œλ‹¨λ‹€.

figure 2. Groovy Logo
Groovy κ°€ Java 기반의 μ–Έμ–΄λΌκ³ λŠ” ν•˜μ§€λ§Œ Android ν•˜λ‚˜ ν•˜κΈ°λ„ 벅찬데 Build λ₯Ό μœ„ν•΄ μƒˆλ‘œμš΄ μ–Έμ–΄λ₯Ό 곡뢀해야 λœλ‹€λŠ” 점은 λΆ€λ‹΄μœΌλ‘œ μž‘μš©λœλ‹€.

λ”μš±μ΄ μš°λ¦¬λ‚˜λΌμ— Groovy λ²ˆμ—­ λ„μ„œλŠ” λ‹¬λž‘ ν•œκΆŒ. Gradle κ΄€λ ¨ λ„μ„œλŠ” μ „λ¬΄ν•œ μƒνƒœμ΄λ‹€.
κ·Έλ§ˆλ‚˜ Groovy μ™€ Gradle λ₯Ό μžμ„Ένžˆ μ •λ¦¬ν•œ λΈ”λ‘œκ·Έκ°€ 있고, Groovy Korea κ°€ μžˆμ–΄ μ—¬λŸ¬ 정보λ₯Ό 얻을 수 μžˆμ„ 것 κ°™λ‹€.

λ‹Ήμ—°ν•œ μ΄μ•ΌκΈ°μ§€λ§Œ μœ„ μ‚¬μ΄νŠΈλ“€μ€ Android μ— ν•œμ •λœ μ΄μ•ΌκΈ°λ§Œμ„ ν•˜λŠ” μ‚¬μ΄νŠΈ 듀이 μ•„λ‹ˆλ‹€.
λ‚˜μ²˜λŸΌ Android κ°œλ°œμ„ μœ„ν•΄ Groovy μ™€ Gradle  에 μ ‘κ·Όν•œ μ‚¬λžŒλ“€μ—κ²ŒλŠ” κ·Έ λ‚΄μš©μ΄ λ°©λŒ€ν•˜κ³  μ–΄λ””μ„œλΆ€ν„° μ‹œμž‘ν•΄μ•Ό ν• μ§€ λ‚œκ°ν•  것이닀.

κ·Έλž˜μ„œ μ˜€λŠ˜λΆ€ν„° Android κ°œλ°œμ„ μœ„ν•΄ Groovy μ™€ Gradle λ₯Ό 곡뢀해 λ³Ό 생각이닀.
일단은 Groovy κΈ°λ³Έμ„ μ’€ λ³΄λ©΄μ„œ Gradle μ„ μ‚¬μš©ν•  수 μžˆλŠ” 기초λ₯Ό 닦은 ν›„, Android Project 에 μ μš©ν•΄λ³΄λ„λ‘ ν•΄μ•Όκ² λ‹€.

μ „μŸμ— λ‚˜κ°€κΈ° 전에 μ€€λΉ„λ₯Ό 철저이 ν•˜λ“―μ΄, μƒˆλ‘œμš΄ 언어에 μ μ‘ν•˜κΈ° μœ„ν•΄ 책을 κ΅¬μž…ν•˜κ³  λ§μ•˜λ‹€.

λ°”λ‘œ Groovy in Action( ν•œκ΅­νŒ: ν”„λ‘œκ·Έλž˜λ° 그루비) 와 Building and Testing with Gradle  μ΄λ‹€.
figure 3. Groovy in Action
2009 년에 λ‚˜μ˜¨ λ²ˆμ—­μ„œλΌ μ‹œλŒ€μ— μ’€ 뒀쳐지지 μ•Šμ„κΉŒ 생각이 듀기도 ν•˜μ§€λ§Œ, μ—„μ²­ 유λͺ…ν•œ λ„μ„œ 인데닀, 그리고.. λ²ˆμ—­μ„œλΌκ³€ 이거 ν•œκΆŒ 뿐이닀.

figure 4. Building and Testing with Gradle
κ²Œλ‹€κ°€ Gradle λŠ” λ²ˆμ—­μ„œλ„ μ—†λ‹€. λ•Œλ¬Έμ— μ›μ„œ pdf λ₯Ό 톡해 곡뢀해야 ν•  νŒμ΄λ‹€. ν•œκΈ€λ‘œ 써 μžˆμ–΄λ„ μ–΄λ €μš΄ νŒκ΅­μ—.. μ›μ„œλΌλ‹ˆ .. ν•˜μ§€λ§Œ 별닀λ₯Έ μˆ˜κ°€ μ—†μœΌλ‹ˆ.. μ–΄μ„œλΉ¨λ¦¬ λ²ˆμ—­μ„œκ°€ λ‚˜μ™”μœΌλ©΄ μ’‹κ² λ‹€..γ… 

μ•žμœΌλ‘œ κ³„νšλ„ μ’€ 잘 μ„Έμ›Œμ„œ ν•˜λ‚˜ν•˜λ‚˜ μ°¨κ·Όμ°¨κ·Ό λ°°μ›Œ λ‚˜κ°€λ„λ‘ ν•΄μ•Όκ² λ‹€.
ν•œνŽΈμœΌλ‘œλŠ” μƒˆλ‘œμš΄ λΉŒλ“œνˆ΄μ„ κ³΅λΆ€ν•œλ‹€λŠ” 생각에 μ˜μš•μ΄ 100%!

Comments

Popular posts from this blog

[Tip] Homebrew 둜 μ„€μΉ˜ν•œ Python ν™˜κ²½μ—μ„œ GAE Flask μ„€μΉ˜ν•˜κΈ°

2014.07.10 -- Issue -- ~/.pydistutils.cfg νŒŒμΌμ„ μƒμ„±ν•˜κ³  λ‚˜μ„œ pip install 을 ν•  경우, permission denied 였λ₯˜κ°€ λ°œμƒν•˜λŠ” κ²½μš°κ°€ μžˆλ‹€. μ΄λ•ŒλŠ” prefix= λ₯Ό μ‚­μ œν•˜λ©΄ μ •μƒμ μœΌλ‘œ μ„€μΉ˜ν•  수 μžˆλ‹€. λ˜λŠ”, μ„€μΉ˜μ‹œ μ•„λž˜μ™€ 같은 λͺ…λ Ήμ–΄λ‘œ μ„€μΉ˜ν•œλ‹€. pip install --user --install-option="--prefix=" <package-name> -------------------------------------------------- Mac μ—μ„œ Homebrew λ₯Ό μ‚¬μš©ν•˜λ©΄ 각쒅 package λ₯Ό νŽΈλ¦¬ν•˜κ²Œ 관리 ν• μˆ˜ μžˆλ‹€. 그런데 Homebrew λ₯Ό 톡해 Python 을 μ„€μΉ˜ν•œ ν™˜κ²½μ—μ„œ, Google App Engine 의 Flask package λ₯Ό μ„€μΉ˜ν•˜κΈ° μœ„ν•΄ λͺ…λ Ήμ–΄ ( pip install -r requirements.txt -t lib/ )λ₯Ό μ‹€ν–‰ν•˜λ©΄ μ•„λž˜μ™€ 같은 였λ₯˜κ°€ λ°œμƒν•œλ‹€. 말 κ·ΈλŒ€λ‘œ prefix λ₯Ό μ„€μ •ν•΄ λ‹¬λΌλŠ” 이야기 인데, ν•΄κ²° 방법은 λ‹€μŒκ³Ό κ°™λ‹€. HOME(~/) 에 .pydistutils.cfg νŒŒμΌμ„ μƒμ„±ν•˜κ³  μ•„λž˜ μ½”λ“œλ₯Ό μΆ”κ°€ν•œλ‹€. [install] prefix= 그리고 λ‹€μ‹œ μ‹€ν–‰ν•˜λ©΄ μ •μƒμ μœΌλ‘œ Flask package κ°€ μ„€μΉ˜λ˜λŠ”κ²ƒμ„ 확인할 수 μžˆλ‹€. Reference 1. stackoverflow http://stackoverflow.com/questions/24257803/distutilsoptionerror-must-supply-either-home-or-prefix-exec-prefix-not-both 2. Github Issue https://github.com/Homebrew/homebrew/wiki/Homebrew-and-Python

[Android] Android Studio static / member variable prefix μ„€μ • 방법

Java μ—μ„œ static λ³€μˆ˜λŠ” λŠ” s~둜,  맴버 λ³€μˆ˜λŠ” m~ 으둜 μ‹œμž‘ν•˜λŠ” κ²½μš°κ°€ λŒ€λΆ€λΆ„μ΄λ‹€. Android Studio μ—μ„œ λ³€μˆ˜λ₯Ό μ„ μ–Έ ν›„ getter/setter λ₯Ό μžλ™ μƒμ„±ν•˜λ©΄ [(cmd + n) -> (Getter and Setter) 선택] μ•„λž˜μ™€ 같이 s 와 m 이 λΆ™μ–΄ λ‚˜μ˜€κ²Œ λœλ‹€. public class SampleClass { private static int sStaticVariable = 1; private int mMemberVariable = 1; public static int getsStaticVariable() { return sStaticVariable; } public static void setsStaticVariable(int sStaticVariable) { SampleClass.sStaticVariable = sStaticVariable; } public int getmMemberVariable() { return mMemberVariable; } public void setmMemberVariable(int mMemberVariable) { this.mMemberVariable = mMemberVariable; } } ν•˜λ‚˜ν•˜λ‚˜ m, s λ₯Ό μ§€μš°λŠ” 것 보닀 setting μ—μ„œ λ³€μˆ˜ prefix λ₯Ό 미리 μ„€μ •ν•΄ 두면  μ΄λŸ¬ν•œ λΆˆνŽΈμ„ ν•΄κ²°ν•  수 μžˆλ‹€. Mac κΈ°μ€€μœΌλ‘œ Android Studio -> Preferences -> Code Style -> Java μ—μ„œ Code Generation 을 선택 ν•˜λ©΄ μ•„λž˜μ™€ 같은 화면을 λ³Ό 수 μžˆλ‹€. μœ„μ™€κ°™μ΄  Field : Name Prefix λž€μ— "m", Static Field : Name Prefix λž€μ— "s" λ₯Ό μž…λ ₯ν•˜κ³  OK λ²„νŠΌμ„ λˆ„λ₯΄λ©΄ μ„€...

[GDG Seoul] OSS/Github μž…λ¬Έ CodeLab ν›„κΈ°

μž‘λ…„ μ΄λ§˜λ•Œ μ―€, GDG Android Korea μ—μ„œ CodeLab 을 μ§„ν–‰ ν–ˆμ—ˆλŠ”λ°, μ˜¬ν•΄λŠ” GDG Seoul μ—μ„œ μ§„ν–‰ν•œ "OSS/Gitub μž…λ¬Έ CodeLab" μ΄λž€ νƒ€μ΄ν‹€λ‘œ CodeLab 을 μ§„ν–‰ν•˜μ—¬ μ°Έκ°€ν•˜κ²Œ λ˜μ—ˆλ‹€. git μ΄λ‚˜ Github λ₯Ό 처음 μ‚¬μš©ν•˜λŠ”κ±΄ μ•„λ‹ˆμ˜€μ§€λ§Œ, 거의 SVN 처럼 μ‚¬μš© ν•΄ μ˜¨μ§€λΌ, "이참에 μž¬λŒ€λ‘œ ν•œλ²ˆ λ°°μ›Œλ³΄μž!" ν•˜λŠ” 맘이 μ»Έκ³ , λ‹€λ₯Έ 뢄듀은 μ–΄λ–»κ²Œ Github λ₯Ό μ‚¬μš©ν•˜μ‹œλŠ”μ§€λ„ κΆκΈˆν–ˆλ‹€. CodeLab 은 크게 - OSS 에 λŒ€ν•œ μ„€λͺ… 및 Newbi λ₯Ό μœ„ν•œ Tutorial - Github 및 git 에 λŒ€ν•œ Tutorial - CodeLab 순으둜 μ§„ν–‰ λ˜μ—ˆλ‹€. (λ”±νžˆ μˆœμ„œμ— 이름이 μ—†λŠ”κ²ƒ κ°™μ•„μ„œ μž„μ˜λ‘œ λΆ™μ˜€λ‹€.) 1. OSS 에 λŒ€ν•œ μ„€λͺ… 및 Newbi λ₯Ό μœ„ν•œ Tutorial (뉴비X λ‹˜) ( μŠ¬λΌμ΄λ“œ 링크 ) OSS (Open Source Software) 에 λŒ€ν•œ κ°„λž΅ν•œ μ†Œκ°œμ™€ Linux Kernel λ₯Ό 예둜 Contribute ν•˜λŠ” 방법에 λŒ€ν•œ 이야기λ₯Ό 듀을 수 μžˆμ—ˆλ‹€. Android 의 경우만 해도 μ—¬λŸ¬ open source library 의 λ„μ›€μœΌλ‘œ 쒀더 νŽΈν•˜κ³  μ‰½κ²Œ App κ°œλ°œμ„ μ§„ν–‰ ν•  수 κ°€ μžˆλŠ”λ°, μ‚¬μš©ν•˜λ©΄μ„œ κ°œμ„ ν•œ 사항에 λŒ€ν•΄μ„œ λ‚΄κ°€ μ½”λ“œμ— κΈ°μ—¬ν•  수 μžˆκ² λ‹€. λΌλŠ” 생각이 많이 λ“€μ—ˆλ‹€. 특히 Newbi λ₯Ό μœ„ν•œ μ£Όμ˜ν•΄μ•Ό ν•  사항이 μΈμƒκΉŠμ—ˆλŠ”λ°, κ°„λ‹¨ν•˜κ²Œ μš”μ•½ ν•˜μžλ©΄, - coding Style - You are just a newbi here - start from jab  ( μž‘μ€ 것 λΆ€ν„° μ‹œμž‘ν•˜μž.. μ‘°κ·Έλ§ˆν•œ μž‘μ—…λΆ€ν„°, ν˜Ήμ€ 리뷰…) - commit log style - summarized title on First Line - just \n on Second Line - Detailed log after 3rd Line 이정도가 μ•„λ‹κΉŒ μ‹Άλ‹€. 특히, μ˜μš•μ΄ λ„ˆλ¬΄ μ§€λ‚˜μ³μ„œ λ„ˆλ¬΄ λ§Žμ€ 것을 컀밋...