SlideShare a Scribd company logo
1 of 23
Download to read offline
AndroidAnnotations 시작하기
작성자 – 서주리 최종 수정일: 151202
목차
1. AndroidAnnotations 소개
2. AndroidAnnotations 목표
3. AndroidAnnotations 샘플 코드 살펴보기
4. AndroidAnnotations 환경 설정 하기
5. AndroidAnnotations 시작하기
소개
• Androidannotations 란 무엇일까요?
Fast Android Development.
Easy maintenance.
빠른 Android 개발과 쉬운 유지보수를 위한
오픈 소스 프레임 워크 !
출처 - https://github.com/excilys/androidannotations
목표
로버트 C. 마틴 (Robert C. Martin)
Clean code의 저자
曰 :
“코드 읽기와 쓰기에 소요되는 시간의 비율은 10:1을 훨씬 넘는다.
그러므로 읽기 쉽게 만든 것은 더 쓰기 쉽다.”
(원문 - The ratio of time spent reading [code] versus writing is well over 10 to 1 [therefore] making it easy to read makes it easier to write.)
AndroidAnnotations는 명확한 의도와 간단한 코드가
그 목표를 달성하는 가장 좋은 방법이라는 것을 목표로 하고 있다.
목표
• 어떻게?!
Java annotations 를 사용!
컴파일 시에 generated code를 생성하여
개발자들이 자신의 의도를 분명히 나타낼 수 있도록!
(자세한건 뒤에서^_^)
목표
AndroidAnnotations의 특징
• Dependency injection : inject views, extras, system services, resources, ...
• 간결화 된 thread 모델 : UI thread 에서 또는 background thread 에서 실행되도록 할 수 있다.
• 이벤트 바인딩 : 이벤트를 처리 할 때 더 이상 보기 안 좋은 리스너 클래스들을 만들 필요가 없다.
• REST 클라이언트 : 클라이언트 인터페이스를 생성, AndroidAnnotations는 구현을 생성한다.
• AndroidAnnotations이 컴파일 시에 서브 클래스를 생성 할 때,
어떻게 작동하는지 확인하기 위해 코드를 확인할 수 있다.
• runtime 성능에 영향 없이, 150kb보다 더 적은 용량으로 이러한 장점들을 제공한다.
원문 - https://github.com/excilys/androidannotations/wiki
샘플 코드
AndroidAnnotations에서
제시하는
예시코드를
살펴봅시다^_^
샘플 코드
가장 기본적인 @EActivity annotation을 적용한 모습이다.
코드가 훨씬 간결해짐을 알 수 있다.
적용 전 적용 후
샘플 코드
뒤에서 나올 내용이니
지금은 간단한 모양만
보면 된다. ^_^
사용 예를 보았으니
AndroidAnnotations를
사용하기 위한
환경 설정을 시작해봅시다!
환경 설정
https://github.com/excilys/
androidannotations/wiki/Configuration
위의 주소로 들어가면
여러 환경에서의 사용법이
문서화 되어있다.
해당 강의에서는
Android Studio를
이용하기 때문에
Gradle 을 기준으로
진행을 하도록 하겠습니다^_^
환경 설정
1. Android Gradle 빈 프로젝트를 생성한다.
2. build.gradle 를 아래와 같이 setting 한다. (Top-level build file)
Android plugin의 최신버전으로 !
Android-apt plugin의 최신버전으로 !
환경 설정
3. build.gradle 를 아래와 같이 setting 한다. (Application build file)
환경 설정
4. Annotation processor 설정
File
→ Other Settings
→ Default Settings...
환경 설정 Build, Execution, Deployment
-> Compiler
-> Annotation Processor
여기에 체크!
4. Annotation processor 설정
환경 설정
5. 이제 사용하면 된다~!
시작하기
환경 설정이 모두 되었다면 이제 시작하면 된다!
1. 새로운 Activity를 생성한다! (또는 이미 존재하는 Activity를 사용해도 된다)
2. Activity에 @EActivity, @ViewById, @Click 을 사용한다!
- 아래의 예제를 보고 따라해보자^_^
시작하기
3. 파일을 저장한다.
(컴파일을 하고 우리가 만든 Activity의 이름 뒤에 '_'가 붙은 이름의 서브 클래스를 generate 한다.
"MyActivity"의 generate된 서브클래스 이름은 "MyActivity_")
4. Manifest에 MyActivity 대신에 MyActivity_를 등록한다. 이렇게~!
AndroidAnnotations Activity에 적용하기 끝 !
참 쉽죵 ^0^
시작하기
덧 1,
Android에서 Activity를 시작할 때 아래와 같이 해왔을 것이다!
그러나 AndroidAnnotations를 사용한다면 반드시 MyListActivity_가 호출되어 시작되어야 한다!
왜??
시작하기
덧 1,
AndroidAnnotations는 Annotation이 적용된 각각의 Activity마다
서브클래스를 generate 한다.
generate
이 서브 클래스는 super를 부르는 것을 위임하기 전에
몇 가지 메소드들(ex. onCreate(), ...)을 overrinding하여 사용자의 Activity에 동작을 추가한다.
시작하기
덧 1,
그러므로!
우리는 항상 Android Manifest에 Activity 이름 뒤에
'_' 접미사를 붙여서 등록해 사용해야 한다! ^_^ 바로 이렇게
같은 패키지, 같은 이름에 그냥 _ 접미사만 붙이면 된다.
만약 AndroidManifest.xml에 등록을 깜빡해도
AndroidAnnotations가 알려주니 걱정말자~ ^_^
시작하기
앗! 제대로 따라했는데 build가 안된다?!
혹시 Not find my class ( ...MyActivity_ ) 라며 문제가 발생했나요..?!
generate가 아직 안된 경우 ! 프로젝트를 Clean 해주면 된다~!
[ Build -> Clean Project ]
덧 2,
시작하기
AndroidAnnotations는 generate 된 소스 폴더로부터
반복적으로 이동하여 AndroidManifest.xml 파일을 찾는다.
덧 3,
프로젝트 구조에 적합하지 않는 경우 프로세서에
androidManifestFile 옵션을 제공함으로써 AndroidManifest.xml의 절대 경로를 지정할 수 있다!
• javac - 옵션 추가: -AandroidManifestFile=/path/to/AndroidManifest.xml
• Eclipse - "Properties > Java Compiler > Annotation Processing"으로 가서
Processor options에서 add
• 다른 빌드 시스템, IDE - customization page를 살펴보길
Thank you

