Android Support Repository & Library

Android SDK Manager에 보면, Extra 밑에

  • Android Support Repository
  • Android Support Library

가 있다. 둘의 차이를 간단히 설명하면 다음과 같다.

Android Support Repository는 메이븐 리파지토리를 이용해 라이브러리를 관리하는 안드로이드 스투디오의 그래들(Gradle)을 위한 라이브러리로, 설치하면 SDK 폴더 아래에 ‘extras/android/m2repository’ 폴더를 생성한 후 로컬 메이븐 리파지토리를 만들고 라이브러리를 저장한다.

Android Support Library는 전통적인 방식(이클립스, 인텔리제이 등)으로 안드로이드 클라이언트를 만드는 경우를 위한 안드로이드 라이브러리 프로젝트로, SDK 폴더 아래에 ‘extras/android/support/ 폴더를 생성한 후 여기에 프로젝트들을 저장한다.

그러므로, 안드로이드 스투디오를 쓰는 경우라면 Android Support Repository를 그 외의 경우에는 Android Support Library를 받으면 된다.

참조

안드로이드 스투디오의 안드로이드 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://…” 옵션을 체크박스로 지원한다.

참고

안드로이드 스투디오 속도 개선

이 글은 안드로이드 스투디오 1.0 때 작성된 것으로 2016.4월 현재 2.1까지 나온 지금은 처음만큼 느리지 않다. 그러므로, 속도 개선에 큰 효과가 없을지 모른다.


안드로이드 공식 IDE인 인텔리제이 기반의 안드로이드 스투디오. 그런데, 느리다! 특히, 에디터에서 코드를 수정 중에 뭘 하는지 커서를 움직일 때마다 버벅거린다.

에디터

이를 해결하기 위해 몇 가지 사용자들 사이에 거론되는 팁들이 몇개 있는데 inspection 옵션을 끄라던가,

androidstudio-inspection2

다음의 그림처럼 ‘Power Save Mode’를 체크한 후 코드를 작성하다가 필요할 때 다시 체크 해제하라는 팁이다.

androidstudio-inspection

그런데, 최근에 스택오버플로우에서 vmoptions을 수정해보라는 가이드를 보았다. 원래 이클립스에서도 최대 힙 메모리를 수정하는 것은 잘 알려진 팁이지만, 안드로이드 스투디오에서는 별로 효과를 보지 못했다. 속는 셈치고 이번에 1.2.2에서 다시 한 번 해보았는데 효과가 있는 것 같다. (1.3부터는 64bit의 경우, 기본값이 1280m로 수정이 필요 없다.)

일단 vmoptions 파일은 안드로이드 스투디오 설치 폴더 내의 /bin 폴더 안에 있다. 파일 ‘studio.exe.vmoptions’이거나 비슷한 이름일 것이다.

아래는 수정 전문이다. 이중에 -Xmx에 숫자를 입력하면 된다. 내 경우에는 1.5G를 할당했다.

-Xms128m
-Xmx1536m
-XX:MaxPermSize=350m
-XX:ReservedCodeCacheSize=225m
-XX:+UseConcMarkSweepGC
-XX:SoftRefLRUPolicyMSPerMB=50
-ea
-Djna.nosys=true
-Djna.boot.library.path=

-Djna.debug_load=true
-Djna.debug_load.jna=true
-Dsun.io.useCanonCaches=false
-Djava.net.preferIPv4Stack=true
-Didea.paths.selector=AndroidStudio1.2
-Didea.platform.prefix=AndroidStudio

-업데이트(2018.10.19)-

안드로이드 스투디오 업데이트 시, 변경된 파일을 체크하고 이 중 일부 파일은 업데이트 중단의 이유가 된다.  studio.exe.vmoptions 파일도 그중 하나다. 이런 이유로 안드로이드 스투디오에서 커스텀 vmoptions를 넣는 메뉴를 ‘Help – Edit custom VM options…’ 추가했다.

위 가이드에서도 메모리 할당 크기만 수정했으므로, 아래와 같이 메모리 크기관련 속성만 선언하면 된다.

# custom Android Studio VM options, see https://developer.android.com/studio/intro/studio-config.html
-Xms2048m
-Xmx4096m

그래들(빌드)

그래들 빌드는 이미 잘 정리된 글들이 있다. 그 것을 여기에 그대로 옮기는 것 보다는 원문의 링크(영문)를 걸어두겠다.

