태그 보관물: Android

유용한 안드로이드 스튜디오 플러그인 소개

이 글에서는 안드로이드 스튜디오를 사용하면서 안드로이드 앱 개발에 유용한 플러그인을 몇 개 살펴본다. 여기에서 살펴보는 플러그인은 개인적으로 즐겨 사용하는 것으로, 개발시간을 단축하고 안드로이드 스튜디오를 더 편리하게 사용하도록 한다.

1. CodeGlance

이 플러그인은 서브라임 텍스트(Sublime Text)의 우측에 볼 수 있는 코드의 미니 맵을 편집기에 추가하는 플러그인이다. 플러그인 프로젝트에 밝은 테마와 어두운 테마 모두를 지원한다고 나와 있다.
– 플러그인 주소 : https://plugins.jetbrains.com/plugin/7275-codeglance
– 프로젝트 주소 : https://github.com/Vektah/CodeGlance

1.1 설치방법
File > Settings… > IDE Settings > Plugins > Browse repositories 에서 CodeGlan을 검색해서 설치한다.

1.2 사용방법
설치를 완료하고 재시작하면, 편집기 우측에 코드의 미니맵이 나타나는 것을 확인할 수 있다.

2. WIFI ADB ULTIMATE

이 플러그인은 USB로 안드로이드 기기에 연결하지 않고도, 같은 네트워크(WIFI)를 사용하는 안드로이드 기기에 ADB로 연결을 지원하는 도구이다.

플러그인 주소 : https://plugins.jetbrains.com/plugin/9207-wifi-adb-ultimate
프로젝트 주소 : https://github.com/huazhouwang/WIFIADB

2.1 설치방법
File > Settings… > IDE Settings > Plugins > Browse repositories 에서 wifi를 검색해서, 화면에 선택된 플러그인을 설치한다.

2.2 사용방법
안드로이드 스튜디오 우측에 “WIFI ADB ULTIMATE”을 클릭하면 아래의 화면이 나온다. 이 화면에서 안드로이드 기기의 IP를 확인하고 초록색 버튼을 클릭하면 연결된 원격 기기에 기기가 나타나는 것을 확인할 수 있다.

3. Parcelable code generator

이 플러그인은 클래스의 변수를 기준으로 Parcelable 인터페이스 구현 코드를 생성하는 도구이다.

플러그인 주소 : https://plugins.jetbrains.com/plugin/7332-android-parcelable-code-generator
프로젝트 주소 : https://github.com/mcharmas/android-parcelable-intellij-plugin

3.1 설치방법
File > Settings… > IDE Settings > Plugins > Browse repositories 에서 parcel를 검색해서 아래 화면에 선택된 플러그인을 설치한다.

3.2 사용방법
아래의 이미지에서 사용하는 방법을 쉽게 알 수 있다. 편집기에서 마우스 우측 클릭 > Generate… > Parceable을 선택해서 코드를 생성한다.

4. Android Material Design Icon Generator Plugin

이 플러그인은 머터리얼 디자인 아이콘을 앱에서 사용하기 쉽게 도와주는 도구이다.

플러그인 주소 : https://plugins.jetbrains.com/plugin/7647-android-material-design-icon-generator
프로젝트 주소 : https://github.com/konifar/android-material-design-icon-generator-plugin

4.1 설치 방법
File > Settings… > IDE Settings > Plugins > Browse repositories 에서 material을 검색해서 설치한다.

4.2 사용방법
File > New > Material Design Icon을 선택해서 아이콘을 생성할 수 있다.

5. Findbugs

이 플러그인은 즐겨 사용하는 정적 코드 분석 도구로, 안드로이드 스튜디오에서도 쉽게 사용할 수 있다.

플러그인 주소 : https://plugins.jetbrains.com/plugin/3847-findbugs-idea
프로젝트 주소 : http://andrepdo.github.io/findbugs-idea/

5.1 설치 방법
File > Settings… > IDE Settings > Plugins > Browse repositories 에서 findbug를 검색해서 설치한다.