More Related Content

What's hot

GDG DevFest 2017 Seoul 프론트엔드 모던 프레임워크 낱낱히 파헤치기
 GDG DevFest 2017 Seoul 프론트엔드 모던 프레임워크 낱낱히 파헤치기 GDG DevFest 2017 Seoul 프론트엔드 모던 프레임워크 낱낱히 파헤치기
GDG DevFest 2017 Seoul 프론트엔드 모던 프레임워크 낱낱히 파헤치기Kenneth Ceyer
 
소프트웨어 개선 그룹(Sig) 개발 원칙
소프트웨어 개선 그룹(Sig) 개발 원칙소프트웨어 개선 그룹(Sig) 개발 원칙
소프트웨어 개선 그룹(Sig) 개발 원칙Hong Hyo Sang
 
AngularJS 2, version 1 and ReactJS
AngularJS 2, version 1 and ReactJSAngularJS 2, version 1 and ReactJS
AngularJS 2, version 1 and ReactJSKenneth Ceyer
 
ReactJS | 서버와 클라이어트에서 동시에 사용하는
ReactJS | 서버와 클라이어트에서 동시에 사용하는ReactJS | 서버와 클라이어트에서 동시에 사용하는
ReactJS | 서버와 클라이어트에서 동시에 사용하는Taegon Kim
 
Angular2 가기전 Type script소개
 Angular2 가기전 Type script소개 Angular2 가기전 Type script소개
Angular2 가기전 Type script소개Dong Jun Kwon
 
[112] 실전 스위프트 프로그래밍
[112] 실전 스위프트 프로그래밍[112] 실전 스위프트 프로그래밍
[112] 실전 스위프트 프로그래밍NAVER D2
 
자동화된 소스 분석, 처리, 검증을 통한 소스의 불필요한 #if - #endif 제거하기 NDC2012
자동화된 소스 분석, 처리, 검증을 통한 소스의 불필요한 #if - #endif 제거하기 NDC2012자동화된 소스 분석, 처리, 검증을 통한 소스의 불필요한 #if - #endif 제거하기 NDC2012
자동화된 소스 분석, 처리, 검증을 통한 소스의 불필요한 #if - #endif 제거하기 NDC2012Esun Kim
 
