Android Studio 프로젝트 구조(v.s. Eclipse 프로젝트 구조)
안드로이드 개발을 배우려고 하는데 이클립스와 안드로이드 스튜디오의 프로젝트 구조가 달라서 처음에는 혼란스럽습니다.따라서 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의 디버그 폴더에 있는 이유는 무엇입니까?이로 인해 초기에 몇 가지 오류가 발생했으며, 이러한 차이에 대한 통찰력을 가진 사람이 있다면 감사하겠습니다.
미스터리: 안드로이드 스튜디오의 프로젝트 구조와 빌드 시스템
이것이 Gradle Build System 때문인지는 모르겠지만(틀림없이) 지금까지 이해한 것을 말씀드리겠습니다.
업데이트 4: 2014/09/11에 대한 치트 시트 추가BuildTypes
,Flavors
그리고.Variants
는 마침내 을 쓸 :D (디어이글쓸생자다니 :D)
업데이트 3: 2014/09/11 비교 작업 공간 및 프로젝트가 정확하게 업데이트되었습니다.
업데이트 2: 2014/04/17 AS 프로젝트 구조에 세부 정보 추가
업데이트 1: 2013/07/29 IntelliJ 프로젝트 구조 추가
IntelliJ의 프로젝트 구조(마지막에 표시됨)는 Android 플러그인이 있는 IntelliJ를 위한 것입니다.그러나 Android Studio의 프로젝트 구조는 다음과 같이 구분됩니다.
구조: 프로젝트 및 모듈
Android Studio의 모듈은 Eclipse의 프로젝트와 같습니다.
Android Studio의 프로젝트는 Eclipse의 작업 공간과 같습니다(정확하게는 상호 의존적인 프로젝트가 있는 작업 공간).
설명서에서 (Android Studio는 Intellij IDEA를 기반으로 합니다):
IntelliJ IDEA에서 무엇을 하든 프로젝트의 맥락에서 그렇게 합니다.프로젝트는 완전한 소프트웨어 솔루션을 나타내는 조직 단위입니다.
완성된 제품은 일련의 개별적이고 분리된 모듈로 분해될 수 있지만, 이를 하나로 묶고 더 큰 전체로 연결하는 프로젝트 정의입니다.
Android의 경우 앱당 하나의 프로젝트, 라이브러리 및 테스트 앱당 하나의 모듈을 의미합니다.
동일한 프로젝트 내에서 여러 앱을 구축하려고 하면 여러 문제가 발생합니다.가능하지만 (저처럼) 시도해 보면 거의 모든 것이 프로젝트당 하나의 앱으로 작동하도록 설계되어 있다는 것을 알 수 있습니다.
예를 들어, "프로젝트 재구성" 옵션이 있는데, 이는 여러 애플리케이션에서는 의미가 없고, 다른 많은 프로젝트 설정은 쓸모가 없으며, 기본 제공 VCS 시스템은 저장소가 여러 개인 경우에는 적합하지 않습니다.
구조:폴더 구조
최상위 수준 폴더
주 프로젝트
이는 전체 프로젝트 컨텍스트입니다(Eclipse Land: 작업 공간과 비슷하지만 프로젝트와 관련된 항목으로 제한됨).예:HelloWorldProject
만약 당신이 준 신청서의 이름이HelloWorld
.tg.
Android Studio(AS)에서 프로젝트별 메타데이터를 저장하는 곳입니다. (이클립스 랜드: project.properties
으)로 표시)
프로젝트 모듈
이것이 실제 프로젝트입니다.ex:HelloWorld
이 준 이름이 HelloWorld , HelloWorld ㅠㅠㅠㅠ
으스대다
이것이 바로 Gradle Build 시스템의 jar wrapper입니다. 즉, 이 jar는 AS가 Windows에 설치된 gradle(제 경우 OS)과 통신하는 방법입니다.
외부 라이브러리
이것은 실제로 폴더가 아니라 참조 라이브러리(Eclipse Land: Referenced Libraries)가 표시되는 위치입니다.여기에는 대상 플랫폼 등이 표시됩니다.
[부록:Eclipse Land에 있는 많은 사람들이 참조 라이브러리를 삭제하고 프로젝트 속성을 수정하여 참조 오류를 수정하곤 했던 곳입니다. 기억하십니까?]
프로젝트 폴더 세부 정보
위 목록의 3번입니다.다음 하위 디렉터리가 있습니다.
빌드
이렇게 하면 의 전체 출력이 표시됩니다.make
프로세스(예: class.sys, 컴파일된 클래스 및 리소스 등)
Android Studio GUI에는 몇 개의 폴더만 표시됩니다.중요한 부분은 당신의 R.Java가 여기 아래에 있다는 것입니다.
입술
이것은 일식 랜드에서도 볼 수 있는 표준 libs 폴더입니다.
src
여기서, 당신은 오직 그것만 볼 수 있습니다.java
그리고.res
에 src
및 폴및더res
이클립스 랜드에 있는 폴더.이는 IMHO의 단순화를 크게 환영합니다.
모듈 관련 참고 사항:
모듈은 Eclipse Land 프로젝트와 같습니다.여기서는 응용 프로그램 프로젝트가 종속된 하나의 응용 프로그램 프로젝트(위 목록의 모듈 #3)와 여러 라이브러리 프로젝트(글로벌 프로젝트 폴더(위 목록의 #1) 아래의 별도 모듈)가 있다는 것을 의미합니다.이 라이브러리 프로젝트들이 어떻게 다른 응용 프로그램에서 재사용될 수 있는지, 저는 여전히 알아내지 못했습니다.
[부록:전체 재구성에는 src 폴더의 단순화와 같은 몇 가지 이점이 있지만 복잡성이 너무 많습니다.복잡성은 주로 이 새 프로젝트 레이아웃에 대한 매우 얇은 문서 때문입니다.]
새로운 빌드 시스템
맛 및 구조에 대한 설명유형 등 - 선체 풍선은 무엇에 관한 것입니까?
맛과 빌드를 위한 치트 시트종류들
빌드 유형: debug
그리고.release
buildTypes
모든 프로젝트에서 기본적으로 사용할 수 있습니다.이들은 동일한 코드를 구축/컴파일하여 다른 APK를 생성하기 위한 것입니다.예를 들어release
Proguard를 위해)를하고 싶은 , (도구를 통해) 다른 APK를 합니다.packageNames
는 (으)를 사용합니다.com.company.product
위해서release
그리고.com.company.product.debug
위해서debug
등. 플래그도 사용합니다. 디버그 플래그()는 다음과 같습니다.BuildConfig.DEBUG
) logcat에서 로깅을 합니다.release
빌드합니다.이를 통해 성능 향상debug
개발 중에 구축할 뿐 아니라 최적화release
플레이 스토어에 올리기 위해 빌드합니다.
제품 맛:사용할 수 있는 기본 맛이 없습니다. 정확히 말하면 기본 맛은 공백/이름 없음입니다. Flavors
코드가 다른 무료 버전 또는 유료 버전일 수 있습니다.그들은 같은 것을 공유합니다.Main
코드이지만 일부 소스 코드 파일 또는 리소스의 버전이 다릅니다(또는 버전이 없습니다).
빌드 변형:abuildVariant
생성된 APK가 실제로 대응하는 것입니다.이름은 다음과 같습니다(순서대로) + =.
예 1: 다음이 있는 경우free
그리고.paid
두 가지 맛으로사용할 수 있는 빌드 변형은 다음과 같습니다.
- debug - 그무료
- release -
- - 유료
- 릴리스 - - 유시
즉, 4가지 APK 구성이 가능합니다.일부 구성은 특정 프로젝트에서 의미가 없을 수 있지만 사용할 수 있습니다.
예 2: (새로운 프로젝트의 경우/맛 없음) 두 가지가 있습니다.buildVariants
또는 기본 맛이 이름 없음/공백이므로 사용 가능한 APK:
명령어
풀주다어다▁release
이를 Intellij의 프로젝트 구조와 비교하면 다음과 같은 이점이 있습니다.
.idea (1) 폴더에는 주로 내부 IntelliJ IDEA 정보가 포함된 여러 하위 폴더가 포함되어 있습니다.
src (2) 폴더에는 응용 프로그램의 기능을 구현하는 MyActivity.java (3) 파일 소스 코드가 들어 있습니다.이 파일은 com.example 패키지에 속합니다.
res (4) 폴더에는 다양한 시각적 리소스가 포함되어 있습니다.
layout/main.xml 파일(5)은 다양한 유형의 리소스로 구성된 응용프로그램의 모양을 정의합니다.
값 폴더(6)는 다양한 유형의 리소스를 설명하는 .xml 파일을 저장하기 위한 것입니다.현재 폴더에는 String 리소스 정의가 있는 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의 디버그 폴더에 있는 이유는 무엇입니까?이로 인해 초기에 몇 가지 오류가 발생했으며, 이러한 차이에 대한 통찰력을 가진 사람이 있다면 감사하겠습니다.
간단히 말해 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는 하나의 Eclipse/A를 할 수 .DT가 생성할 수 있는 반면R.java
파일, Android Studio는 여러 개를 지원합니다.된 성된생R.java
는 에위니다합에 해 있습니다.debug
으로 지원하는 입니다.debug
그리고.release
빌드 유형을 지정합니다. 변형을한 경우 에서 제조변모델(AS의버, 모을리서다가하니)가 됩니다.R.java
에 시대에release
디렉토리입니다.
단순한 프로젝트에서는 의미가 없을 수 있지만 빌드 변형의 지원은 제가 작업 중인 프로젝트를 포함하여 많은 개발자의 빌드 프로세스를 대폭 간소화하는 것을 의미합니다.
우리의 프로젝트는 총 8개의 서로 다른 APK 조합을 지원하기 위해 2개의 빌드 유형(디버그 및 릴리스)으로 4가지 맛을 지원합니다.그리고 각각의 조합은 약간 다른 구성을 가지고 있기 때문에, 이 빌드 시스템은 우리에게 정말 효과가 있었습니다., 메모리가 ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜR.java
이 파존재에 .build/source/<flavor>/r/<build type>/package/R.java
때 이러한 CI 합니다.R.java
개별 패키지를 생성할 파일입니다.
Google 이클립스의 Android Developer Tools(ADT)에 대한 지원을 중단합니다.앱 개발 프로젝트를 Android Studio로 최대한 빨리 마이그레이션해야 합니다.Android Studio로 전환하는 방법에 대한 자세한 내용은 Android Studio로 마이그레이션을 참조하십시오.
Android Studio용 Android 개발 도구에 가장 적합한 것은 향후 Android M의 모든 지원입니다.
Android Studio 3.0.1 및 선택된 모든 기능:
- 안드로이드 최신 버전
- 안드로이드 오토
- 안드로이드 사물
- 안드로이드 웨어
- 안드로이드 TV
- C++ 지원
- 코틀린 지원
버전 3.0.1의 구조는 다른 모든 답변과 전혀 다르게 보입니다.
최근 구조는 2018년 Android Studio 3.0.101/2018에 표시된 것과 같습니다.
Newbie는 기능 하위 폴더에서 사용할 수 있는 것과 유사한 것을 발견했습니다.
Android Studio 3.0.101_2018 업데이트:
도구 설명:
언급URL : https://stackoverflow.com/questions/17431838/android-studio-project-structure-v-s-eclipse-project-structure
'programing' 카테고리의 다른 글
WPF의 이미지 컨트롤을 사용하여 시스템을 표시합니다.그림그리기.비트맵 (0) | 2023.05.01 |
---|---|
Azure 가상 시스템의 도메인 컨트롤러로 사용되는 Azure Active Directory (0) | 2023.05.01 |
Python 2.7에서 인쇄된 괄호가 자발적인 이유는 무엇입니까? (0) | 2023.05.01 |
활성 레코드, 레일 및 포스트그레스를 사용하여 여러 중복 필드가 있는 행 찾기 (0) | 2023.05.01 |
MVVM을 사용하여 "창 닫기" 명령 구현 (0) | 2023.05.01 |