5.2 사용 방법
프로젝트의 모듈로 이동해서 마우스 우측을 선택해서, FindBugs 메뉴를 선택해서 정적 분석을 시작한다.

아래의 화면은 룰에 위반되는 사례를 FindBugs가 분석한 항목들에 대한 화면이다. 이 개별 항목들이 반드시 버그가 아니지만, 그래도 확인해볼 필요가 있겠다.

6. ColorManager

이 플러그인은 안드로이드 스튜디오의 리소스 파일에서 컬러 색을 좀 더 잘 보여주는 도구이다.

플러그인 주소 : https://plugins.jetbrains.com/plugin/8583-android-color-manager
프로젝트 주소 : https://github.com/shiraji/color-manager

6.1 설치방법
File > Settings… > IDE Settings > Plugins > Browse repositories 에서 color mana를 검색해서 설치한다.

6.2 사용방법
안드로이드 프로젝트 리소스 폴더에 있는 colors.xml을 열고, 우측의 탭에서 “Color Manager”를 선택하면 아래의 화면을 볼 수 있다. 이 플러그인이 머터리얼 컬러의 종류와 색을 화면에 다 보여주기 때문에, 색을 확인하기 위해서 구글 머터리얼 사이트에 접속하지 않아도 된다.

7. Android API Level Plugin

이 플러그인은 안드로이드 API 레벨과 버전 이름을 보여주는 도구이다. 여기에서 살펴본 플러그인들 중에 가장 간단하지만 아주 유용하게 사용될 수 있다.

플러그인 주소 : https://plugins.jetbrains.com/plugin/8121-android-api-level
프로젝트 주소 : https://github.com/droibit/androidapilevel-plugin

7.1 설치방법
File > Settings… > IDE Settings > Plugins > Browse repositories 에서 “Android API Level”를 검색해서 설치한다.

7.2 사용방법
툴바에 안드로이드 아이콘이 한개 추가된 것을 알 수 있다. 아래와 같이 이 버튼을 클릭하면 안드로이드 API의 레벨과 버전등을 보여주는 화면을 아래와 같이 보게 된다.

이상 안드로이드 앱을 개발하면서 유용하게 사용하는 플러그인 몇 개를 살펴봤다. 이 플러그인을 사용해서 개발에 도움이 되었으면 좋겠다.

앱(APK) 크기를 줄이는 또 다른 방법

앱 크기를 줄이는 팁으로 사용하지 않는 이미지, Proguard 사용 등의 여러 가지 방법이 있다. 이 방법들 모두는 결국 zip 포맷으로 패키징되는 파일을 개수나 크기를 줄여서 .apk 파일의 크기를 줄이는 것이다. 이 글에서는 .apk 파일이 포함하는 또 다른 파일인 텍스트 파일을 제거해서 앱의 크기를 줄이는 방법을 살펴보자. 텍스트 파일이라서 앱 크기에 큰 영향을 미치지는 않지만, 그래도 약간의 크기를 줄일 수 있는 또 다른 방법으로 알아두면 좋겠다.

이 방법은 안드로이드 스튜디오에서 빌드와 패키징을 담당하는 툴인 그레들의 빌드파일(build.gradle)에 packagingOptions{} 영역에 패키징시에 제외할 파일을 기술하는 것이다. 이 설정은 아래와 같이 동일 파일의 중복으로 인한 에러를 해결하는데 또한 사용한다.

Error:Execution failed for task ':app:transformResourcesWithMergeJavaResForDebug'.
> com.android.build.api.transform.TransformException: com.android.builder.packaging.DuplicateFileException: Duplicate files copied in APK META-INF/DEPENDENCIES

그래서, 위 에러를 해결하기 위한 최소의 설정은 다음과 같다.

android {
    packagingOptions {
        exclude 'META-INF/DEPENDENCIES'
        exclude 'META-INF/LICENSE'
    }
}

컴파일한 앱의 크기를 확인해 보면, 크기가 9,154,124 바이트이다.

다음으로 어느 파일을 제외할 수 있는지 살펴보자. 안드로이드 스튜디오에서 Build > Analyze Apk 로 위의 파일을 선택하면 아래의 화면을 볼 수 있다.