[1D7]안드로이드 L-Preview 보안 아키텍처 및 설비
[1D7]안드로이드 L-Preview 보안 아키텍처 및 설비[1D7]안드로이드 L-Preview 보안 아키텍처 및 설비
[1D7]안드로이드 L-Preview 보안 아키텍처 및 설비NAVER D2
 
React 튜토리얼 1차시
React 튜토리얼 1차시React 튜토리얼 1차시
React 튜토리얼 1차시태현 김
 
Dagger 2.0 을 활용한 의존성 주입
Dagger 2.0 을 활용한 의존성 주입Dagger 2.0 을 활용한 의존성 주입
Dagger 2.0 을 활용한 의존성 주입승용 윤
 
[D2 오픈세미나]5.robolectric 안드로이드 테스팅
[D2 오픈세미나]5.robolectric 안드로이드 테스팅[D2 오픈세미나]5.robolectric 안드로이드 테스팅
[D2 오픈세미나]5.robolectric 안드로이드 테스팅NAVER D2
 
GraphQL overview
GraphQL overviewGraphQL overview
GraphQL overview기동 이
 
Android ndk jni 설치및 연동
Android ndk jni 설치및 연동Android ndk jni 설치및 연동
Android ndk jni 설치및 연동Sangon Lee
 
Front end dev 2016 & beyond
Front end dev 2016 & beyondFront end dev 2016 & beyond
Front end dev 2016 & beyondJae Sung Park
 
React 애플리케이션 아키텍처 - 아무도 알려주지 않아서 혼자서 삽질했다.
React 애플리케이션 아키텍처 - 아무도 알려주지 않아서 혼자서 삽질했다.React 애플리케이션 아키텍처 - 아무도 알려주지 않아서 혼자서 삽질했다.
React 애플리케이션 아키텍처 - 아무도 알려주지 않아서 혼자서 삽질했다.병대 손
 

What's hot (17)

GDG DevFest 2017 Seoul 프론트엔드 모던 프레임워크 낱낱히 파헤치기
 GDG DevFest 2017 Seoul 프론트엔드 모던 프레임워크 낱낱히 파헤치기 GDG DevFest 2017 Seoul 프론트엔드 모던 프레임워크 낱낱히 파헤치기
GDG DevFest 2017 Seoul 프론트엔드 모던 프레임워크 낱낱히 파헤치기
 
소프트웨어 개선 그룹(Sig) 개발 원칙
소프트웨어 개선 그룹(Sig) 개발 원칙소프트웨어 개선 그룹(Sig) 개발 원칙
소프트웨어 개선 그룹(Sig) 개발 원칙
 
AngularJS 2, version 1 and ReactJS
AngularJS 2, version 1 and ReactJSAngularJS 2, version 1 and ReactJS
AngularJS 2, version 1 and ReactJS
 
ReactJS | 서버와 클라이어트에서 동시에 사용하는
ReactJS | 서버와 클라이어트에서 동시에 사용하는ReactJS | 서버와 클라이어트에서 동시에 사용하는
ReactJS | 서버와 클라이어트에서 동시에 사용하는
 
Angular2 가기전 Type script소개
 Angular2 가기전 Type script소개 Angular2 가기전 Type script소개
Angular2 가기전 Type script소개
 
[112] 실전 스위프트 프로그래밍
[112] 실전 스위프트 프로그래밍[112] 실전 스위프트 프로그래밍
[112] 실전 스위프트 프로그래밍
 
2.Spring IoC & DI (ioc container)
2.Spring IoC & DI (ioc container)2.Spring IoC & DI (ioc container)
2.Spring IoC & DI (ioc container)
 
자동화된 소스 분석, 처리, 검증을 통한 소스의 불필요한 #if - #endif 제거하기 NDC2012
자동화된 소스 분석, 처리, 검증을 통한 소스의 불필요한 #if - #endif 제거하기 NDC2012자동화된 소스 분석, 처리, 검증을 통한 소스의 불필요한 #if - #endif 제거하기 NDC2012
자동화된 소스 분석, 처리, 검증을 통한 소스의 불필요한 #if - #endif 제거하기 NDC2012
 
