programing tip

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

itbloger 2020. 8. 5. 07:57
반응형

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


나는 안드로이드 개발을 배우려고 노력 중이며 처음에는 Eclipse와 Android Studio 간의 다른 프로젝트 구조에 혼란스러워합니다. 따라서 Eclipse 용으로 설계된 학습서를 따르기가 어렵습니다. 왜 이러한 차이점이 존재하는지 알려 주시겠습니까? 존재해야합니까?

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

이클립스 : app \ gen \ com.example.app \ R.java

Android Studio : app \ build \ source \ r \ debug \ com.example.app \ R.java

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


수수께끼 : 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 시스템이 적합하지 않습니다.

구조 : 폴더 구조

안드로이드 스튜디오 프로젝트 구조

최상위 폴더

1. 주요 프로젝트

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

2. 아이디어

프로젝트 특정 메타 데이터는 Android Studio (AS)에 의해 저장됩니다. ( 이클립스 랜드 : project.properties 파일)

3. 프로젝트 모듈

이것은 실제 프로젝트입니다. 예 : HelloWorld귀하가 제공 한 신청서 이름이 HelloWorld 인 경우

4. gradle

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

5. 외부 라이브러리

이것은 실제로 폴더가 아니라 참조 라이브러리 ( Eclipse Land : Referenced Libraries)가 표시되는 위치입니다. 타겟 플랫폼 등이 여기에 표시됩니다.

[ 참고 : 이것은 Eclipse Land의 많은 사람들이 참조 된 라이브러리를 삭제하고 프로젝트 속성을 수정하여 참조 오류를 수정하는 데 사용했던 곳입니다.]

프로젝트 폴더 상세

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

1. 빌드

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

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

2. 라이브러리

이클립스 랜드 에서도 볼 수있는 표준 libs 폴더입니다.

3. src

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

모듈에 대한 참고 사항 :

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

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

새로운 빌드 시스템

새로운 빌드 시스템 사용자 안내서

풍미 및 빌드 유형 등에 대한 설명-훌라 발루 란 무엇입니까?

풍미 및 buildTypes에 대한 치트 시트

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) 은 다양한 유형의 리소스로 구성된 응용 프로그램의 모양을 정의합니다.

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

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

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


Android Studio : app \ build \ source \ r \ debug \ com.example.app \ R.java

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

Simply put, Android Studio is configured to build a debug Build Type on your system.

Eclipse/ADT is designed to support a single build at a time (from what I can tell). One of the primary goals of the new build system (from the user guide):

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

So where as Eclipse/ADT could generate one R.java file, Android Studio supports multiple. The generated R.java is located in the debug folder because by default the new build system supports debug and release build types off the bat. If you changed your build variant (button, lower left hand corner of AS) to release AS will generate R.java in the release directory.

This might not mean anything for simple projects, but the support of Build Variants means a drastic simplification of the build process for many developers, including the project I'm working on.

Our project supports 4 flavors with 2 build types (debug and release), to support a total of 8 different APK combinations. And each of those combinations have slightly different configurations, so this build system really worked out for us. My android studio is installed on a different machine, but if memory serves my correctly the R.java file exists in build/source/<flavor>/r/<build type>/package/R.java. When our CI server builds the APK files it uses each of these R.java files to generate separate packages.


Google Discontinue the support for the Android Developer Tools (ADT) in Eclipse is ending, per our announcement. You should migrate your app development projects to Android Studio as soon as possible. For more information on transitioning to Android Studio, see Migrating to Android Studio.

So best for Android development tool for Android Studio only for all future support of Android M ---


For android Studio 3.0.1 and selected all features:

  • Android O latest
  • Android Auto
  • Android things
  • Android wear
  • Android TV
  • C++ support
  • Kotlin support

The structure in version 3.0.1 does not look at all like all other answers.

Recent structure is as displayed in 2018, Android Studio 3.0.1 01/2018.

Newbie kinda found something resembling to usable in feature sub-folder:

Android Studio 3.0.1 01_2018을 업데이트하십시오.

툴팁 :

참고 URL : https://stackoverflow.com/questions/17431838/android-studio-project-structure-vs-eclipse-project-structure

반응형