Android Studio 프로젝트 구조 (vs Eclipse 프로젝트 구조)


109

나는 안드로이드 개발을 배우려고 노력하고 있는데 처음에는 Eclipse와 Android Studio 사이의 다른 프로젝트 구조로 인해 혼란 스럽습니다. 이로 인해 Eclipse 용으로 설계된 튜토리얼을 따르기가 어렵습니다. 누구든지 이러한 차이점이 존재하는 이유를 알려줄 수 있습니까? 존재해야합니까?

예를 들어, 두 개의 다른 IDE에서 R.java 파일을 찾으려면 경로는 다음과 같습니다.

Eclipse : app \ gen \ com.example.app \ R.java

Android 스튜디오 : app \ build \ source \ r \ debug \ com.example.app \ R.java

이러한 경로가 다른 이유는 무엇입니까? 내 R.java가 Android Studio의 디버그 폴더에있는 이유는 무엇입니까? 이로 인해 초기에 약간의 오류가 발생하며 누구든지 이러한 차이점에 대한 통찰력을 가지고 있다면 감사하겠습니다.


3
이 질문에 이미지를 게시하려고했지만 적어도 10 개의 평판이 필요합니다. 자격이 부여되면 이미지를 포함하도록 게시물을 편집하겠습니다.
Jesse

9
Eclipse를 사용하여 IDE 문제가 아닌 Android 관련 문제 만 해결하도록하는 것이 어떻습니까 (특히 Android Studio가 얼리 액세스 미리보기에 있으므로 )?
Luksprog 2013

3
동의합니다. 1 년 이상의 Android 개발 경험이없는 한 IMHO는 "early access preview"모드를 종료 할 때까지 Android Studio를 망쳐서는 안됩니다.
CommonsWare

2
IntelliJ IDEA는 매우 안정적이므로 대신 사용할 수 있다고 덧붙입니다. 또한 Android Studio가 더 안정되면 동일한 IDE (AS는 향상된 Android 통합 만 제공함)이므로 쉽게 이동할 수 있습니다.
free3dom

3
저는 이클립스를 사용하는 안드로이드 개발에서 3 년의 경험을 가지고 있으며 A.Studio를 사용하는 것이 정말 어렵다는 것을 알게되었습니다. 사람들이 이사 할 때가 되었기 때문에 누군가가 솔직하게 대답했으면합니다. 이사했습니다. 나는 개발하는 동안 직감으로 작업하고 싶지 않습니다.
Dheeraj Bhaskar

답변:


203

미스터리 : Android Studio의 프로젝트 구조 및 빌드 시스템

이것이 Gradle Build System 때문인지는 모르겠지만 (내기 할게요), 지금까지 제가 이해 한 바를 말씀 드리겠습니다.

업데이트 4 : 2014년 9월 11일 추가 치트 시트 에 대한 BuildTypes, Flavors그리고 Variants(나는 마침내이 쓸 자신감 : D를)
업데이트 3 : 2014년 9월 11일 정확한로 비교 작업 영역 및 프로젝트 업데이트
업데이트 2 : 2014년 4월 17일 AS 프로젝트 구조
업데이트 1 : 2013/07/29에 IntelliJ 프로젝트 구조 추가

IntelliJ의 프로젝트 구조 (마지막에 표시됨)는 Android 플러그인을 사용하는 IntelliJ 용입니다. 그러나 Android Studio에는 다음과 같이 분할 된 프로젝트 구조가 있습니다.

구조 : 프로젝트 및 모듈

모듈안드로이드 스튜디오 는 A입니다 프로젝트 에서 이클립스

프로젝트 에서 안드로이드 스튜디오 는 A입니다 작업 공간 에서 이클립스 (정확하고, 상호 의존적 인 프로젝트와 작업 공간)

에서 문서 (안드로이드 스튜디오를하게 IntelliJ IDEA 기반으로) :

IntelliJ IDEA에서 수행하는 작업은 프로젝트의 맥락에서 수행합니다. 프로젝트는 완전한 소프트웨어 솔루션을 나타내는 조직 단위입니다.