[1D7]안드로이드 L-Preview 보안 아키텍처 및 설비
[1D7]안드로이드 L-Preview 보안 아키텍처 및 설비[1D7]안드로이드 L-Preview 보안 아키텍처 및 설비
[1D7]안드로이드 L-Preview 보안 아키텍처 및 설비
 
React 튜토리얼 1차시
React 튜토리얼 1차시React 튜토리얼 1차시
React 튜토리얼 1차시
 
Dagger 2.0 을 활용한 의존성 주입
Dagger 2.0 을 활용한 의존성 주입Dagger 2.0 을 활용한 의존성 주입
Dagger 2.0 을 활용한 의존성 주입
 
miss_pattern_v2
miss_pattern_v2miss_pattern_v2
miss_pattern_v2
 
[D2 오픈세미나]5.robolectric 안드로이드 테스팅
[D2 오픈세미나]5.robolectric 안드로이드 테스팅[D2 오픈세미나]5.robolectric 안드로이드 테스팅
[D2 오픈세미나]5.robolectric 안드로이드 테스팅
 
GraphQL overview
GraphQL overviewGraphQL overview
GraphQL overview
 
Android ndk jni 설치및 연동
Android ndk jni 설치및 연동Android ndk jni 설치및 연동
Android ndk jni 설치및 연동
 
Front end dev 2016 & beyond
Front end dev 2016 & beyondFront end dev 2016 & beyond
Front end dev 2016 & beyond
 
React 애플리케이션 아키텍처 - 아무도 알려주지 않아서 혼자서 삽질했다.
React 애플리케이션 아키텍처 - 아무도 알려주지 않아서 혼자서 삽질했다.React 애플리케이션 아키텍처 - 아무도 알려주지 않아서 혼자서 삽질했다.
React 애플리케이션 아키텍처 - 아무도 알려주지 않아서 혼자서 삽질했다.
 

Viewers also liked

Jurano강의 lec2. sample application 둘러보기
Jurano강의 lec2. sample application 둘러보기Jurano강의 lec2. sample application 둘러보기
Jurano강의 lec2. sample application 둘러보기Ju-ri Seo
 
Jurano강의 lec7 android_annotations_resource_injection_and_rest_api
Jurano강의 lec7 android_annotations_resource_injection_and_rest_apiJurano강의 lec7 android_annotations_resource_injection_and_rest_api
Jurano강의 lec7 android_annotations_resource_injection_and_rest_apiJu-ri Seo
 
Jurano강의 lec4 android_annotations_application
Jurano강의 lec4 android_annotations_applicationJurano강의 lec4 android_annotations_application
Jurano강의 lec4 android_annotations_applicationJu-ri Seo
 
EventBus for Android
EventBus for AndroidEventBus for Android
EventBus for Androidgreenrobot
 
주니어 개발자도 이해 할 수 있는 의존성 주입(Dependency Injection)
주니어 개발자도 이해 할 수 있는 의존성 주입(Dependency Injection)주니어 개발자도 이해 할 수 있는 의존성 주입(Dependency Injection)
주니어 개발자도 이해 할 수 있는 의존성 주입(Dependency Injection)Darion Kim
 
[JWPA-1]의존성 주입(Dependency injection)
[JWPA-1]의존성 주입(Dependency injection)[JWPA-1]의존성 주입(Dependency injection)
[JWPA-1]의존성 주입(Dependency injection)Young-Ho Cho
 

Viewers also liked (7)

Jurano강의 lec2. sample application 둘러보기
Jurano강의 lec2. sample application 둘러보기Jurano강의 lec2. sample application 둘러보기
Jurano강의 lec2. sample application 둘러보기
 
Jurano강의 lec7 android_annotations_resource_injection_and_rest_api
Jurano강의 lec7 android_annotations_resource_injection_and_rest_apiJurano강의 lec7 android_annotations_resource_injection_and_rest_api
Jurano강의 lec7 android_annotations_resource_injection_and_rest_api
 
Jurano강의 lec4 android_annotations_application
Jurano강의 lec4 android_annotations_applicationJurano강의 lec4 android_annotations_application
Jurano강의 lec4 android_annotations_application
 
