안드로이드 프로젝트의 필수 파일

안드로이드 스투디오에서 프로젝트를 생성(File > New > New Project…)하면 모듈을 포함해 아래와 같이 많은 파일이 만들어진다.

androidstudio_default_folder

다른 사람에게 프로젝트를 배포해야한다면, 어떤을 보내야 할까? 생성된 모든 파일을 다 보낼까? 물론, 다 보내도 프로젝트는 전달할 수 있다. 그렇지만 최소화를 원한다면 아래 파일들만 보내도 된다.

androidstudio_default_folder2

배포자는 파란색의 폴더나 파일들을 삭제하고, 배포할 수 있다. 모듈에서 사용하는 라이브러리가 없거나 프로가드를 적용하지 않은 프로젝트라면 /libs 폴더나 proguard-rules.pro 파일도 지울 수 있다.

배포 받은 사람은 안드로이드 스투디오에서 프로젝트 열기(File > Open…)를 통해 /GradleProject 폴더를 프로젝트로서 열거나, 모듈을 추가(File > New > Import Module…) 메뉴를 통해 기존의 프로젝트에 /app 폴더를 모듈러서 추가 할 수 있다. 그 과정에서 빌드 환경 조성을 위해 안드로이드 스투디오가 팝업을 띄울 수 있다.

명령창에서 빌드를 해볼 수도 있다. 그래들이 이미 설치되어 있고, path도 잡혀있다면

>gradle build

명령어 만으로 빌드가 되는 것을 확인할 수 있다.

그 밖에

일부 설정값(proxy 서버 주소라던가)을 함께 배포해야 한다면 gradle.properties 파일도 포함하자.

systemProp.http.proxyHost=1.2.3.4
systemProp.http.proxyPort=80

SDK 경로를 함께 배포해야한다면, local.properties 파일을 함께 배포하자.

sdk.dir=C\:\\Android\\sdk

 

안드로이드 스투디오의 안드로이드 SDK 매니저

안드로이드 스투디오가 1.3.x로 올라오면서 안드로이드 SDK 매니저가 Default Settings > Appearance & Behavior > System Settings > Android SDK 안으로 포함되었다. 내장된 것은 마음에 들지만, 다음과 같은 에러를 만나는 분도 있을 수 있다.

오전 10:43:21 Throwable: Failed to fetch URL https://dl.google.com/android/repository/addons_list-2.xml, reason: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

이 때, 강제로 http로 데이터를 가져오기 위해 기존의 안드로이드 SDK 매니저의 옵션에서 제공하던 “Force https://… sources to be fetched using http://…” 기능이 사용하려해도 내장된 SDK 매니저에는 기능이 없다.

android_studio_update

그 때는 다음과 같이 SDK Update Sites에 손으로 url을 추가해주자. 기존 url의 스키마를 https에서 http로 바꾸기만 하면 된다.

그 밖에

위와 같은 설정은 1회성이니, 안드로이드 스투디오가 재 실행되면 사라지는 것에 주의하자.

매 번 추가하는 것이 귀찮다면, 내장된 SDK 매니저 화면의 하단에 있는 ‘Launch Standalone SDK Manager’ 버튼을 눌러서 안드로이드 SDK에 내장된 기존의 매니저를 호출해도 된다.

SDK 매니저에서 관리하는 Extras 부분을 보면, ‘Android Support Repository’와 ‘Android Support Library’가 있다. 둘의 차이를 요약하자면, Repository는 안드로이드 스투디오를 위한 것이고, Library는 이클립스와 같은 기존의 개발환경을 위한 것이다.

더 쉬운 방법이 생겼다. 안드로이드 스투디오를 최신으로 업데이트하는 것이다. 안드로이드 스투디오 1.4부터 내장된 Android SDK Manager에서도 “https://… sources to be fetched using http://…” 옵션을 체크박스로 지원한다.

참고

이클립스에서 안드로이드 스투디오로 이동하기

2015년 3월 현재 안드로이드 개발자에게는 선택할 수 있는 IDE가 아래와 같이 3종류이다.

  • ADT(Android Developer Tools, 이클립스 기반)
  • 인텔리제이 커뮤니티 에디션(Intelli J 무료 버전)
  • Android Studio(Intelli J 기반의 무료 IDE)