위 화면에서 체크한 파일들을 앱 패키징시에 제외시키도록 packageOptions에 추가하자. 그리고 일반적으로 많이 사용하는 텍스트 파일도 역시 미리 포함시켜 넣어서 아래와 같이 설정한다.

android {
	packagingOptions {
	    exclude 'META-INF/DEPENDENCIES.txt'
	    exclude 'META-INF/DEPENDENCIES'
	    exclude 'META-INF/dependencies.txt'
	    exclude 'META-INF/LICENSE.txt'
	    exclude 'META-INF/LICENSE'
	    exclude 'META-INF/license.txt'
	    exclude 'META-INF/LGPL2.1'
	    exclude 'META-INF/ASL2.0'
	    exclude 'META-INF/NOTICE.txt'
	    exclude 'META-INF/NOTICE'
	    exclude 'META-INF/notice.txt'
	    exclude 'META-INF/MANIFEST.MF'
	    exclude 'META-INF/manifest.mf'
	    exclude 'META-INF/MANIFEST'
	    exclude 'META-INF/manifest'

	    exclude 'META-INF/CHANGES'
	    exclude 'META-INF/README'
	    exclude 'META-INF/NOTES.TXT'

	    exclude 'licenses/thoughtworks.TXT'
	    exclude 'licenses/extreme.indiana.edu.license.TXT'
	    exclude 'licenses/javolution.license.TXT'
	}
}

이제 다시 패키징한 파일을 살펴보자. 필요 없는 텍스트 파일들을 제외하고, 컴파일한 파일의 크기는 9,137,085 바이트이다.

이 과정으로 앱의 크기가 17,000 바이트를 줄일 수 있다. 이 과정으로 메가 바이트 단위로 앱의 크기를 줄이기는 힘들겠지만, 약간이나마 크기를 줄이는데 기여할 수 있다.

안드로이드 7.0 AsyncTask 개선점

안드로이드 7.0 누가(NOUGAT)에서 AsyncTask의 개선 점을 살펴보자. 안드로이드 6.0 AsyncTask 소스와 7.0 소스의 차이를 확인(Diff)해 보면, 아래 화면에서 보는 2가지 정도의 차이가 있다. 차이를 살펴보면 다음과 같다.

1. 작업을 처리하는 스레드의 상수 수정.

코드를 살펴보면, CORE_POOL_SIZE와 KEEP_ALIVE의 값이 수정된 것을 확인할 수 있다. CORE_POOL_SIZE가 주석에서 보다시피 2~4개 유지하게 변경했고, 작업 처리 스레드의 종료시기를 늦추는 것을 알 수 있다.

2. ThreadPoolExecutor 수정.

ThreadPoolExecutor는 작업을 처리하는 여러 스레드를 유지하고, 작업을 큐로 유지하는 디스패처이다. 아래는 위에서 변경한 상수로 ThreadPoolExecutor를 생성하는 예제로, 작업이 추가되지 않는다면 30초 뒤에 스레드 풀의 스레드를 종료시킨다.

안드로이드 프로젝트 빌드 유지(CI)를 위한 팀시티(TeamCity) 설정(2/2)

이 글은 안드로이드 프로젝트의 빌드를 유지하는 세 개의 글 중에 세 번째이다.

이 글은 팀시티가 저장소의 소스를 내려받고, 안드로이드 프로젝트 빌드를 완료하면, 등록된 계정에게 알려주도록 알람을 설정하는 내용이다. 이 글에서는 이메일과 메신저(Jabber 기반) 계정으로 알림을 송/수신 하는 설정, 빌드 파일(apk)을 다운로드 받게 설정, 그리고 수신하는 내용(템플릿)을 수정하는 방법에 대해서 살펴보자.

1. 알람 발송 계정 설정

