>  기사  >  Java  >  안드로이드 초보자를 위한 Gradle 지식 대중화

안드로이드 초보자를 위한 Gradle 지식 대중화

高洛峰
高洛峰원래의
2016-11-19 09:01:361405검색

1. 서문

얼마 전 컬트 그룹에서 누군가가 "저는 Android를 배운 지 얼마 안 됐는데 Gradle을 이해하지 못합니다. 많은 정보를 읽었지만 아직까지 막연한 이해가 필요합니다. 장 형제님이 Gradle에 대해 말씀해 주셨으면 좋겠습니다." 뜻밖에도 그룹에 있는 많은 사람들이 같은 느낌을 표현하며 반응했습니다. 그룹에서 누군가 책을 추천하고 이 책을 읽으면 충분하다고 말했습니다. 솔직히 책 읽는 걸 반대하는 건 아니지만, 지식 포인트를 이해하려면 책을 읽어야 하는데 그게 너무 비효율적이어서 양심을 갖고 무심코 말했다. 그룹에서 열어보는 건 어때요?" Gradle의 기본 개념을 대중화할 수 있도록 강의를 해줄 수 있을까요?" 의외로 평소 다이브하는 사람들이 다 나오더니 "666..."이라고 대답하더군요. 시간이 별로 없어서 말하자마자 후회했지만, 결국 나는 그날 밤 야근을 마치고 집에 돌아왔을 때 그룹 내에서 그 작품을 대중화하기 시작했다. 아무 준비 없이 한시간 넘게 진행했는데 의외로 모두들 만장일치로 효과가 매우 좋았다고 했고, 수업을 듣는 분들도 모두 매우 기뻐하셨다. 진심으로 내가 쓴 채팅 기록을 정리해주신 분들이 많다. 이 주제가 많은 독자들에게 도움이 될 것이라고 생각하여 이 노트를 기반으로 몇 가지 추가 사항과 개선 사항을 작성했습니다. 기사가 도움이 될 것입니다!

2. 빌드 도구란 무엇인가요?

우리 모두 Gradle이 빌드 도구라는 것을 알고 있는데, 빌드 도구란 무엇인가요? 인터넷에 있는 많은 텍스트 설명을 이해하는 것이 어렵다는 것을 알았습니다. 여기서는 Android 개발을 예로 들어 보겠습니다.

우리는 예전에 개발을 위해 Eclipse를 사용했는데 Eclipse가 원래 Java 개발에 사용되었던 IDE(통합 개발 환경)이고 Android는 Java 언어를 기반으로 하므로 처음에는 모두가 알고 있습니다. 구글이 이클립스에서 안드로이드를 개발할 수 있기를 바란다. 구글이 ADT(Android Developer Tools)라는 것을 개발했기 때문이다. ADT는 이제부터 코드를 코딩한 뒤 Eclipse에서 직접 컴파일, 실행, 서명, 패키징 등의 일련의 과정을 수행하기만 하면 되고, 그 뒤에 있는 작업은 모두 ADT의 작업이다. 어떤 의미에서 ADT는 우리의 빌드 도구입니다.

Google은 Android Studio를 출시한 이후 Gradle을 빌드 도구로 기본 사용한다고 발표한 후 ADT 업데이트를 포기했습니다. 그 이후로 Gradle이 Android 개발자 분야에 진출하게 되면서 연락이 오기 시작했습니다. AS의 베타 버전에서 사용하고 Gradle을 배우세요.

일반적으로 위에서 언급한 컴파일, 실행, 서명, 패키징 외에도 빌드 도구에는 종속성 관리 기능이 있습니다. 아니면 Eclipse를 예로 들겠습니다. Eclipse Android를 개발할 때 타사 라이브러리를 사용해야 하는 경우 일반적으로 jar 파일을 먼저 다운로드한 다음 libs 디렉터리에 jar 파일을 추가한 다음 프로젝트에서 참조할 수 있습니다. 하지만 이 관리 방법이 번거롭다고 생각하지 않으시나요? 타사 라이브러리가 업데이트되었다고 가정하면 최신 Jar 파일을 다운로드한 후 참조하는 라이브러리가 적어지면 괜찮습니다. 참조되는 타사 라이브러리가 너무 많으면 문제가 될 것입니다. 죽음, 이 방법은 의존성에만 의존하고 관리에는 의존하지 않는다고 말할 수 있습니다.

이제 모두가 Gradle이 타사 라이브러리를 참조하는 방식에 익숙합니다.

'com.android.support:support-v4:24.0.1' 컴파일


이런 종속성 방법은 매우 편리하지 않나요? 소스 주소를 직접 볼 수 있습니다. 버전 번호만 변경하면 됩니다. 이것이 바로 종속성 관리입니다.