EventBus for Android
EventBus for AndroidEventBus for Android
EventBus for Android
 
Guava’s Event Bus
Guava’s Event BusGuava’s Event Bus
Guava’s Event Bus
 
주니어 개발자도 이해 할 수 있는 의존성 주입(Dependency Injection)
주니어 개발자도 이해 할 수 있는 의존성 주입(Dependency Injection)주니어 개발자도 이해 할 수 있는 의존성 주입(Dependency Injection)
주니어 개발자도 이해 할 수 있는 의존성 주입(Dependency Injection)
 
[JWPA-1]의존성 주입(Dependency injection)
[JWPA-1]의존성 주입(Dependency injection)[JWPA-1]의존성 주입(Dependency injection)
[JWPA-1]의존성 주입(Dependency injection)
 

Similar to Jurano강의 lec1. AndroidAnnotations 시작하기

LetsSwift(강민규스피커,안정민서포터).pptx
LetsSwift(강민규스피커,안정민서포터).pptxLetsSwift(강민규스피커,안정민서포터).pptx
LetsSwift(강민규스피커,안정민서포터).pptxssuser2601f7
 
20221131_레츠스위프트_2022_iOS개발에서_알아두면_좋은것들.pdf
20221131_레츠스위프트_2022_iOS개발에서_알아두면_좋은것들.pdf20221131_레츠스위프트_2022_iOS개발에서_알아두면_좋은것들.pdf
20221131_레츠스위프트_2022_iOS개발에서_알아두면_좋은것들.pdf정민 안
 
1일차 20140326
1일차 201403261일차 20140326
1일차 20140326Jake Yoon
 
Sencha touch2-sdk-tools-window
Sencha touch2-sdk-tools-windowSencha touch2-sdk-tools-window
Sencha touch2-sdk-tools-windowByoung Do Ahn
 
웹 Front-End 실무 이야기
웹 Front-End 실무 이야기웹 Front-End 실무 이야기
웹 Front-End 실무 이야기JinKwon Lee
 
NHNNEXT 고등학생 창의체험 프로그래밍 실습
NHNNEXT 고등학생 창의체험 프로그래밍 실습NHNNEXT 고등학생 창의체험 프로그래밍 실습
NHNNEXT 고등학생 창의체험 프로그래밍 실습YoungSu Son
 
구글앱엔진 스터디
구글앱엔진 스터디구글앱엔진 스터디
구글앱엔진 스터디소라 정
 
『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법
『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법
『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법복연 이
 
Welcome to Android Studio
Welcome to Android StudioWelcome to Android Studio
Welcome to Android StudioWonKyun Lim
 
[IoT] MAKE with Open H/W + Node.JS - 5th
[IoT] MAKE with Open H/W + Node.JS - 5th[IoT] MAKE with Open H/W + Node.JS - 5th
[IoT] MAKE with Open H/W + Node.JS - 5thPark Jonggun
 
200819 NAVER TECH CONCERT 07_신입 iOS 개발자 개발업무 적응기
200819 NAVER TECH CONCERT 07_신입 iOS 개발자 개발업무 적응기200819 NAVER TECH CONCERT 07_신입 iOS 개발자 개발업무 적응기
200819 NAVER TECH CONCERT 07_신입 iOS 개발자 개발업무 적응기NAVER Engineering
 
[NEXT] Android 개발 경험 프로젝트 4일차 (Networking)
[NEXT] Android 개발 경험 프로젝트 4일차 (Networking)[NEXT] Android 개발 경험 프로젝트 4일차 (Networking)
[NEXT] Android 개발 경험 프로젝트 4일차 (Networking)YoungSu Son
 
CI in the Mobile World (한글번역)
CI in the Mobile World (한글번역)CI in the Mobile World (한글번역)
CI in the Mobile World (한글번역)DONGSU KIM
 
ant로 안드로이드 앱을 자동으로 빌드하자
ant로 안드로이드 앱을 자동으로 빌드하자ant로 안드로이드 앱을 자동으로 빌드하자
ant로 안드로이드 앱을 자동으로 빌드하자Sewon Ann
 
유니티3D 그리고 웹통신
유니티3D 그리고 웹통신유니티3D 그리고 웹통신
유니티3D 그리고 웹통신현욱 김
 