구글의 서비스를 사용한다고 가정하고, 구글의 이메일과 메신저로 알림을 받도록 설정해보자.
구글 메일과 메신저 서비스(GTalk)는 아래 링크의 설정을 참고하면 된다.
https://confluence.jetbrains.com/display/TCD10/Setting+up+Google+Mail+and+Google+Talk+as+Notification+Servers
설정 메뉴는 Administration > Server Administration > Email, Jabber Notifier 메뉴에서 확인할 수 있다.
– 이메일 설정 화면
setting_noti_jabber

– 메신저(Jabber) 설정 화면
setting_noti_gmail

이제 알람을 발송할 계정 설정을 완료했다.

2. 알람 수신 계정 설정

다음으로, 알람을 받는 계정의 Email과 Jabber 계정을 설정해 보자. Administration > Users 에서 알람을 받을 계정을 선택한다. 우측의 “Watched Builds and Notifications” 에 Email과 Jabber Notifier를 선택한다. 그리고, Add New Rule을 선택하면 아래와 같은 화면을 볼 수 있다. 이 화면에서 알람을 받을 프로젝트의 빌드를 선택하고, 빌드의 상태인 “Build fails”과 “Build is successful” 을 선택하고 저장한다.
setting_jabber setting_email

이제 Email과 Jabber로 알람을 받을 준비가 완료됐다.

3. 빌드 파일 설정

빌드한 apk 파일을 다운로드 할 수 있게 산출물(Artifact)로 설정해야 한다. 아래 설정은 Projects > Build > General Settings에 아래와 같은 설정이 있고, Artifact paths에 apk 파일을 설정한다. 이제 빌드한 파일을 배포할 준비가 되었다.
apk_path_settings

4. 수신 내용 변경

이제 위에서 설정한 이메일과 메신저를 사용해서 소스 빌드에 대한 이벤트(성공/실패)를 수신 받게 된다. 기본적으로 수신받는 화면은 아래와 같다.
jabber_notification_alert email_notification_alert

위에서 보는 이메일이나 메신저의 알림 내용을 추가해서 조금 더 편리하게 알림을 사용할 수 있다. 아래에서 빌드된 apk 파일을 내려받기 쉽게 링크를 추가해 보자. 팀시티의 알림 템플릿은 아래의 위치에서 확인할 수 있고, 알림의 형태에 따라서 다음과 같이 나눠져 있다.

C:\TeamCityData\config\_notifications\email\build_successful.ftl
C:\TeamCityData\config\_notifications\jabber\build_successful.ftl

위에서 email 폴더에 있는 build_successful.ftl 파일을 수정해 보자. 우선 프로젝트의 빌드 파일의 위치를 확인해 보면 다음과 같다.

<#-- MODIFICATION START -->
  <#if buildType.externalId = "Nbarcode">    
    Click here to download APK.
      
  </#if>
<#-- MODIFICATION END -->

팀시티의 10.x 버전의 다운로드 위치는 위의 URI 형태를 띄고 있다. 이제 이 내용을 템플릿 파일의 적절한 위치에 복사를 하고 저장한다.

  <@common.build_comment build/>
  
  <#-- MODIFICATION START -->
  <#if buildType.externalId = "Nbarcode">
    
    Click here to download APK.
    
  </#if>
<#-- MODIFICATION END -->
  
  <@common.build_changes var.changesBean/>

이제 저장하고 소스를 커밋하면 아래와 같이 이메일과 메신저로 알람을 받게 된다.
email_notification_alert jabber_notification_alert

* Reference
– TeamCity에서 안드로이드앱 배포하기

안드로이드 프로젝트 빌드 유지(CI)를 위한 팀시티(TeamCity) 설정(1/2)

이 글은 안드로이드 프로젝트의 빌드를 유지하는 세 개의 글 중에 두 번째이다.

안드로이드 프로젝트를 팀시티에서 빌드하는데 필요한 설정을 살펴보자. 이 글에서는 프로젝트 연결, 빌드 설정, 트리거(Triggers) 설정, 그리고 빌드 확인의 과정으로 살펴보겠다.

1. 프로젝트 연결