완성 된 제품은 일련의 분리 된 분리 된 모듈로 분해 될 수 있지만,이를 하나로 모아 더 큰 전체로 묶는 프로젝트 정의입니다.

Android의 경우 앱당 하나의 프로젝트, 라이브러리 및 테스트 앱당 하나의 모듈을 의미합니다.

동일한 프로젝트 내에서 여러 앱을 빌드하려고하면 여러 문제가 있습니다. 가능하지만 시도해 보면 거의 모든 것이 프로젝트 당 하나의 앱으로 작동하도록 설계되었음을 알 수 있습니다.

예를 들어 "프로젝트를 다시 빌드"하는 옵션이 있는데, 이는 여러 앱에서 의미가 없으며 다른 많은 프로젝트 설정은 쓸모가 없으며 내장 된 VCS 시스템은 여러 저장소가있는 경우 좋지 않습니다.

구조 : 폴더 구조

Android Studio 프로젝트 구조

최상위 폴더

1. 주요 프로젝트

이것은 전체 프로젝트 컨텍스트 가 될 것입니다 ( Eclipse Land : 작업 공간과 비슷하지만 프로젝트와 관련된 것으로 제한됨). 예 : HelloWorldProject귀하가 제공 한 신청서의 이름이HelloWorld

2. .idea

여기에는 프로젝트 별 메타 데이터가 Android 스튜디오 (AS)에 의해 저장됩니다. ( Eclipse Land : project.properties 파일)

3. 프로젝트 모듈

이것은 실제 프로젝트입니다. 예 : 제공 한 HelloWorld애플리케이션 이름이 HelloWorld 인 경우

4. gradle

이것은 gradle 빌드 시스템의 jar 래퍼가있는 곳입니다. 즉,이 jar는 AS가 Windows에 설치된 gradle과 통신하는 방법입니다 (제 경우에는 OS).

5. 외부 라이브러리

이것은 실제로 폴더가 아니라 Referenced Libraries ( Eclipse Land : Referenced Libraries)가 표시되는 곳입니다. 여기에 타겟 플랫폼이 표시됩니다.

[ 참고 : Eclipse Land의 많은 사람들이 참조 된 라이브러리를 삭제하고 참조 오류를 수정하기 위해 프로젝트 속성을 수정하는 데 사용했습니다. 기억하십니까?]

세부 프로젝트 폴더

위 목록에서 3 번입니다. 다음 하위 디렉토리가 있습니다.

1. 빌드

이것은 makeclasses.dex, 컴파일 된 클래스 및 리소스 등과 같은 프로세스 의 모든 완전한 출력을 가지고 있습니다 .

Android Studio GUI에는 몇 개의 폴더 만 표시됩니다. 중요한 부분은 R.java가 여기 아래에 있다는 것입니다.build/source/<flavor>/r/<build type(optional)>/<package>/R.java

2. libs

이것은 Eclipse Land 에서도 볼 수있는 표준 libs 폴더입니다.

3. src

여기에서는 Eclipse Land 의 폴더 및 폴더에 해당하는 javares폴더 만 표시 됩니다. 이것은 매우 환영받는 단순화 IMHO입니다.srcres

모듈에 대한 참고 사항 :