Vue 뽀개기 1장 환경설정 및 spa설정
Vue 뽀개기 1장 환경설정 및 spa설정Vue 뽀개기 1장 환경설정 및 spa설정
Vue 뽀개기 1장 환경설정 및 spa설정leejungwang
 
CoreDot TechSeminar 2018 - Session1 Park Jihun
CoreDot TechSeminar 2018 - Session1 Park JihunCoreDot TechSeminar 2018 - Session1 Park Jihun
CoreDot TechSeminar 2018 - Session1 Park JihunCore.Today
 
[170403 2주차]C언어 A반
[170403 2주차]C언어 A반[170403 2주차]C언어 A반
[170403 2주차]C언어 A반arundine
 
[부스트캠프 웹・모바일 7기 Tech Talk]고병학_WWDC 뭘 볼까
[부스트캠프 웹・모바일 7기 Tech Talk]고병학_WWDC 뭘 볼까[부스트캠프 웹・모바일 7기 Tech Talk]고병학_WWDC 뭘 볼까
[부스트캠프 웹・모바일 7기 Tech Talk]고병학_WWDC 뭘 볼까CONNECT FOUNDATION
 
Softcon_하재권_Only javascript의 하이브리드 앱서버 도전기
Softcon_하재권_Only javascript의 하이브리드 앱서버 도전기Softcon_하재권_Only javascript의 하이브리드 앱서버 도전기
Softcon_하재권_Only javascript의 하이브리드 앱서버 도전기hajaekwon
 

Similar to Jurano강의 lec1. AndroidAnnotations 시작하기 (20)

LetsSwift(강민규스피커,안정민서포터).pptx
LetsSwift(강민규스피커,안정민서포터).pptxLetsSwift(강민규스피커,안정민서포터).pptx
LetsSwift(강민규스피커,안정민서포터).pptx
 
20221131_레츠스위프트_2022_iOS개발에서_알아두면_좋은것들.pdf
20221131_레츠스위프트_2022_iOS개발에서_알아두면_좋은것들.pdf20221131_레츠스위프트_2022_iOS개발에서_알아두면_좋은것들.pdf
20221131_레츠스위프트_2022_iOS개발에서_알아두면_좋은것들.pdf
 
1일차 20140326
1일차 201403261일차 20140326
1일차 20140326
 
Sencha touch2-sdk-tools-window
Sencha touch2-sdk-tools-windowSencha touch2-sdk-tools-window
Sencha touch2-sdk-tools-window
 
웹 Front-End 실무 이야기
웹 Front-End 실무 이야기웹 Front-End 실무 이야기
웹 Front-End 실무 이야기
 
NHNNEXT 고등학생 창의체험 프로그래밍 실습
NHNNEXT 고등학생 창의체험 프로그래밍 실습NHNNEXT 고등학생 창의체험 프로그래밍 실습
NHNNEXT 고등학생 창의체험 프로그래밍 실습
 
구글앱엔진 스터디
구글앱엔진 스터디구글앱엔진 스터디
구글앱엔진 스터디
 
『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법
『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법
『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법
 
Welcome to Android Studio
Welcome to Android StudioWelcome to Android Studio
Welcome to Android Studio
 
[IoT] MAKE with Open H/W + Node.JS - 5th
[IoT] MAKE with Open H/W + Node.JS - 5th[IoT] MAKE with Open H/W + Node.JS - 5th
[IoT] MAKE with Open H/W + Node.JS - 5th
 
200819 NAVER TECH CONCERT 07_신입 iOS 개발자 개발업무 적응기
200819 NAVER TECH CONCERT 07_신입 iOS 개발자 개발업무 적응기200819 NAVER TECH CONCERT 07_신입 iOS 개발자 개발업무 적응기
200819 NAVER TECH CONCERT 07_신입 iOS 개발자 개발업무 적응기
 
[NEXT] Android 개발 경험 프로젝트 4일차 (Networking)
[NEXT] Android 개발 경험 프로젝트 4일차 (Networking)[NEXT] Android 개발 경험 프로젝트 4일차 (Networking)
[NEXT] Android 개발 경험 프로젝트 4일차 (Networking)
 
CI in the Mobile World (한글번역)
CI in the Mobile World (한글번역)CI in the Mobile World (한글번역)
CI in the Mobile World (한글번역)
 