하지만, 구글 공식 IDE는 Android Studio이다. 아직, ADT를 다운로드 받을 수 있지만 이전 글처럼 지원이 종료되었고, Android Studio가 Develop > Tools의 첫 페이지에 있는 것과 달리 ADT페이지는 이미 저 안쪽에 숨겨져 있고 Android Studio 프로젝트로 전환하는 방법이 먼저 보이며, 다운로드 받는 링크를 찾기는 이미 힘들다.

이 소식을 알자마자, 열혈개발자인 나는 구글의 제안에 따라 Android Studio를 사용하기로 결심해버렸다. 내 주변 개발자들은 아직도 ADT를 쓰고 있지만, 나만 바꾸면 되지 않겠나?

이클립스, 인텔리제이 그리고 안드로이드스투디오

아마도 내 마음과 달리 잘 안될 수 있다. 위 세가지 IDE가 지원하는 안드로이드 프로젝트 타입이 다르기 때문이다. 각각 어떤 안드로이드 프로젝트 타입을 지원할까. 안드로이드 스투디오 이동을 염두하여 중요한 프로젝트만 열거해보자.

  • 이클립스
    • 이클립스 프로젝트
  • 인텔리제이
    • 인텔리제이 프로젝트
    • (Gradle로 빌드되는) 인텔리제이 프로젝트
  • 안드로이드 스투디오
    • 인텔리제이 프로젝트
    • Gradle 기반 안드로이드 프로젝트(위의 Gradle을 빌드스크립트로만 쓰는 경우와는 다름)

위 내용만 보면, 이클립스 프로젝트를 안드로이드 스투디오에서 잘 import 해서 쓰면 되겠지 싶다. 하지만 안드로이드 스투디오에서 지원하는 프로젝트 종류에는 크게 두가지 문제가 있다.

  • 안드로이드 스투디오에서는 새 인텔리제이 안드로이드 프로젝트를 만들 수 없고, 열 수만 있다.
  • 안드로이드 스투디오에서 이클립스나 인텔리제이 기반 안드로이드 프로젝트를 Gradle 기반의 안드로이드 프로젝트로 import할 때 폴더구조가 완전히 바뀐다.

위와 같은 제약으로 인해, 팀 내 혼자서 안드로이드 스투디오로 이동하면 다른 IDE(특히 이클립스)를 사용하는 개발자와 같은 VCS를 쓸 수가 없다.

그럼 어떻게 IDE를 변경해야 하나?

먼저 개인 개발자라면, 그냥 바꾸면 된다. 폴더 구조가 바뀌는 것은 번거롭지만 한번만 하면 되니 어쨌든 상관 없다.

같은 프로젝트를 여러사람과 개발하고 있다면 좀 머리아프다.  아래와 같이 정리할 수 있다.

  • 이쯤되니 머리가 아프다. 그냥 ADT 쓴다. (좋은 생각이다.)
  • 인텔리제이에서는 이클립스의 폴더구조를 바꾸지 않고도, 안드로이드 프로젝트를 만들 수 있다. 게다가, 안드로이드 스투디오의 좋은 기능들을 대부분 지원하고 있다. 그러므로, 안드로이드 스투디오 대신에 인텔리제이 커뮤니티 에디션(무료)를 사용하고, 프로젝트 파일(.iml)파일은 로컬에만 두고 쓴다.
  • ‘가려면 안드로이드 스투디오로 가야지 무슨 인텔리제이냐’라고 생각한다면, 인텔리제이와 안드로이드 스투디오를 모두 사용하는 방법을 생각할 수 있다. 이클립스 프로젝트를 인텔리제이에서 import한 후에(즉, 인텔리제이 프로젝트로 변환), 이를 안드로이드 스투디오에서 열면 된다. 안드로이드 스투디오에서는 새 인텔리제이 프로젝트를 만들 수 없을 뿐 열 수 있기 때문이다. 물론, 모듈(이클립스의 프로젝트와 같은 개념의 단어)을 추가할 때마다 인텔리제이를 열어야겠지만,  역시 나만 조심해서 쓰면 된다.
  • 마지막 방법은 어쩌면 쉬울 수 있다. 일단, 모두 퇴근할 때까지 기다린 후에 이클립스 프로젝트를 안드로이드 스투디오를 통해 Gradle 기반 프로젝트로 변환(폴더구조를 바꾸어 사본 프로젝트를 만들어준다.)한 후에 이를 VCS에 올리고 집에 간다. (조금 더 배려하고 싶다면, 다른 개발자들의 컴퓨터에 안드로이드 스투디오를 설치해줄 수 있다.)