간략하게 요약하면,

  • 그래들 빌드 시 할당되는 힙 메모리 크기 증가
  • 프로젝트에서 사용하는 그래들 빌드의 버전을 2.4로 올리기
  • 참고하는 메이븐 서버의 주소를 mavenCentral()에서 jcenter()로 바꾸기

등이 있다.

그 밖에

에뮬레이터 속도 개선하는 글도 읽어보자.

참고

안드로이드 스투디오의 sign-off-by

Gerrit에서는 누가 무엇을 커밋했는지 추적하기 위해, 명시적으로 sign-off라는 부분에 사람의 이름을 표시하는 기능을 사용하기도 한다. 이 기능을 깃에서 지원하고 있으며 patch의 마지막 줄에 Signed-off-by 부분이 추가된다. 예제 커밋 메시지는 다음과 같다.

initial commit

Signed-off-by: Random J Developer <random@developer.example.org>

이를 사용하기 위해서는 깃에서 commit 시에 -s 파라미터만 붙여주면 된다.

>git commit -s -m "initial commit"

문제는 이 파라미터를 안드로이드 스투디오(정확히는 IDEA)에서 추가할 방법이 없다는 것이다. 커스텀 파라미터도 제공하지 않고, 체크박스를 통해 활성화/비활성화 할 방법도 없다. 아틀라시안(Atlassian) 사의 소스트리(SourceTree) 는 이미 지원하고 있다는데 안드로이드 스투디오에는 2011년부터 일부 IDEA 사용자가 요청하고 있지만 아직 추가되지 않았다.

~/.gitconfig 안에 format.signoff 파라미터를 지정할 수 있다고 하나, 안드로이드 스투디오에는 효과가 없다. 윈도우즈 환경이라면 깃의 commit 명령어인 경우 여기에 -s 파라미터를 추가하는 스크립트를 만들어, 이 배치 파일을 안드로이드 스투디오의 ‘File > Settings > Version Control > Git > Path to Git executable’ 에 배치파일을 지정하면 된다.

androidstudio_git-signoff

배치 파일의 코드는 다음과 같다.

@FOR /f "usebackq tokens=4*" %%i in (`@ECHO %*`) DO @SET other_params=%%j

@IF /i "%4" EQU "commit" (
    git %1 %2=%3 %4 -s %other_params%
) ELSE (
    git %*
)

위 방법은 파라미터들을 변수에 저장하기 때문에 순서를 바꾼다거나, 특정 파라미터만 비교할 수 있는 장점이 있다. 하지만, 단순 치환(replace)로도 ‘commit -s’는 지원할 수 있다.

:파라미터를 변수에 할당한다.
@set command=%*

: 바꾸고 싶은 값을 열거한다.
@set command=%command: commit = commit -s %
@set command=%command: merge = merge --no-commit %


:명령 실행
@git %command%

필요에 따라 사용하도록 하자.

그 밖에

git config의 format.signoff 파라미터는 패치(patch)에 대한 것으로 커밋(commit)에는 적용되지 않는다. 이에 대한 설명은 여기에! 만약, 모든 commit에 signed-by-off 부분을 추가하고 싶다면 GPG(GNU Private guard)에 대한 다른 글 참고하자.

업데이트

안드로이드 스투디오 3.0에 commit 시 signed-off를 달지 선택하는 체크박스가 추가되었다.

참고

그래들 빌드시 Lint(린트)로 인한 빌드 에러 피하기

이클립스나 인텔리제이에서는 Android Lint의 결과가 빌드에 영향을 미치지 않는다. 하지만, 안드로이드 스투디오에서 그레들 기반의 안드로이드 프로젝트를 사용하면, release 버전을 만들 때 Lint의 결과가 빌드를 중단할 수 있다.

예를 들면, res\values\strings.xml의 언어 문자열이 다국어 번역에서 일부 누락되었을 때 아래와 같은 메시지와 함께 빌드가 중단된다.

...
Error 69) Error: "server_url" is not translated in "ko" (Korean) [MissingTranslation]
Error 75) Error: "countries" is not translated in "ko" (Korean) [MissingTranslation]
...

실수로 번역이 누락된 것이라면, 번역을 하면 되지만 번역이 불필요한 경우에는  불편하다. 그 외의 Lint를 통한 검증 내용도 무시하고 일단 빌드를 하고 싶다면 아래와 같이 build.gradle에 추가해주면 된다.

lintOptions {
    checkReleaseBuilds false
}

release 빌드 시 필수인 Lint를 끄고 빌드할 수 있다. 하지만, 임시 방편일 뿐 Lint를 통해 분석한 결과를 꼭 수정하여, 더 안전한 앱을 만들자.

참조