따라서 빌드 도구는 프로젝트의 컴파일, 실행, 서명, 패키징, 종속성 관리 등을 위한 기능 모음입니다. 기존 빌드 도구에는 Make, Ant, Maven, Ivy 등이 포함되며 Gradle은 자동화된 빌드 도구의 새로운 세대입니다.

3. Gradle이란?

위에서 언급했듯이 Gradle은 차세대 자동화 빌드 도구이며 AS 및 Android 공식 웹사이트와는 아무런 관련이 없습니다. https://gradle.org/, Ant 및 Maven과 같은 빌드 도구는 모두 xml 기반으로 설명되어 있으며 이는 매우 비대합니다. Gradle은 Groovy라는 언어를 사용하지만 구문은 동적입니다. Java 기반으로 많은 개선을 이루어 더욱 간결하고 유연하게 사용할 수 있게 되었으며 Gradle은 Maven 및 Ivy와 완벽하게 호환됩니다. 이는 기본적으로 Maven 및 Ivy를 포기할 수 있음을 알린 것이며 Gradle의 출시는 주로 Java 애플리케이션을 기반으로 합니다. 물론 현재는 주로 Android, C, C++를 지원합니다.

4. Gradle과 Android Studio의 관계

위에서 언급했듯이 Gradle은 Android Studio와 아무런 관련이 없지만 Gradle 관계자는 여전히 Android 개발을 중시하고 있으며 Google은 AS Gradle을 출시할 때 이를 선택했습니다. AS에서 Gradle 사용을 지원하기 위해 Google에서는 Android Gradle Plugin이라는 AS용 플러그인을 만들었고, 이 플러그인 덕분에 AS에서 Gradle을 완전히 사용할 수 있습니다. 프로젝트의 루트 디렉터리에 다음 코드가 포함된 build.gradle 파일이 있습니다.

classpath 'com.android.tools.build:gradle:2.1.2'

Gradle 플러그인에 의존하는 코드입니다. 다음 버전 번호는 Gradle 버전이 아닌 Android Gradle 플러그인 버전을 나타냅니다. 이는 Google에서 결정한 것이며 공식 Gradle과는 아무런 관련이 없습니다. Android Gradle 플러그인에 대한 자세한 내용은 여기에서 확인할 수 있습니다. 다음은 Android Gradle 플러그인 각 버전의 특정 변경 사항 및 특정 기능 목록입니다.

http://tools.android.com/tech-docs/new-build-system

알림: 인터넷 서핑이 필요합니다. 과학적으로!

5. Gradle Wrapper

이제 기본적으로 새 프로젝트를 생성한 다음 AS를 클릭하면 기본적으로 Gradle이 직접 설치됩니다. Gradle을 추가로 설치했지만 실제로 이 Gradle은 실제 Gradle이 아닙니다. 그의 이름은 Gradle Wrapper입니다. 이는 Gradle 패키징을 의미합니다. 여러 로컬 프로젝트가 있고 그 중 하나는 여전히 Gradle 1.0을 사용하고 있다고 가정해 보겠습니다. 버전이고 다른 하나는 Gradle 2.0 버전을 사용하는 비교적 새로운 프로젝트이지만 Gradle 1.0만 설치하면 이 문제를 해결하기 위해 확실히 작동하지 않습니다. , Google은 각 프로젝트에 구성되는 Gradle Wrapper 개념을 출시했습니다. 지정된 Gradle 버전을 사용하면 각 Android 프로젝트에 로컬로 작은 Gradle이 있음을 이해할 수 있습니다. 이를 통해 각 프로젝트는 서로 다른 프로젝트 빌드를 지원할 수 있습니다. Gradle 버전.

다음 작업은 모두 Gradle Wrapper를 기반으로 한다는 점을 이해하시면 더 쉽습니다.

기본적으로 AS에서 처음 프로젝트를 생성하면 Gradle이 자동으로 다운로드됩니다. 이 프로세스는 매우 길고 놀라울 정도로 느리지만 처음 이후에는 괜찮습니다. 명령줄을 사용하여 테스트하는 방법을 알려주세요. 터미널이나 AS에서 제공하는 터미널에서 프로젝트 디렉터리로 전환한 다음 ./gradlew -v를 입력하세요(win 사용자는 gradlew -v를 직접 입력하세요). 현재 프로젝트에서 사용되는 gradle 버전을 보면 gradlew는 gradle Wrapper의 약어입니다. 명령줄을 처음 실행하면 다운로드 프롬프트가 나타나고 이어서 점을 하나씩 인쇄하는 과정이 매우 길어집니다. 네트워크 속도에 따라 몇 분에서 수십 분 정도 걸릴 수 있습니다.

