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

안드로이드 스투디오에서 프로젝트를 생성(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

 

그래들 빌드시 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를 통해 분석한 결과를 꼭 수정하여, 더 안전한 앱을 만들자.

참조