ant로 안드로이드 앱을 자동으로 빌드하자
ant로 안드로이드 앱을 자동으로 빌드하자ant로 안드로이드 앱을 자동으로 빌드하자
ant로 안드로이드 앱을 자동으로 빌드하자
 
유니티3D 그리고 웹통신
유니티3D 그리고 웹통신유니티3D 그리고 웹통신
유니티3D 그리고 웹통신
 
Vue 뽀개기 1장 환경설정 및 spa설정
Vue 뽀개기 1장 환경설정 및 spa설정Vue 뽀개기 1장 환경설정 및 spa설정
Vue 뽀개기 1장 환경설정 및 spa설정
 
CoreDot TechSeminar 2018 - Session1 Park Jihun
CoreDot TechSeminar 2018 - Session1 Park JihunCoreDot TechSeminar 2018 - Session1 Park Jihun
CoreDot TechSeminar 2018 - Session1 Park Jihun
 
[170403 2주차]C언어 A반
[170403 2주차]C언어 A반[170403 2주차]C언어 A반
[170403 2주차]C언어 A반
 
[부스트캠프 웹・모바일 7기 Tech Talk]고병학_WWDC 뭘 볼까
[부스트캠프 웹・모바일 7기 Tech Talk]고병학_WWDC 뭘 볼까[부스트캠프 웹・모바일 7기 Tech Talk]고병학_WWDC 뭘 볼까
[부스트캠프 웹・모바일 7기 Tech Talk]고병학_WWDC 뭘 볼까
 
Softcon_하재권_Only javascript의 하이브리드 앱서버 도전기
Softcon_하재권_Only javascript의 하이브리드 앱서버 도전기Softcon_하재권_Only javascript의 하이브리드 앱서버 도전기
Softcon_하재권_Only javascript의 하이브리드 앱서버 도전기
 