마지막 방법은 물론 농담이다. 위 방법들을 보면 알겠지만, 팀내에서 혼자서만 안드로이드 스투디오로 IDE를 바꾸기는 어렵다. 물론 .gradle 파일을 고쳐 볼 수도 있겠지만, 안드로이드 스투디오에서 제안하는 구조와 방법들로는 어렵다. 너무 무리한 변경이 아니었나도 싶지만, 일단 옮기고 나면 분명 장점이 있다. 그러니, 안드로이드 스투디오로 옮길 때에는 팀 내 의견을 조율하여 함께 진행하는 것이 정답이다. 

그 밖에 사소하지만 큰 문제들

인텔리제이는 많은 플러그인을 제공한다. 단, 프로페셔널 버전(유료)에 한해서다. 인텔리제이 커뮤니티 에디션(무료)이나 안드로이드 스투디오의 경우, 자신이 사용하는 형상관리 시스템(VCS)과 연동이 되는지 꼭 확인해야한다. 현재 안드로이드 스투디오에서 연동이 가능한 대표적인 형상관리 시스템은 다음과 같다.

  • Git
  • Subversion(SVN)
  • CVS
  • Mercurial

지원되지 않은 대표적인 형상관리 시스템은 아래와 같다.

  • Perforce
  • Clear Case

참고로, Perforce 같은 경우는 무료 플러그인이 한참 개인 개발자에 의해 만들어지고 있으나 만족스럽지 않다.

Error:failed to find Build Tools revision 19.1.0

Error:failed to find Build Tools revision 19.1.0
Install Build Tools 19.1.0 and sync project

Android Studio 에서 module을 import하는 중에 위와 같이 build tools를 새로 설치하라는 에러가 났다면, 가이드대로 build-tool 설치한 후에  다시 import를 하자.

‘상위버전(내 경우는 21.1.2)이 설치되어 있는데 하위버전(19.1.0)이 필요한가?’ 라는 생각할 수 있는데, Android SDK Build-tools는 지금까지 버전을 올리면서 변경사항이 많았다. 그래서, 하위 호환이 보장되지 않을 수 있다. SDK Tools나 Platform-tools와는 다르게 지금까지 제공한 Build-tools를 모두 제공하고 있으니 그냥 설치해주도록 하자.

참고로, Android Studio 기준으로 Build-tools를 설치하는 경로는 “Tools > Android > SDK Manager” 이다.

Untitled

안드로이드 스투디오의 코드 컨벤션 설정

한 프로젝트를 할 때, 코드 컨벤션을 정하면 유용하다. 그 중에서, 내가 자주 쓰면서도 매번 찾아 헤매는 것을 위주로 정리해본다.

페이지 제한선

어디까지를 한 페이지로 할지 editor 창에 표시하는 선이다. 개인적으로는 요즘 와이드형 모니터들을 많이 쓰기 때문에,  100자 정도를 제한으로 해도 editor 2개정도는 충분히 띄울 수 있다. 하지만, 80자를 선호하시는 분도 아직 많이 있다.

위치는 “Settings > Code Style > General > Right Margin(columns)” 이다.
androidstudio_right-margin

괄호

함수나 클래스 선언 후 괄호(“{, }”)를 바로 붙일 지, 다음 줄에 붙일지도 많이 신경쓰는데, 안드로이드 스투디오는 기본이 함수나 클래스 선언 바로 옆에 붙는다. 이 것이 불편하다면, 아래 위치에서 수정하자.

“Settings > Code Style > Java > Wrapping and Braces 탭 > Braces placement 항목 값을 End of line”으로 변경한다.

androidstudio_brace

코드 컨벤션 공유하기

안드로이드 스투디오의 내 코드 컨벤션을 import/export할 수 있다.

먼저 export는 “File > Export settings… > Code Style 체크박스만 선택 > OK” 하시면 .jar 파일로 export할 수 있다. import는 “File > Import settings… > .jar 파일 선택 > Code Style 체크박스만 선택 > OK” 하면 된다.

그 후, “File > Settings > Editor > Code Style > Java”에 가면 스타일이 추가된 것을 볼 수 있다.