Gradle For Android
8008 단어 Android 소스 코드 분석androidgradle
Gradle 의 기본 이해
Android Studio 에서 Android 프로젝트 는 gradle 로 구 축 됩 니 다. Gradle 스 크 립 트 가 필요 합 니 다. 저 희 는 build. gradle 이 라 고 부 릅 니 다. 일반적으로 build. gradle 에 기본 적 인 설정 과 속성 이 있어 서 구축 을 도 와 줍 니 다.Ant 나 Maven 에 비해 훨씬 간단 할 겁 니 다.
Gradle 이 구축 한 스 크 립 트 는 전통 적 인 XML 텍스트 언어 로 구축 되 는 것 이 아니 라 domain - speci clanguage (DSL) 언어 를 사용 합 니 다.
항목 과 임무
Gradle 에서 가장 중요 한 두 가지 개념 은 프로젝트 와 임무 입 니 다. 매번 의 구축 은 적어도 하나의 프로젝트 를 바탕 으로 하고 모든 프로젝트 에는 적어도 하나의 임무 가 포함 되 어 있 습 니 다.모든 build. gradle 파일 은 하나의 항목 에 대응 하고 작업 은 구 축 된 스 크 립 트 에 정 의 됩 니 다.빌 드 작업 을 시작 할 때마다 Gradle 은 스 크 립 트 에 따라 항목 과 작업 대상 을 수집 하고 하나의 작업 대상 은 일련의 동작 목록 을 포함 합 니 다.하나의 동작 은 자바 와 유사 한 방법 입 니 다. 여기 서 우 리 는 Gradle 스 크 립 트 를 자바 프로그램 으로 이해 할 수 있 습 니 다. 하나의 자바 프로그램 은 많은 모듈 (클래스) 을 포함 할 수 있 고 모든 클래스 에 많은 방법 이 있 습 니 다.
구 축 된 프로필
일반적으로 Android 의 프로필 은 다음 과 같은 몇 부분 으로 구성 되 어 있 습 니 다.
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.2.3'
}
}
우선, Repository 는 무엇 입 니까?Repository 는 파일 의 집합 입 니 다. 이 파일 들 은 group, name, version 을 통 해 구 성 됩 니 다.사용 에 있어 서 주로 jar 와 xml 파일 로 나타 납 니 다. Gradle 은 이 Repository 를 통 해 외부 의존 (external dependencies.) 을 찾 습 니 다. Gradle 은 기본적으로 모든 창 고 를 지정 하지 않 습 니 다.Maven, ivy 와 같은 많은 중 창 고 를 지원 합 니 다. 파일 을 통 해 접근 하거나 HTTP 를 통 해 접근 합 니 다.다음은 예 를 들 어 설명 한다.
1. 로 컬 maven 창 고 를 사용:
repositories {
mavenLocal()()
}
2. 원 격 maven 창 고 를 사용:
repositories {
maven {
url "http://repo.mycompany.com/maven2"
}
}
3. 로 컬 ivy 창 고 를 사용 하기:
repositories {
ivy {
// URL can refer to a local directory
url "../local-repo"
}
}
4. 원 격 ivy 창 고 를 사용:
repositories {
ivy {
url "http://repo.mycompany.com/repo"
}
}
하나의 공 사 는 여러 개의 창 고 를 사용 할 수 있다.그럼 질문 이 왔 습 니 다. dependency 를 어떻게 찾 습 니까?Gradle 은 이렇게 합 니 다. 파일 (build. gradle) 창고 의 순서에 따라 의존 할 곳 을 찾 습 니 다. (예 를 들 어 jar 파일) 어떤 창고 에서 찾 으 면 다른 창고 에서 찾 지 않 습 니 다.
Android 플러그 인 은 Android 환경 을 컴 파일 하고 테스트 하 는 데 필요 한 조건 을 제공 합 니 다. 이 스 크 립 트 로 설명해 야 합 니 다.
apply plugin: 'com.android.application'
다음은 두 가지 속성 을 밝 혀 야 합 니 다.
android {
compileSdkVersion 22
buildToolsVersion "22.0.1"
}
1. CompileSdkVersion 은 SDK 의 버 전 번호, 즉 API Level 입 니 다. 예 를 들 어 API - 19, API - 20, API - 21 등 입 니 다.
2. buildeToolVersion 은 빌 드 도구 버 전 입 니 다.
Gradle Wrapper 의 이해
일반적으로 Gradle 은 안정 적 인 환경 에서 build 를 진행 합 니 다. 새로운 버 전의 Gradle 은 불안정 요 소 를 가 져 옵 니 다. Gradle Wrapper 는 windows 에 있 는 대량 파일 과 다른 운영 체제 에 있 는 스 크 립 트 를 제공 합 니 다.필요 한 Gradle 버 전이 존재 하지 않 으 면 자동 으로 다운로드 되 며, 이미 존재 하면 build 에 자동 으로 사 용 됩 니 다.
Gradle 에서 설명 파일 구조
android {
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
androidTest.setRoot('tests')
} }
제2 장
Gradle 의 파일 및 역할 이해
파일 설정
settings. gradle 파일 이 어떤 것 을 결정 합 니까? module 이 부 어 집 니 다.
Grade 의 작업 예:
assemble 작업 은 프로그램의 원본 코드 를 컴 파일 하고 Jar 파일 을 압축 하여 생 성 합 니 다. 이 작업 은 유닛 테스트 를 수행 하지 않 습 니 다
build 작업 은 완전한 프로젝트 구축 을 수행 합 니 다
clean 작업 은 빌 드 디 렉 터 리 를 삭제 합 니 다
compileJava 작업 은 프로그램의 원본 코드 를 컴 파일 합 니 다
Android Studio 에서 콘 솔 에서 이 작업 을 수행 할 수 있 습 니 다.
BuildConfig and resources
android
buildTypes {
debug {
buildConfigField "String", "API_URL",
"\"http://test.example.com/api\""
buildConfigField "boolean", "LOG_HTTP_CALLS", "true"
}
release {
buildConfigField "String", "API_URL",
"\"http://example.com/api\""
buildConfigField "boolean", "LOG_HTTP_CALLS", "false"
}
}
}
Google 은 App 을 개발 할 때 서버 와 통신 하 는 것 을 피 할 수 없습니다. Google 서버 는 일반적으로 생산 과 테스트 환경 이 있 습 니 다. 개발 과 테스트 를 처리 할 때 테스트 환경 을 사용 하여 디 버 깅 을 하고 정식 발표 할 때 생 성 환경 을 사용 합 니 다.이전 에는 서로 다른 프로필 을 APK 에 압축 해서 제 어 했 는데, 지금 은 달 라 졌 습 니 다. 더 간편 한 방법 이 있 습 니 다. 이것 이 바로 buildConfigField 입 니 다.
buildTypes 에 서 는 debug 모드 와 release 모드 두 가지 모드 가 있 습 니 다.
디 버 깅 에 사용 되 는 것 과 발표 에 사용 되 는 것 을 구분 할 수 있 습 니 다. 두 블록 아래 에 buildConfigField 가 있 습 니 다. 자바 코드 에서 이 변 수 를 참조 할 수 있 습 니 다.
String url = BuildConfig.API_URL;
프로젝트 범위 설정 은 최상 위 build. gradle 에 하 나 를 추가 할 수 있 습 니 다.
4. 567913. 그리고 module 급 build. gradle 에서 이렇게 사용 할 수 있 습 니 다.
ext {
compileSdkVersion = 22
buildToolsVersion = "22.0.1"
}
dependencies 의존 성명
세 가지 요소 에 의존 하여 그룹 이름 (group) 과 이름 (name), 버 전 (version) 으로 구분 합 니 다.
예 를 들 어 다음 과 같다.
android {
compileSdkVersion rootProject.ext.compileSdkVersion
buildToolsVersion rootProject.ext.buildToolsVersion
}
빌 드 유형 생 성
어떤 경우 에 우 리 는 서로 다른 버 전의 APP 가 필요 하 다. 예 를 들 어 내부 네트워크 테스트 상황 에서 호출 된 주 소 는 외부 네트워크 의 정식 주 소 를 발표 하 는 것 과 다르다. 이때 우 리 는 서로 다른 모델 의 APP 로 포장 해 야 한다.
예 를 들 어 우 리 는 이때 debug 버 전과 release 버 전이 필요 합 니 다. 우 리 는 이렇게 설명 할 수 있 습 니 다.
dependencies {
compile 'com.android.support:support-v4:22.2.+'
compile 'com.android.support:appcompat-v7:22.2+'
compile 'com.android.support:recyclerview-v7:+'
}
} } android {
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile
('proguard-android.txt'), 'proguard-rules.pro'
} debug {
minifyEnabled false
proguardFiles getDefaultProguardFile
('proguard-android.txt'), 'proguard-rules.pro'
}
모듈 을 추가 하 는 방법
프로젝트 에서 다른 module 에 의존 해 야 한다 면 gradle. build 파일 에 이러한 의존 도 를 추가 해 야 합 니 다.
4. 567913. 동시에 우 리 는 setting. gradle 에 추가 해 야 합 니 다.
4. 567913. 프로젝트 에 app 라 는 메 인 프로젝트 와 두 개의 의존 프로젝트 를 가 져 온 것 을 볼 수 있 습 니 다.
Gradle 의 Task 사용자 정의
자바 언어 와 달리 저희 Task 에 서 는 좀 더 간결 한 Groovy 를 사 용 했 습 니 다.
예 를 들 어 자바 에서 정 보 를 인쇄 하려 면 이렇게 써 야 합 니 다.
4. 567913. 그리고 Groovy 에서:
4. 567913. 아마도 당신 은 약간의 특성 을 발견 할 수 있 을 것 입 니 다.
1. System. out 같은 네 임 스페이스 가 없습니다 (namespace)
2. 방법 주위 에 괄호 가 없다
3. 한 줄 이 끝 난 후에 분점 이 없다
문자열 을 정의 해 야 한다 면:
자바 문법 에서 정 의 된 문자열 의 작은 따옴표 가 아 닌 작은 따옴표 가 필요 합 니 다.
문자열 의 값 을 바 꿀 필요 가 있다 면 이렇게 써 야 합 니 다.
4. 567913. 만약 에 우리 가 하나의 종 류 를 정의 해 야 한다 면:
4. 567913. 이것 은 자바 의 문법 과 매우 유사 하 다. 그 후에 우 리 는 변 수 를 예화 할 수 있다.
4. 567913. 다음 에 몇 가지 방법의 정 의 를 소개 한다.
자바 에서 우 리 는 다음 과 같은 방법 을 정의 합 니 다.
4. 567913. 우 리 는 반환 유형 과 매개 변수 유형의 정 의 를 밝 혀 야 한다.
그리고 Groovy 에서: :
applicationIdSuffix ".staging"
versionNameSuffix "-staging"
buildConfigField "String", "API_URL", "\"http://staging.example.com/api\""
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Gradle For Androidgradle 파일 은 하나의 항목 에 대응 하고 작업 은 구 축 된 스 크 립 트 에 정 의 됩 니 다.빌 드 작업 을 시작 할 때마다 Gradle 은 스 크 립 트 에 따라 항목 과 작업 대상 을 수집 하고 하나의...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.