마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

안드로이드 스튜디오 app.gradle vs manifest

0 추천
안드로이드 스튜디오를 사용하여 앱을 제작하고 있습니다.

평소 gradle에 대해서는 라이브러리 추가할때나 건드리긴 했었는데

깊게 관심을 가지지 못했습니다.

그러다 gradle을 건드릴 일이 생겨 app.gradle을 보았는데, defaultConfig에

앱 최소버전과 타겟버전, 버전코드, 버전네임 등이 있는것을 보게 되었습니다...

사실 이것은 Manifest.xml에 있는 정보들인데요.

그동안은 Manifest.xml에서 버전을 설정하고 있었습니다.

Manifest.xml과 app.gradle 두군데에서 버전이 다르게 설정되어있다면

실제적으로는 어떤게 적용이되나요?
슈퍼꽃붕어 (1,600 포인트) 님이 2015년 7월 24일 질문

2개의 답변

+1 추천
죄송하지만, 질문이 너무하다는 생각이 드네요.

두 파일 중 하나에만 버전을 높인 다음에 컴파일해서 다운로드해 보면 쉽게 알 수 있는 것을 질문으로 올리시다니....
cc1232 (35,280 포인트) 님이 2015년 7월 24일 답변
애플리케이션 정보에서 다운로드받은 앱의 버전을 볼수있는거였군요...;; 몰랐어용.. 그리고... 제 질문만 보면 어이없게 느껴지실 수 있지만, 제가 질문에 적지 않은 내용, 예를들면 궂이 Manifest가 있는데 app.gradle에도 앱정보를 설정해야하는게 있어야하는 이유라던가 그런것을 따로 설명해주실 수 있지 않나요?
AndroidManifest.xml은 안드로이드 앱 컴파일시 반드시 존재해야 하는 파일입니다만, 정적인 설정파일입니다. 이클립스+ADT 빌드 방식에서는 소스 내의 매니페스트 파일을 직접 수정하는 방법 밖에 없었습니다. 실제 컴파일시 참조되는 파일도 그 파일이구요
안드로이드 스튜디오에서는 Gradle을 빌드시스템으로 사용하면서 매니페스트 파일을 직접 참조하지 않습니다.
아무 프로젝트나 빌드해보시면 아시겠지만, /build/intermediates/ 어쩌구 쪽을 보시면 manifest 폴더가 있을거구 더 뒤져보시면 매니페스트 파일이 나올 겁니다. 그게 실제 빌드시 참조되는 파일입니다. 그리고 그 파일은 소스에 있던 매니페스트파일을 build.gradle을 이용하여 가공해서 만들어진 파일입니다.
gradle은 Groovy인가 하는 언어를 사용한 방식이어서 매니페스트처럼 정적이지 않습니다. 조건에 따라 다른 결과를 나타냅니다. 따라서, 소스에 아무 변동없이 debug/release 등에 따라 다른 버전이나 특징을 추가하거나 제거할 수 있습니다.
방금 debug/release/testRelease에 따라 소스를 다르게 해야 해서 gradle을 건들였는데 역시 gradle은 위대하네요. 감사합니다.
+1 추천
안드로이스 스튜디오에서 빈 프로젝트를 만든 다음에 manifest 가보세요.

거기에 version 설정하는게 있는지 없는지를 확인해보세요....
쎄미 (162,410 포인트) 님이 2015년 7월 24일 답변
앗감사합니다.. 이클립스만 쓰던 제가 안드스튜디오 넘어오면서 버전이 없는게 이상해서 추가했었나 봅니다. 그렇담 지워도 되겠네요;;; 쓸모없는 짓을 했군요...
...