모듈은 Eclipse Land 프로젝트 와 같습니다 . 여기서 아이디어는 응용 프로그램 프로젝트가 의존하는 하나의 응용 프로그램 프로젝트 (위 목록의 모듈 # 3)와 여러 라이브러리 프로젝트 (전역 프로젝트 폴더 아래의 별도 모듈 (위 목록의 # 1))가 있다는 것입니다. 이러한 라이브러리 프로젝트를 다른 응용 프로그램에서 어떻게 재사용 할 수 있는지 아직 알지 못했습니다.

[ 참고 사항 : 전체 재구성에는 src 폴더의 단순화와 같은 몇 가지 이점이 있지만 많은 복잡성이 있습니다. 문제는 주로이 새로운 프로젝트 레이아웃에 대한 매우 얇은 문서 때문 입니다.]

새로운 빌드 시스템

새로운 빌드 시스템에 대한 사용자 가이드

풍미 및 buildTypes 등에 대한 설명-헐라 발루는 무엇입니까?

플레이버 및 빌드 유형에 대한 CheatSheet

BuildType : debug 하고 release있는 buildTypes모든 프로젝트에 기본적으로 사용할. 다른 APK를 생성하기 위해 동일한 코드 를 빌드 / 컴파일하기위한 것 입니다. 예를 들어 releaseAPK에서 proguard (난독 화를 위해)를 실행하고, 키로 서명하고 (디버그 키에 대해), 최적화를 실행하고 (아마도 proguard 또는 기타 도구를 통해) 약간 다른 packageNames사용 ( com.company.productfor releasecom.company.product.debugfor debug)을 사용 합니다 . 등. 또한 디버그 플래그 ( BuildConfig.DEBUG)를 사용하여 빌드 에서 logcat에 대한 로깅을 끕니다 (앱이 느려지기 때문에) release. 이것은 debug개발 중에 더 빠른 빌드를 제공 release할 뿐만 아니라 플레이 스토어에 배치 할 최적화 된 빌드를 제공합니다.

제품 맛 : 사용할 수있는 기본 맛이 없습니다 (정확히 말하자면 기본 맛은 공백 / 이름 없음). 무료 버전 또는 다른 코드 가있는 유료 버전 일Flavors 수 있습니다 . 그들은 동일한 코드를 공유 하지만 몇 가지 소스 코드 파일 또는 리소스의 다른 버전 (또는 버전 없음)을 공유합니다 .Main

BuildVariant : A buildVariant는 생성 된 APK가 실제로 해당하는 것입니다. 그들은 (순서대로) Product Flavor+ Build Type=Build Variant 와 같이 이름이 지정 됩니다.
예 1 : 당신이있는 경우 freepaid두 가지 종류로. 얻을 수있는 빌드 변형은 다음과 같습니다.
무료-디버그
무료-출시
유료-디버그
유료-출시
4 가지 가능한 APK 구성입니다. 몇 가지 구성은 특정 프로젝트에 이해가되지 않을 수 있습니다,하지만 그들은 이다 가능합니다.

예 2 : (새 프로젝트의 경우 / 버전 없음) buildVariants기본 버전이 이름 없음 / 공백이므로 2 개 또는 APK를 사용할 수 있습니다.
디버그
릴리스

도움이된다면 Intellij의 프로젝트 구조 와 비교하십시오 .

Intellij 프로젝트 구조 스냅 샷

.idea (1) 폴더에는 주로 내부 IntelliJ IDEA 정보가있는 여러 하위 폴더가 포함되어 있습니다.

src (2) 폴더에는 애플리케이션의 기능을 구현하는 MyActivity.java (3) 파일 소스 코드 가 포함되어 있습니다 . 파일은 com.example 패키지에 속합니다.

res (4) 폴더에는 다양한 시각적 리소스가 포함되어 있습니다.

layout / main.xml 파일 (5) 은 다양한 유형의 리소스로 구성된 애플리케이션의 모양을 정의합니다.

values ​​폴더 (6) 는 다양한 유형의 리소스를 설명하는 .xml 파일을 저장하기위한 것입니다. 현재 폴더에는 문자열 리소스 정의가있는 strings.xml 파일이 포함되어 있습니다. 색상 추가 섹션에서 볼 수 있듯이 레이아웃 폴더에는 예를 들어 색상 설명자가 포함될 수도 있습니다.

드로어 블 폴더 (7) 에는 이미지가 포함되어 있습니다.

gen (8) 폴더 에는 시각적 리소스와 Java 소스 코드를 연결하는 R.java (9) 파일이 있습니다. 아래 섹션에서 볼 수 있듯이 IntelliJ IDEA는 정적 리소스와 R.java 간의 긴밀한 통합을 지원합니다. 리소스가 추가되거나 제거되는 즉시 R.java의 해당 클래스 및 클래스 필드가 자동으로 생성되거나 제거됩니다. R.java 파일도 com.example 패키지에 속합니다.


3
Eclipse와 Android Studio 프로젝트 구조를 비교해 주셔서 대단히 감사합니다! 그리고 예,이 프로젝트 구조에 대한 문서와 그것이 일상적인 개발에 어떻게 사용될 수 있는지는 존재하지 않습니다.
kpsfoo

1
"3. SRC 여기에서, 당신은 폴더 ... 자바와 고해상도를 참조"더 정확하게에 javares받고있다 src/main.
Code-Apprentice

다음은 Android Studio 폴더 구조에 대한 몇 가지 문서입니다. developer.android.com/sdk/installing/studio-build.html
David d C e Freitas 2014 년

31

Android 스튜디오 : app \ build \ source \ r \ debug \ com.example.app \ R.java

이러한 경로가 다른 이유는 무엇입니까? 내 R.java가 Android Studio의 디버그 폴더에있는 이유는 무엇입니까? 이로 인해 초기에 약간의 오류가 발생하며 누구든지 이러한 차이점에 대한 통찰력을 가지고 있다면 감사하겠습니다.

간단히 말해 Android Studio는 시스템에서 디버그 빌드 유형 을 빌드하도록 구성됩니다 .

Eclipse / ADT는 한 번에 하나의 빌드를 지원하도록 설계되었습니다. 새 빌드 시스템의 주요 목표 중 하나 ( 사용자 가이드 ) :

Make it easy to create several variants of an application, 
either for multi-apk distribution or for different flavors of an application

따라서 Eclipse / ADT가 하나의 R.java파일을 생성 할 수있는 경우 Android Studio는 여러 파일을 지원합니다. 생성 된 파일 R.javadebug기본적으로 새 빌드 시스템이 즉시 지원 debug하고 release빌드 유형을 지원하기 때문에 폴더 에 있습니다 . 빌드 변형 (버튼, AS의 왼쪽 하단)을 변경하면 AS가 디렉토리에 생성 R.java됩니다 release.

이것은 단순한 프로젝트에는 아무런 의미가 없지만 Build Variants 의 지원은 내가 작업중인 프로젝트를 포함하여 많은 개발자의 빌드 프로세스를 대폭 단순화한다는 것을 의미합니다.

우리 프로젝트는 총 8 개의 서로 다른 APK 조합을 지원하기 위해 2 가지 빌드 유형 (디버그 및 릴리스)의 4 가지 버전을 지원합니다. 그리고 각각의 조합은 약간 다른 구성을 가지고 있기 때문에이 빌드 시스템은 우리에게 정말 효과적이었습니다. 내 Android 스튜디오가 다른 컴퓨터에 설치되어 있지만 메모리가 올바르게 작동하면 R.java파일이 build/source/<flavor>/r/<build type>/package/R.java. CI 서버가 APK 파일을 빌드 할 때 이러한 각 R.java파일을 사용하여 별도의 패키지를 생성합니다.


0

Google 의 발표에 따라 Eclipse의 Android 개발자 도구 (ADT) 지원 이 종료됩니다. 가능한 한 빨리 앱 개발 프로젝트를 Android 스튜디오로 마이그레이션해야합니다. Android 스튜디오로 전환하는 방법에 대한 자세한 내용은 Android 스튜디오로 마이그레이션을 참조하세요.

그래서 안드로이드 개발 도구를위한 최고의 안드로이드 스튜디오 만의 미래의 모든 지원을위한 안드로이드 M ---


안드로이드 개발자를위한 이클립스 - eclipse.org/downloads/packages/...
Yousha Aleayoub

-2

Android Studio 3.0.1 및 선택한 모든 기능의 경우 :

  • Android O 최신
  • Android Auto
  • Android 사물
  • 안드로이드웨어
  • Android TV
  • C ++ 지원
  • Kotlin 지원

버전 3.0.1의 구조는 다른 모든 답변처럼 보이지 않습니다.

최근 구조는 2018 년, Android Studio 3.0.1 2018 년 1 월에 표시된대로입니다.

초보자가 기능 하위 폴더에서 사용할 수있는 것과 비슷한 것을 발견했습니다.

Android Studio 3.0.1 01_2018 업데이트 :

도구 설명 :

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.