어떤 사람들은 내 AS에서 프로젝트가 정상적으로 실행될 수 있는데, Gradle이 다운로드되었다는 의미입니다. 왜 명령줄에서 다시 다운로드해야 합니까? 이론상으로는 안된다고 해서 다시 다운로드를 받았는데, 사실은 그냥 다시 다운로드를 해야만 했던 버그인 것 같습니다.

다운로드가 완료되고 ./gradlew -v를 입력하면 다음과 같은 결과가 나타나면 프로젝트에 문제가 없다는 의미이고, 그렇지 않으면 프로젝트 구성에 문제가 있는 것입니다.

안드로이드 초보자를 위한 Gradle 지식 대중화

6. 안드로이드 프로젝트에 포함된 Gradle 구성 파일

제가 아주 일찍 GitHub에 오픈소스로 공개했던 9GAG 프로젝트를 예로 들어 간략하게 소개하겠습니다. 다음 프로젝트에는 기본 Gradle 관련 구성 파일이 포함되어 있습니다.

안드로이드 초보자를 위한 Gradle 지식 대중화

빨간색으로 표시된 부분을 위에서 아래로 단계별로 분석해 보겠습니다.

9GAG/app/build.gradle

이 파일은 앱 폴더에 있는 모듈의 gradle 구성 파일이기도 하며, 구체적인 구성은 나중에 소개하겠습니다.

9GAG/extras/ShimmerAndroid/build.gradle

각 모듈에는 Gradle 구성 파일이 필요합니다. 구문은 동일합니다. 유일한 차이점은 시작 부분의 선언이

apply plugin: ‘com.android.library’ 
9GAG/gradle

여기에 래퍼 폴더가 있다는 것입니다. 디렉토리를 보면 gradle-wrapper.properties의 내용을 주로 살펴봅니다.

안드로이드 초보자를 위한 Gradle 지식 대중화

디렉토리를 확인하고 다운로드할 수 있습니다. 일반적으로 이 파일에 지정된 잘못된 Gradle 버전은 많은 패키지 가져오기가 실패하는 이유 중 하나입니다.

9GAG/build.gradle

이 파일은 전체 프로젝트에 대한 Gradle 기본 구성 파일입니다. 기본 콘텐츠는 Android Gradle 플러그인의 버전을 선언합니다.

9GAG/settings.gradle

이 파일은 전역 프로젝트 구성 파일로, 주로 Gradle에 추가해야 하는 일부 모듈을 선언합니다. 이 9GAG 파일의 내용을 살펴보겠습니다. :

안드로이드 초보자를 위한 Gradle 지식 대중화

7. 다운로드한 오픈 소스 프로젝트를 올바르게 가져오는 방법은 무엇입니까?

GitHub에서 훌륭한 오픈 소스 프로젝트를 발견한 후 다운로드하고 싶은 경우가 많습니다. 배우지만 첫 번째 단계는 평범합니다. 모두 소스 코드를 AS로 가져온 다음 실행하여 효과를 확인하지만 작업이 종종 실패합니다. 여기서는 오픈 소스 프로젝트를 가져오는 올바른 방법을 알려 드리겠습니다.

下载一个Demo,先打开每个 module下的 gradle 文件,即 app 目录下的 build.gradle 以及各个 library 下的 build.gradle ,首先查看 compileSdkVersion 和 buildToolsVersion,因为有些时候你本地的版本和下载的版本不一致,那么就会导致失败。

然后就是检查 gradle-wrapper ,Google 有些时候要求不同的 AS 支持不同的 gradle 版本。比如 AS 1.0 的时候要求必须使用 gradle 1.x 的版本,等到 AS 2.0 的时候,Google 不支持 gradle1.x 的版本,这个时候你必须手动更新下 android gradle plugin 的版本,然后重新同步下。

检查以上两个地方基本就可以导入并运行了,如果还有其他问题,那可能就是环境或者项目本身的问题了。

8. 认识下几个命令

上面提到了,假设我们没有 IDE ,只有类似 Sublime、Atom、Vim这种轻量编辑器怎么办?那我们就没法开发 Android 了么?然而只要有构建工具,不需要 IDE 我们一样有办法开发,这个时候我们就需要用到几个有用的 Gradle 命令了:

./gradlew -v 版本号  
./gradlew clean 清除9GAG/app目录下的build文件夹  
./gradlew build 检查依赖并编译打包

这里注意的是 ./gradlew build 命令把 debug、release 环境的包都打出来,如果正式发布只需要打 Release 的包,该怎么办呢,下面介绍一个很有用的命令 assemble , 如

./gradlew assembleDebug 编译并打Debug包  
./gradlew assembleRelease 编译并打Release的包


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.