Gradle은 나에게 혼란스럽고 새로운 안드로이드 개발자에게도 혼란 스럽습니다. 누구나 Android Studio의 Gradle이 무엇이며 그 목적이 무엇인지 설명 할 수 있습니까? 왜 Android Studio에 포함되어 있습니까?
Gradle은 나에게 혼란스럽고 새로운 안드로이드 개발자에게도 혼란 스럽습니다. 누구나 Android Studio의 Gradle이 무엇이며 그 목적이 무엇인지 설명 할 수 있습니까? 왜 Android Studio에 포함되어 있습니까?
답변:
Gradle은 빌드 시스템입니다.
Android Studio 이전에는 개발 목적으로 Eclipse를 사용하고 있었지만 Eclipse없이 Android APK를 작성하는 방법을 알지 못했습니다.
명령 행에서이 작업을 수행 할 수 있지만 SDK에서 각 도구 (dx, aapt)의 기능을 알아야합니다. 이클립스는 우리에게 자체 빌드 시스템을 제공함으로써 저수준이지만 중요하고 기본적인 세부 사항으로부터 우리를 구했습니다.
이제 res
폴더가 폴더와 동일한 디렉토리에있는 이유가 궁금 src
하십니까?
이것은 빌드 시스템이 그림으로 들어가는 곳입니다. 빌드 시스템은 자동으로 모든 소스 파일 ( .java
또는 .xml
)을 가져온 다음 적절한 도구를 적용하고 (예 : java
클래스 파일을 가져와 파일로 변환 dex
), 모든 파일을 하나의 압축 파일 (사랑하는 APK)로 그룹화합니다.
이 빌드 시스템은 몇 가지 규칙을 사용합니다. 하나의 예는 소스 파일 (Eclipse에서는 \src
폴더) 또는 자원 파일 (Eclipse에서는 \res
폴더)을 포함하는 디렉토리를 지정하는 것입니다 .
이제이 모든 작업을 자동화하려면 스크립트가 있어야합니다. 리눅스에서 쉘 스크립트를 사용하거나 Windows에서 배치 파일 구문을 사용하여 자체 빌드 시스템을 작성할 수 있습니다. 알았다?
Gradle은 다른 빌드 시스템 에서 최고의 기능을 사용하여 하나의 기능으로 결합한 또 다른 빌드 시스템 입니다. 단점으로 인해 개선되었습니다. 그것은이다 JVM 기반의 시스템을 구축 하는 수단은 안드로이드 스튜디오를 사용합니다 자바에서 자신의 스크립트를 쓸 수 있다는 것.
gradle의 한 가지 멋진 점은 플러그인 기반 시스템 이라는 것입니다 . 이것은 자신의 프로그래밍 언어가 있고 소스에서 일부 패키지 (Java의 JAR과 같은 출력)를 작성하는 작업을 자동화하려는 경우 Java 또는 Groovy (또는 Kotlin, 여기 참조 ) 에서 완전한 플러그인을 작성할 수 있으며 세계의 다른 지역에 배포하십시오.
Google은 시장에서 가장 진보 된 빌드 시스템 중 하나를 보았으며 학습 곡선을 거의 또는 전혀 사용하지 않고 Groovy 또는 다른 새로운 언어를 배우지 않고도 자신 만의 스크립트를 작성할 수 있음을 깨달았습니다. 그래서 그들은 Gradle 용 Android 플러그인을 작성했습니다.
build.gradle
프로젝트에서 파일 을 보았을 것 입니다. 여기서 작업을 자동화하는 스크립트를 작성할 수 있습니다. 이 파일에서 본 코드는 Groovy 코드입니다. 쓰면 System.out.println("Hello Gradle!");
콘솔에 인쇄됩니다.
간단한 예는 실제 빌드 프로세스가 수행되기 전에 한 디렉토리에서 다른 디렉토리로 파일을 복사해야한다는 것입니다. Gradle 빌드 스크립트가이를 수행 할 수 있습니다.
Google이 Android에 사용하려는 새로운 빌드 도구입니다. 그것은 개미보다 더 확장 가능하고 유용하기 때문에 사용됩니다. 개발자 경험을 향상시키기위한 것입니다.
Google I / O 의 Android 개발자 팀에서 Xavier Ducrohet의 강연을 여기에서 볼 수 있습니다.
Xavier와 Tor Norbye의 Android Studio에 대한 또 다른 이야기도 있습니다 .
Gradle 은 Android Studio에서 실행되는 빌드 시스템 입니다.
다른 언어로 예를 들면 다음과 같습니다.
Gradle
와 비슷 make
, 난 그냥 그 개념을 가지고
다음은 Gradle
Android Studio에서 무엇이 무엇 이고 어떻게 사용하는지에 대한 자세한 설명 입니다.
Gradle 파일 탐색
Gradle 빌드 파일
Gradle 빌드 파일은 a Domain Specific Language or DSL
를 사용하여 사용자 정의 빌드 로직을 정의하고 Gradle 용 Android 플러그인의 Android 특정 요소와 상호 작용합니다.
Android Studio 프로젝트는 독립적으로 빌드, 테스트 및 디버깅 할 수있는 구성 요소 인 하나 이상의 모듈로 구성됩니다. 각 모듈에는 자체 빌드 파일이 있으므로 모든 Android Studio 프로젝트에는 2 가지 종류의 Gradle 빌드 파일이 있습니다.
최상위 빌드 파일 : 프로젝트를 구성하는 모든 모듈에 공통적 인 구성 옵션이 있습니다.
모듈 수준 빌드 파일 : 각 모듈에는 모듈 별 빌드 설정이 포함 된 자체 Gradle 빌드 파일이 있습니다. 프로젝트의 최상위 빌드 파일 대신 모듈 수준 빌드 파일을 편집하는 데 대부분의 시간을 소비합니다.
이러한 build.gradle
파일 을 보려면 프로젝트 탭을 선택하여 Android Studio의 프로젝트 패널을 열고 Gradle Scripts 폴더를 확장하십시오. Gradle Scripts 폴더의 처음 두 항목은 프로젝트 레벨 및 모듈 레벨 Gradle 빌드 파일입니다.
최상위 Gradle 빌드 파일
모든 Android Studio 프로젝트에는 단일 최상위 Gradle 빌드 파일이 포함되어 있습니다. 이 build.gradle
파일은 Gradle Scripts 폴더에 나타나는 첫 번째 항목이며 명확하게 Project로 표시됩니다.
대부분의 경우이 파일을 변경할 필요는 없지만 파일 내용과 프로젝트 내에서 수행하는 역할을 이해하는 것이 여전히 유용합니다.
모듈 수준의 Gradle 빌드 파일
프로젝트 수준의 Gradle 빌드 파일 외에도 각 모듈에는 자체 Gradle 빌드 파일이 있습니다. 다음은 기본 모듈 수준 Gradle 빌드 파일의 주석이 달린 버전입니다.
다른 Gradle 파일
build.gradle 파일 외에도 Gradle Scripts 폴더에는 다른 Gradle 파일이 포함되어 있습니다. 대부분의 경우 프로젝트와 관련하여 변경하면 자동으로 업데이트되므로 이러한 파일을 수동으로 편집 할 필요가 없습니다. 그러나 프로젝트 내에서 이러한 파일의 역할을 이해하는 것이 좋습니다.
gradle-wrapper.properties (Gradle 버전)
이 파일을 사용하면 컴퓨터에 Gradle이 설치되어 있지 않아도 다른 사람들이 코드를 작성할 수 있습니다. 이 파일은 올바른 버전의 Gradle이 설치되어 있는지 확인하고 필요한 경우 필요한 버전을 다운로드합니다.
settings.gradle
이 파일은 프로젝트를 구성하는 모든 모듈을 참조합니다.
gradle.properties (프로젝트 속성)
이 파일에는 전체 프로젝트에 대한 구성 정보가 포함되어 있습니다. 기본적으로 비어 있지만이 파일에 추가하여 프로젝트에 다양한 속성을 적용 할 수 있습니다.
local.properties (SDK 위치)
이 파일은 Android Gradle 플러그인에 Android SDK 설치를 찾을 수있는 위치를 알려줍니다.
참고 : local.properties
Android SDK의 로컬 설치와 관련된 정보가 포함되어 있습니다. 이것은이 파일을 소스 제어하에 두지 말아야한다는 것을 의미합니다.
나는 gradle에 대한 명확한 이해를 얻었습니다.
Gradle은 프로그램의 소스 코드를 빌드하는 빌드 도구 중 하나 입니다. 따라서 Android Studio의 중요한 부분이므로 애플리케이션 개발을 시작하기 전에 설치해야합니다.
우리는 첫 번째 프로젝트를 만들 때 Android Studio가 대신하기 때문에 별도로 설치할 필요가 없습니다.
DEFINITION : Gradle을은 도구와 제작하는 프로젝트의 리소스를 관리 할 수있는 유연성이 빌드 개발자를 제공하는 구조화 된 건물의 메커니즘을 설명 할 수 smaller in size
, targeting specific requirements
특정 구성의 특정 장치에 대한을
기본 구성
minimumSdk
maximumSdk
targettedSdk
versionCode
versionName
라이브러리 :: 이전에는 지루한 작업이었던 요구 사항에 따라 Android 라이브러리 또는 다른 타사 라이브러리를 추가 할 수 있습니다. 라이브러리가 기존 프로젝트에 적합하지 않은 경우, 개발자에게 라이브러리를 추가 할 수 있도록 프로젝트를 변경하기위한 적절한 솔루션을 찾을 수있는 로그가 개발자에게 표시됩니다. 한 줄의 의존성
내장 생성 품종
다양한 빌드 변형을 얻기 위해 빌드 유형을 빌드 플레이버와 결합
==================== ====================
| BuildTypes | | ProductFlavours |
-------------------- ====================== --------------------
| Debug,Production | || || | Paid,Free,Demo,Mock|
==================== || || ====================
|| ||
VV VV
=================================================================
| DebugPaid, DebugFree, DebugDemo, DebugMock |
| ProductionPaid, ProductionFree, ProductionDemo, ProductionMock |
=================================================================
축소 크기
Gradle은 통합 라이브러리에서 사용되지 않은 리소스와 사용되지 않은 리소스를 제거하여 생성 된 빌드의 크기를 줄이는 데 도움이됩니다.
권한 관리
요구 사항에 따라 특정 시나리오에서 특정 권한을 추가하여 특정 빌드에 대한 특정 권한을 지정할 수 있습니다
특정 장치 용 내장
특정 밀도 및 특정 api 수준을 포함하는 특정 장치의 빌드 생성을 관리 할 수 있습니다. 이를 통해 여러 유형의 기기에서 요구 사항에 따라 앱 스토어에서 제품을 배포 할 수 있습니다.
좋은 참조
Gradle에 대한 모든 정보가 있습니다. Gradle Plugin 사용 설명서
새로운 빌드 시스템의 목표
새로운 빌드 시스템의 목표는 다음과 같습니다.
- 코드와 리소스를 쉽게 재사용 할 수 있도록합니다
- 다중 apk 배포 또는 다양한 응용 프로그램을 위해 여러 응용 프로그램 변형을 쉽게 만들 수 있습니다.
- 빌드 프로세스를 쉽게 구성, 확장 및 사용자 정의
- 좋은 IDE 통합
왜 그래들?
Gradle은 고급 빌드 시스템 일뿐만 아니라 플러그인을 통해 사용자 정의 빌드 로직을 생성 할 수있는 고급 빌드 툴킷입니다.
Gradle을 선택하게 한 기능 중 일부는 다음과 같습니다.
- 빌드 로직을 설명하고 조작하기위한 DSL (Domain Specific Language)
- 빌드 파일은 Groovy 기반이며 DSL을 통해 선언 요소를 혼합하고 코드를 사용하여 DSL 요소를 조작하여 사용자 정의 논리를 제공 할 수 있습니다.
- Maven 및 / 또는 Ivy를 통한 내장 종속성 관리
- 매우 유연합니다. 모범 사례를 사용할 수는 있지만 자체 작업 방식을 강요하지는 않습니다.
- 플러그인은 빌드 파일을 사용하기 위해 자체 DSL 및 자체 API를 노출 할 수 있습니다.
- IDE 통합을 가능하게하는 우수한 툴링 API
Gradle 은 범용적이고 선언적인 빌드 도구입니다. 빌드 스크립트에서 구현하려는 거의 모든 것을 빌드하는 데 사용할 수 있기 때문에 일반적인 용도입니다. 빌드 파일에서 많은 코드를 보지 않기 때문에 선언적이며 읽기 쉽고 유지 관리가 쉽지 않습니다. 따라서 Gradle은 규칙에 대한 아이디어와 단순하고 선언적인 빌드를 제공하지만 도구를 적용하고 개발자가 확장 할 수 있도록합니다. 또한 기본 동작과 다른 후크를 사용자 정의하여 타사 기능을 쉽게 추가 할 수 있습니다.
Gradle은 두 도구의 좋은 부분을 결합하고 추가 기능을 제공하고 Groovy를 DSL (Domain Specific Language)로 사용합니다. 빌드 수명주기 및 사용 편의성과 같은 Maven 기능을 통해 Ant 도구의 강력 함과 유연성을 제공합니다.
왜 그래들? 왜 지금?
빌드 도구의 응답은 비표준 확장 메커니즘을 통해 스크립팅 기능을 추가하는 것입니다. 스크립팅 코드를 XML과 혼합하거나 빌드 로직에서 외부 스크립트를 호출하게됩니다. 시간이 지남에 따라 점점 더 많은 사용자 정의 코드를 추가해야한다고 상상하기 쉽습니다. 결과적으로, 실수로 복잡성을 초래할 수 있으며, 유지 보수성이 유리합니다.
릴리스 버전의 프로젝트를 빌드 할 때 파일을 특정 위치로 복사한다고 가정 해 봅시다. 버전을 식별하려면 프로젝트를 설명하는 메타 데이터에서 문자열을 확인하십시오. 특정 번호 매기기 구성표 (예 : 1.0-RELEASE)와 일치하면 파일을 지점 A에서 지점 B로 복사합니다. 외부 관점에서 보면 사소한 작업처럼 들릴 수 있습니다. 많은 전통적인 도구의 빌드 언어 인 XML에 의존해야한다면이 간단한 논리를 표현하는 것이 상당히 어려워집니다.
Java 빌드 도구의 진화
Java 빌드 로직은 XML로 설명해야합니다. XML은 계층 적 데이터를 설명하는 데는 좋지만 프로그램 흐름과 조건부 논리를 표현하는 데는 부족합니다. 빌드 스크립트가 복잡 해짐에 따라 빌딩 코드를 유지 관리하는 것은 악몽이됩니다.
Ant에서는 JAR 대상이 컴파일 대상에 종속되도록합니다. Ant는 프로젝트를 구성하는 방법에 대한 지침을 제공하지 않습니다. 유연성을 극대화 할 수 있지만 Ant는 각 빌드 스크립트를 고유하고 이해하기 어렵게 만듭니다. 프로젝트에 필요한 외부 라이브러리는 일반적으로 중앙 위치에서 라이브러리를 가져 오는 자동 메커니즘이 없으므로 버전 제어에 체크인됩니다.
2004 년 7 월에 릴리스 된 Maven 1은이 프로세스를 완화하려고 시도했습니다. 종속성 관리는 물론 표준화 된 프로젝트 및 디렉토리 구조를 제공했습니다. 불행히도, 커스텀 로직은 구현하기 어렵다
Gradle 은 해당 세대의 빌드 도구에 적합하며 최신 빌드 도구의 많은 요구 사항을 충족시킵니다 (그림 1). 표현 방식의 DSL, 컨피규레이션 접근 방식, 강력한 종속성 관리 기능을 제공합니다. XML을 포기하고 올바른 언어로 Groovy를 도입하여 빌드 로직을 정의합니다. 설득력 있지 않습니까?
Gradle은 다른 빌드 도구의 최고의 기능을 결합합니다.
Gradle의 매력적인 기능 세트
Ant 또는 Maven 대신 Gradle을 사용하여 Java 프로젝트를 빌드하는 이유는 무엇입니까?
Android 용 기본 빌드 도구 (및 JVM의 새로운 빌드 도구)는 복잡한 다국어 빌드를 쉽게 스크립팅 할 수 있도록 설계되었습니다. Ant 또는 Maven을 사용하는 경우 변경해야합니까?
빌드 스크립트 내에서 Gradle의 강력한 기능을 잠금 해제하는 열쇠는 아래 이미지와 같이 도메인 모델을 발견하고 적용하는 데 있습니다.
Gradle은 엔터프라이즈 빌드와 관련된 모든 요구 사항을 알 수 없습니다. Gradle은 수명주기 단계에 후크를 노출시켜 빌드 스크립트의 실행 동작을 모니터링하고 구성 할 수 있습니다.
Gradle은 Groovy에서 구현 된 DSL을 노출시켜 모델의 어휘를 설정합니다. 복잡한 문제 영역을 다룰 때,이 경우 소프트웨어를 구축하고 공통 언어를 사용하여 논리를 표현할 수있는 강력한 도구가 될 수 있습니다.
또 다른 예는 빌드 도구로 해결되는 매우 일반적인 문제인 외부 라이브러리에 대한 종속성을 표현할 수있는 방법입니다. 기본 Gradle은 빌드 스크립트에 대한 두 가지 구성 블록을 제공하며,이를 통해 검색하려는 종속성 및 리포지토리를 정의 할 수 있습니다. 표준 DSL 요소가 필요에 맞지 않으면 Gradle의 확장 메커니즘을 통해 자신의 어휘를 도입 할 수도 있습니다.
다른 빌드 툴과 통합
Gradle은 아래 이미지와 같이 이전의 Ant, Maven 및 Ivy와 잘 어울립니다.
빌드에서 배포까지 프로젝트 자동화
이미지 : 배포 파이프 라인의 단계
코드 컴파일
실행 단위 및 통합 테스트
정적 코드 분석 수행 및 테스트 범위 생성
배포판 만들기
대상 환경 프로비저닝
결과물 배포
연기 및 자동화 된 기능 테스트 수행
Gradle은 빌드 시스템 입니다. 빌드 시스템 은 프로그램 컴파일 프로세스를 자동화하도록 설계된 소프트웨어 도구입니다. 빌드 시스템은 다양한 형태로 제공되며 다양한 소프트웨어 빌드 작업에 사용됩니다. 그들의 주요 목표는 효율적으로 실행 파일을 만드는 것입니다.
또 다른 관련 용어는 소프트웨어 빌드 작성을 자동화하는 프로세스 및 컴퓨터 소스 코드를 이진 코드로 컴파일, 이진 코드 패키징 및 자동화 된 테스트 실행과 같은 관련 프로세스 인 빌드 자동화입니다.
다른 언어에 대한 유사한 빌드 시스템은 거의 없습니다 ( 여기에서 전체 목록 참조 ).
설득력이 떨어질 위험에 처한 이유는 이것이 Android Studio / Gradle 경험이 왜 그렇게 나쁜지에 대한 문제라고 생각합니다.
전형적인 Clojure 경험 :
일반적인 Android Studio / Gradle 경험 :
이것이 Gradle의 잘못인지 확실하지 않습니다. 그러나 "Eclipse 프로젝트에서 가져 오기"는 상당히 색다른 것으로 보입니다. Gradle의 모든 정교함과 빌드 시스템의 장점에 대해 Android Studio는 Eclipse에서 빌드 종속성이나 빌드 프로세스를 가져 오는 것만으로는 아닙니다.
완전한 종속성 그래프를 가져 오지 못한 경우 알려주지 않습니다. Android Studio는 문제 해결 방법에 대한 유용한 도움말이나 팁을 제공하지 않습니다. Eclipse 폴더에서 수동으로 찾을 수있는 위치는 알려주지 않습니다. 어떤 라이브러리가 누락 된 것 같지는 않습니다. 또는 Maven 등을 검색하도록 도와주십시오.
2016 년에는 Leiningen / Clojars, node의 npm, Python의 pip 또는 Debian apkg (그리고 다른 언어 및 시스템의 유사한 패키지 관리자가 많이 있습니다)과 같은 것들이 모두 아름답게 작동합니다 ... 종종 의존성이 사라졌습니다.
안드로이드 제외. Android Studio는 이제 여전히 누락 된 의존성 지옥을 경험하는 것처럼 보이는 유일한 장소입니다.
이것이 Google의 잘못이라고 생각합니다. 그들은 강력한 변환 프로세스를 생성하지 않고 Eclipse에서 Android Studio / Gradle로 신중하게 전환하기로 결정했을 때 Android 생태계 (및 수천 개의 기존 Android 프로젝트 / 온라인 자습서)를 중단했습니다. 이클립스에서 프로젝트를 수행하는 사람들은 프로젝트를 AS에 적용하지 않습니다 (아마도 고통스럽기 때문에). AS에서 이러한 프로젝트를 사용하려는 사람들도 같은 문제를 겪고 있습니다.
어쨌든 Gradle 이이 강력한 빌드 시스템이라면 왜 SDK 관리자에서 여전히 많은 다른 종속성을 관리하고 있습니까? 예를 들어, ndk가 필요한 프로젝트가 Gradle 파일에 이것을 지정하여 필요할 때 자동으로 설치되고 내장되도록 할 수없는 이유는 무엇입니까? NDK가 왜 특별한가요? 대상 플랫폼과 유사합니까? 프로젝트를 단순히 확인하지 않고 IDE에서 명시 적으로 설치하는 이유는 무엇입니까?
Gradle
플러그인을 통해 맞춤형 빌드 로직을 생성 할 수있는 고급 빌드 툴킷 및 고급 빌드 시스템입니다!
장점 :
매니페스트 항목
DSL을 통해 다음 매니페스트 항목을 구성 할 수 있습니다.
변형 빌드
기본적으로 Android 플러그인은 프로젝트를 자동으로 설정하여 디버그 및 릴리스 버전의 애플리케이션을 빌드합니다.
의존성
JAR 파일과 같이 모듈이 의존하는 로컬 파일 시스템에 바이너리 아카이브가있는 경우 해당 모듈의 빌드 파일에서 이러한 종속성을 선언 할 수 있습니다.
먼저 리포지토리를 목록에 추가 한 다음 Maven 또는 Ivy가 아티팩트를 선언하는 방식으로 종속성을 선언해야합니다.
Gradle은 개미가 Java에 해당하는 Groovy JVM 언어입니다. 기본적으로 Groovy의 빌드 도구입니다. Ant와는 달리 전체 Groovy 언어를 기반으로합니다. 예를 들어 Gradle 스크립트에 Groovy 스크립트 코드를 작성하여 특정 도메인 언어에 의존하지 않고 무언가를 수행 할 수 있습니다.
IntelliJ의 특정 통합을 모르지만 Groovy를 "확장"하여 특정 "빌드"언어 프리미티브를 작성할 수 있고 Groovy 언어의 일부가되었습니다. (Groovy의 메타 프로그래밍은 그 자체로 전체 토론입니다.) IntelliJ / Google은 Gradle을 사용하여 매우 높은 수준의 빌드 언어를 만들 수 있지만 확장 가능한 개방형 표준을 기반으로하는 언어 빌드입니다.
Gradle은 Android 프로젝트뿐만 아니라 다양한 환경에 통합 할 수있는 자동화 된 빌드 툴킷입니다.
gradle로 할 수있는 일이 몇 가지 있습니다.
Gradle에는 Android Studio 프로젝트에 대한 기본 구성이 있으므로 새 프로젝트에 최소 구성이 필요합니다.
의존성 선언. 로컬 또는 원격 서버에서 호스팅되는 종속성 jar 파일 또는 라이브러리 파일을 선언 할 수 있습니다.
Gradle은 프로젝트 소스에서 테스트 디렉토리와 테스트 APK를 자동으로 생성합니다.
keyPassword
및과 같은 필요한 정보를 모두 keyAlias
Gradle 빌드 파일에 추가하면 Gradle을 사용하여 서명 된 APK를 생성 할 수 있습니다.
Gradle은 다른 패키지로 여러 개의 APK를 생성하고 단일 모듈에서 구성을 빌드 할 수 있습니다.
Android Studio에서 Gradle은 종속성을 관리하고 사용자 지정 빌드 논리를 제공하여 Android 패키지 (apk 파일)를 작성하는 데 사용되는 사용자 지정 빌드 도구입니다.
APK 파일 (Android 애플리케이션 패키지)은 특수 형식의 zip 파일이며
APK 파일은 ADB (Android Debug Bridge)를 사용하여 서명되고 장치로 푸시됩니다.
Gradle은 여러 소스, 프로젝트, 라이브러리 등에서 수만 줄의 코드가 포함 된 복잡한 Android 프로젝트 빌드를 자동화 할 수있게합니다. 다양한 구성 사양에 따라 여러 개의 최적화 된 APK를 조건부로 생성 할 수 있습니다. 관심있는 다른 답변은 Gradle 의이 측면에 대한 자세한 내용을 제공합니다.
이 경우 99 %에서, Gradle을 개발 안드로이드를 처음 사용하는 경우, 무엇을 중지 건물에서 프로젝트를. 안드로이드 빌드 프로세스를 효과적으로 난독 화하고 경험이 부족한 개발자가 사용할 수 없게 만드는 복잡하고 복잡한 시스템입니다. 같은 :
이 모든 것들은 안드로이드 개발자들에게는 흥미롭고 유용하지만, 쉽게 접근 할 수 없으며 진입 장벽이 있습니다. OP 가이 질문을하도록 영감을 준 것은 Gradle에 의해 간단한 앱을 빌드하고 지속적으로 방해하려고 너무 오래 보낸 후 필사적으로 네오 피트 개발자를 때리는 좌절의 느낌이라고 생각합니다. 이러한 모든 기술에 사용할 수있는 엄청나게 많은 양의 기술 문서로 인해 문제가 심각하게 악화됩니다. 또한 많은 개발 요구에 Gradle은 과도합니다.
대안은 android SDK에서 사용 가능한 도구를 자동화하여 프로젝트를 빌드하는 쉘 스크립트를 작성하는 것입니다. 이 접근 방식의 장점은 빌드 프로세스와 안드로이드 생태계를 연구하고 이해하는 가장 좋은 방법 일 것입니다. 그러나이 접근법은 안드로이드를 시험해 본 경험이없는 멍청한 놈보다 심도없는 기술 헤드에 더 적합합니다.
그것의 부재로 눈에 띄는 것은 (그러한 것이 있으면 알려주십시오) 엔트리 레벨의 경량 IDE로 기능 세트가 축소되어 동시에 빌드 프로세스를 단순화하면서 동시에 프로세스를 단순화하는 동시에 Netbeans 또는 Eclipse가 아닙니다. Gradle을 사용하십시오 (개미에 문제가 있음). 몇 가지 일반적인 구성을 준수하는 APK를 쉽게 생성하고 그러한 방식으로 결정하면 전체 Android Studio 프로젝트로 발전 할 수있는 프로젝트 구조를 사용해야합니다.
Android Studio에서 Gradle은 Android 애플리케이션 프로젝트를 빌드하는 데 사용되므로 빌드 시스템의 역할을 수행합니다. Android Studio 이전에는 Eclipse에서 명령 행 도구를 사용하여 애플리케이션을 컴파일하고 빌드했지만 GUI 기반 단계에서 곧 ANT를 사용하여 Android 애플리케이션을 빌드하고 실행하는 데 사용했습니다. 모든 안드로이드 애플리케이션 개발 툴은 리소스, 자바 소스 코드, 외부 라이브러리를 컴파일하고 최종 APK로 결합해야합니다.
Gradle 은 코드 컴파일, 테스트, 배포 및 코드를 .dex 파일로 변환하여 장치에서 앱을 실행하는 빌드 시스템입니다.
Android Studio에는 Gradle 시스템이 사전 설치되어 있으므로 프로젝트를 빌드하기 위해 추가 런타임 소프트웨어를 설치할 필요가 없습니다. 클릭 할 때마다android studio 버튼 gradle 작업이 자동으로 트리거되어 프로젝트 빌드가 시작되고 gradle이 작업을 완료 한 후 앱이 AVD 또는 연결된 장치에서 실행되기 시작합니다.
Gradle과 같은 빌드 시스템은 컴파일러, 링커 등이 아니지만 컴파일 작업, 파일 연결, 테스트 사례 실행 및 결국 Android 애플리케이션의 apk 파일에 코드 번들링을 제어하고 감독합니다.
모든 안드로이드 스튜디오 프로젝트마다 두 개의 build.gradle 파일이 있습니다. 하나는 애플리케이션 용 이고 다른 하나는 프로젝트 레벨 (모듈 레벨) 빌드 파일입니다.
빌드 프로세스에서 컴파일러는 소스 코드, 리소스, 외부 라이브러리 JAR 파일 및 AndroidManifest.xml (응용 프로그램에 대한 메타 데이터 가 포함됨 )을 가져와 bytecode 를 포함하는 .dex (Dalvik Executable files) 파일 로 변환합니다 . 이 바이트 코드는 모든 안드로이드 기기에서 앱을 실행하도록 지원됩니다. 그런 다음 APK 관리자는 .dex 파일과 다른 모든 리소스를 단일 apk 파일로 결합 합니다. APK Packager는 각각의 디버그 또는 릴리스 키 저장소를 사용하여 디버그 또는 릴리스 apk에 서명 합니다.
디버그 apk 는 일반적으로 테스트 목적으로 사용되거나 개발 단계에서만 사용된다고 말할 수 있습니다. 앱이 원하는 기능으로 완성되고 외부 사용을 위해 애플리케이션을 게시 할 준비가 되면 릴리스 키 저장소를 사용하여 서명 된 릴리스 apk가 필요합니다 .
이제 gradle 파일에 약간의 빛을 비추십시오.
setting.gradle setting.gradle (Gradle setting) 파일은 앱에서 사용되는 모든 모듈을 지정하는 데 사용됩니다.
build.gradle (프로젝트 레벨) 최상위 레벨 (모듈) build.gradle 파일은 프로젝트 레벨의 빌드 구성을 정의하는 프로젝트 레벨 빌드 파일입니다. 이 파일은 Android 애플리케이션 프로젝트의 모든 모듈에 구성을 적용합니다.
build.gradle (응용 프로그램 수준) 애플리케이션 레벨 build.gradle 파일은 안드로이드 프로젝트의 각 모듈에 있습니다. 이 파일에는 특정 응용 프로그램 모듈에 대한 패키지 이름이 applicationID, 버전 이름 (apk 버전), 버전 코드, 최소 및 대상 SDK가 포함됩니다. jar 파일이 아닌 외부 라이브러리를 포함하는 경우 응용 프로그램의 종속성으로 프로젝트에 포함하려면 앱 레벨 gradle 파일에서 라이브러리를 언급해야합니다.
참고 : 특정 애플리케이션이 스마트 폰, 태블릿 또는 TV와 같은 개별 모듈 용으로 개발 된 경우 별도의 gradle 파일을 모두 만들어야합니다. 명령 행 도구를 통해 gradle 시스템을 시작할 수도 있습니다 . 다음 명령이 사용됩니다.
./gradlew 빌드-(빌드 프로젝트)
./gradlew 클린 빌드-(빌드 프로젝트 완료 스크래치)
./gradlew 클린 빌드-(테스트 실행)
./gradlew 래퍼-(사용 가능한 모든 작업을 보려면)
Gradle = Groovy + Cradle Hans Dockter 포럼 의견
혼란은 "Build"또는 Android Studio에서 무언가라고 불릴 때 약간 불필요합니다.
우리는 개발 커뮤니티에서 일을 어렵게 만들고 싶습니다.