안드로이드, iOS, 윈도우 개발을 하는경우 플랫폼의 특성에 따라 각각의 플랫폼에 맞는 IDE를 사용할 수밖에 없다. 각각의 IDE를 사용해야 하기때문에 코드 작성을 위한 언어 공부는 그렇다 치더라도, 복잡한 빌드 설정 방법에 대해서도 많은 공부가 필요하다. 이제까지의 경험으로는 개발이 제일 쉽고 개발 환경 설정이 가장 어렵다. (하하)
간단한 단일 프로젝트의 경우 간단하게 기본 제공되는 템플릿대로 이용하면 된다. 하지만 다양한 환경에 따라 배포방식이 달라지는 경우나, 같은 코드베이스에서 약간의 코드 변형을 적용하여 미묘하게 다른 여러가지의 프로덕트를 만들어내야 하는 경우 (ex: 기능제약이 있는 무료버전 앱과 유료버전 앱을 만들어내는 경우) 에는 코드 작성도 중요하지만 프로젝트 환경 설정을 어떻게 하는지가 매우 중요하다.
안타깝게도 각 플랫폼의 특성에따라 비슷한 기능임에도 사용되고 있는 용어가 다르다보니, 자신이 익숙한 플랫폼이 아닌 경우에는 어디를 찾아서 설정을 해줘야할지 해메이기 쉽상이다. 예를들어 “프로젝트” 라는 용어가 각 플랫폼에 모두 존재하지만, 각각이 의미하는 바가 미묘하게 다르다.
이러한 혼란에서 탈출하기 위한 개발자들을 위해서 이 글은 세개의 플랫폼들 중에서 적어도 하나의 환경에 익숙한 개발자가 읽었을때 가장 도움이 되도록 작성되었다. 익숙한 플랫폼에서 빌드 설정을 하는데 사용되었던 개념에 해당하는 카운터 파트의 용어를 찾아서 비교해보고 상세한 적용 방법만 따로 익히면 된다.
다음 비교 표에 모든 내용이 요약되어있으니 상세 설명과 함께 비교해서 확인하면 된다.
개념 | Visual Studio | Xcode | AndroidStudio |
---|---|---|---|
최상위 구성 요소 | Solution | Workspace | Project |
최소 구성 단위 | Project | Project | Module |
최소 구성 단위에 대한 variation | 없음 | Target Flavor | |
빌드 설정 변경 | Build Configuration | Configuration | Build Types |
variation + 빌드설정 조합 | ConfigurationManager | Scheme | Build Variants |
Xcode 빌드 설정 구성하기
- Workspace는 여러개의 Project를 포함할 수 있다.
- Project간에 dependancy 설정이 가능하여 library project가 먼저 컴파일 된 후에 excutable project가 컴파일 되도록 하는 등의 설정이 가능하다.
-
각 Project는 Target을 여러개 가질 수 있으며, 각 타겟당 하나의 결과물(executable, library, etc)이 생성된다. 각 Target별로 다음과 같은 설정이 가능하다.
- 프로젝트 내의 특정 파일을 컴파일에서 제외/포함
- ex) 유/무료 버전에 대해 다른 클래스를 선택해서 컴파일
- 프로젝트 내의 리소스를 다르게 선택
- ex) 유/무료 버전용 이미지 다르게 선택
- 다른 Info.plist 적용 (이부분은 Configuration으로도 조정가능)
- ex) 유/무료 버전의 Bundle ID를 다르게 지정
- 다른 Preprocessor Macro를 적용 (이부분은 Configuration으로도 조정가능)
- 프로젝트 내의 특정 파일을 컴파일에서 제외/포함
- Project에 대해 Configuration들을 생성할 수 있고 생성된 Configuration들은 Project내의 각 Target들에서 선택적으로 사용될 수 있다.
- Scheme의 경우 다른 플랫폼에는 없는 독특한 개념으로 Xcode의 빌드 액션들(Build, Run, Test, Archive)에 대해 각각 미리 어떤 configuration을 적용하고 어떤 추가 옵션을 사용할지 preset을 지정할 수 있게해준다.
Android Studio 빌드 설정 구성하기
- Project는 여러개의 Module을 포함할 수 있다.
- Module간에 dependancy 설정이 가능하다.
- 각 Module은 Flavor를 여러개 설정해서 사용 가능하다.
- 각 모듈에는 Build Type을 지정할수 있고 기본적으로 debug, release가 생성되어있다.
- Android Studio의 Build Variant 윈도우를 통해서 어떤 flavor + 어떤 buildType 인지 선택하여 빌드를 진행 할 수 있다.
Visual Stuio 빌드 설정 구성하기
- Solution은 여러개의 Project를 포함할 수 있다.
- 솔루션에도 구성 옵션(Solution Configuration)이 존재한다 (Visual Studio 특징)
- 솔루션의 구성 옵션을 여러개 만들어 두고 각 옵션별로 하위에 있는 프로젝트들을 선택적으로 컴파일 가능 (각 프로젝트로 configuration, platform을 선택하는것도 가능)
- Project간에는 dependancy 설정이 가능하며, 특정 Project를 active project 설정하여 run/debug시에 실행될 수 있도록 한다.
- 엑스코드, 안드로이드 스튜디오와는 달리 비주얼 스튜디오의 경우 Project에 대해 target, flavor등의 설정을 하는것이 IDE내에서는 불가능하다.
- 해결방법1: 공통 파일을 레퍼런스로 가리키고있는 프로젝트를 두개 각각 만들어서 프로젝트별로 조금씩 다르게 설정한다.
- 해결방법2: MSBuild파일을 직접 수정하여 각 파일에 대해 조건식을 통한 컴파일이 가능하다.1
- Project에 대해 Build Configuration을 설정가능하다. (Xcode와 거의 비슷한 방식)
- 기본적으로 Debug, Release 두개의 Configuration이 생성되어있다.
- Configuration과 더불어 Platform 설정이 가능하다 (ex: x86, x64, ARM, etc)
- 구성 관리자 (Configuration Manager)
-
http://stackoverflow.com/questions/2358495/same-source-multiple-targets-with-different-resources-visual-studio-net-2008 ↩