Jurano강의 lec1. AndroidAnnotations 시작하기

  • 1. AndroidAnnotations 시작하기 작성자 – 서주리 최종 수정일: 151202
  • 2. 목차 1. AndroidAnnotations 소개 2. AndroidAnnotations 목표 3. AndroidAnnotations 샘플 코드 살펴보기 4. AndroidAnnotations 환경 설정 하기 5. AndroidAnnotations 시작하기
  • 3. 소개 • Androidannotations 란 무엇일까요? Fast Android Development. Easy maintenance. 빠른 Android 개발과 쉬운 유지보수를 위한 오픈 소스 프레임 워크 ! 출처 - https://github.com/excilys/androidannotations
  • 4. 목표 로버트 C. 마틴 (Robert C. Martin) Clean code의 저자 曰 : “코드 읽기와 쓰기에 소요되는 시간의 비율은 10:1을 훨씬 넘는다. 그러므로 읽기 쉽게 만든 것은 더 쓰기 쉽다.” (원문 - The ratio of time spent reading [code] versus writing is well over 10 to 1 [therefore] making it easy to read makes it easier to write.) AndroidAnnotations는 명확한 의도와 간단한 코드가 그 목표를 달성하는 가장 좋은 방법이라는 것을 목표로 하고 있다.
  • 5. 목표 • 어떻게?! Java annotations 를 사용! 컴파일 시에 generated code를 생성하여 개발자들이 자신의 의도를 분명히 나타낼 수 있도록! (자세한건 뒤에서^_^)
  • 6. 목표 AndroidAnnotations의 특징 • Dependency injection : inject views, extras, system services, resources, ... • 간결화 된 thread 모델 : UI thread 에서 또는 background thread 에서 실행되도록 할 수 있다. • 이벤트 바인딩 : 이벤트를 처리 할 때 더 이상 보기 안 좋은 리스너 클래스들을 만들 필요가 없다. • REST 클라이언트 : 클라이언트 인터페이스를 생성, AndroidAnnotations는 구현을 생성한다. • AndroidAnnotations이 컴파일 시에 서브 클래스를 생성 할 때, 어떻게 작동하는지 확인하기 위해 코드를 확인할 수 있다. • runtime 성능에 영향 없이, 150kb보다 더 적은 용량으로 이러한 장점들을 제공한다. 원문 - https://github.com/excilys/androidannotations/wiki
  • 8. 샘플 코드 가장 기본적인 @EActivity annotation을 적용한 모습이다. 코드가 훨씬 간결해짐을 알 수 있다. 적용 전 적용 후
  • 9. 샘플 코드 뒤에서 나올 내용이니 지금은 간단한 모양만 보면 된다. ^_^ 사용 예를 보았으니 AndroidAnnotations를 사용하기 위한 환경 설정을 시작해봅시다!
  • 10. 환경 설정 https://github.com/excilys/ androidannotations/wiki/Configuration 위의 주소로 들어가면 여러 환경에서의 사용법이 문서화 되어있다. 해당 강의에서는 Android Studio를 이용하기 때문에 Gradle 을 기준으로 진행을 하도록 하겠습니다^_^
  • 11. 환경 설정 1. Android Gradle 빈 프로젝트를 생성한다. 2. build.gradle 를 아래와 같이 setting 한다. (Top-level build file) Android plugin의 최신버전으로 ! Android-apt plugin의 최신버전으로 !
  • 12. 환경 설정 3. build.gradle 를 아래와 같이 setting 한다. (Application build file)
  • 13. 환경 설정 4. Annotation processor 설정 File → Other Settings → Default Settings...
  • 14. 환경 설정 Build, Execution, Deployment -> Compiler -> Annotation Processor 여기에 체크! 4. Annotation processor 설정
  • 15. 환경 설정 5. 이제 사용하면 된다~!
  • 16. 시작하기 환경 설정이 모두 되었다면 이제 시작하면 된다! 1. 새로운 Activity를 생성한다! (또는 이미 존재하는 Activity를 사용해도 된다) 2. Activity에 @EActivity, @ViewById, @Click 을 사용한다! - 아래의 예제를 보고 따라해보자^_^
  • 17. 시작하기 3. 파일을 저장한다. (컴파일을 하고 우리가 만든 Activity의 이름 뒤에 '_'가 붙은 이름의 서브 클래스를 generate 한다. "MyActivity"의 generate된 서브클래스 이름은 "MyActivity_") 4. Manifest에 MyActivity 대신에 MyActivity_를 등록한다. 이렇게~! AndroidAnnotations Activity에 적용하기 끝 ! 참 쉽죵 ^0^
  • 18. 시작하기 덧 1, Android에서 Activity를 시작할 때 아래와 같이 해왔을 것이다! 그러나 AndroidAnnotations를 사용한다면 반드시 MyListActivity_가 호출되어 시작되어야 한다! 왜??
  • 19. 시작하기 덧 1, AndroidAnnotations는 Annotation이 적용된 각각의 Activity마다 서브클래스를 generate 한다. generate 이 서브 클래스는 super를 부르는 것을 위임하기 전에 몇 가지 메소드들(ex. onCreate(), ...)을 overrinding하여 사용자의 Activity에 동작을 추가한다.
  • 20. 시작하기 덧 1, 그러므로! 우리는 항상 Android Manifest에 Activity 이름 뒤에 '_' 접미사를 붙여서 등록해 사용해야 한다! ^_^ 바로 이렇게 같은 패키지, 같은 이름에 그냥 _ 접미사만 붙이면 된다. 만약 AndroidManifest.xml에 등록을 깜빡해도 AndroidAnnotations가 알려주니 걱정말자~ ^_^
  • 21. 시작하기 앗! 제대로 따라했는데 build가 안된다?! 혹시 Not find my class ( ...MyActivity_ ) 라며 문제가 발생했나요..?! generate가 아직 안된 경우 ! 프로젝트를 Clean 해주면 된다~! [ Build -> Clean Project ] 덧 2,
  • 22. 시작하기 AndroidAnnotations는 generate 된 소스 폴더로부터 반복적으로 이동하여 AndroidManifest.xml 파일을 찾는다. 덧 3, 프로젝트 구조에 적합하지 않는 경우 프로세서에 androidManifestFile 옵션을 제공함으로써 AndroidManifest.xml의 절대 경로를 지정할 수 있다! • javac - 옵션 추가: -AandroidManifestFile=/path/to/AndroidManifest.xml • Eclipse - "Properties > Java Compiler > Annotation Processing"으로 가서 Processor options에서 add • 다른 빌드 시스템, IDE - customization page를 살펴보길