프로젝트 연결은 3가지 형태를 지원한다. 저장소 연결(Repository Url), 깃헙(Github), 그리고 비트버킷(Bitbucket)을 지원한다. 여기에서는 저장소 연결을 사용해서 프로젝트에 연결한다.
project_connection_01 project_connection_02
위 우측 화면은 예제로 사용하는 프로젝트의 소스 저장소인 비트버킷을 연결하는 화면이다. 이곳에서 지원하는 연결 프로토콜로 http(s)://, svn://, 그리고 git:// 를 지원하는 것을 알 수 있다. 다음으로, 프로젝트의 “Version Control Settings”에서 소스의 “Check out”할 위치를 변경한다.
version_control_settings
여기에서 사용하는 프로젝트 이름은 Nbarcode이고, 프로젝트 소스의 Check out 위치는 C:\TeamCityProjects\Nbarcode 를 사용한다.

2. 빌드 설정

이제 소스를 빌드하는데 필요한 설정을 알아 보자. 빌드 설정은 “Build Steps” 메뉴를 선택해서 시작할 수 있다. “Auto-detect build steps” 버튼을 클릭해서 빌드 단계를 인식시켜 보자. 아래에서는 Clean, Release, 그리고 Rename 단계로 살펴보자.

2.1 Clean 단계

이 단계는 프로젝트 빌드 이전 단계로, 이전에 빌드에 사용한 각종 파일들을 삭제한다. 이 단계에 필요한 설정은 아래와 같다.

Runner Type : Gradle
Step Name : Clean
Gradle tasks: clean
Working directory: C:\TeamCityProjects\Nbarcode
Gradle Wrapper: 체크
JDK : 사용하는 자바 버전으로 설정한다.

build_step_02

2.2 Release 단계

이 단계에서 프로젝트를 빌드한다. 이전에 빌드에 사용한 각종 파일들을 삭제한다. “Build Configuration Settins” > “Build Step: Gradle” > “+ Add build step”을 클릭해서 빌드 단계를 추가한다. 이 단계에 필요한 설정은 아래와 같다.

Runner type : Gradle
Step Name : Release
Gradle tasks: assembleRelease
Working directory: C:\TeamCityProjects\Nbarcode
Gradle Wrapper: 체크
JDK : 사용하는 자바 버전으로 설정한다.

이제 우측 상단에 있는 “Run” 버튼을 클릭해서 위 단계를 시작해 보자. 이제 아래와 같이 apk 파일이 빌드된 것을 확인할 수 있다.
build_apk_result

2.3 Rename 단계

이 단계에서는 apk 파일 이름을 변경해서, 버전을 명확하게 알 수 있게 파일 이름을 변경하는 단계이다. 이 단계에 필요한 설정은 아래와 같다.

Runner type : Command Line
Step Name : Assemble Release
Working directory: C:\TeamCityProjects\Nbarcode\app\build\outputs\apk
Run : Executable with parameters
Command executable: rename
Command parameters: app-release.apk app-release-%build.counter%.apk

build_step_03

3. 트리거 설정

팀시티로 지속 빌드를 하는데 필요한 설정으로 VCS에 소스가 커밋되면, 빌드를 하는 과정이 필요하다. “Build Configuration Settings” > “Triggers” 메뉴에서 소스 커밋의 트리거 설정을 변경할 수 있다.
trigger
위 이미지는 기본 설정의 트리거 화면이다. 이 화면을 보면 소스코드 코밋이 확인되면 빌드를 시작한다는 것을 알 수 있다. 추가로 Quiet Period 설정에서 일정 시간 뒤에 빌드하도록 설정할 수 있다.

4. 빌드 확인

이제 소스를 커밋해서 빌드가 실행되는 것을 확인해 보자. 소스를 커밋하면 팀시티가 소스가 변경된 것을 확인하고, 소스를 받고, 빌드(위 2.1, 2.2, 2.3의 과정)를 한다. 이 과정이 완료되면 아래 화면에서 보는 apk 파일을 확인할 수 있다.
build_step_04

안드로이드 프로젝트를 지속적으로 빌드할 수 있는 환경을 구성해 봤다.

* Reference
TeamCity에서 안드로이드앱 배포하기