Gradle 학습(3): 안드로이드 Gradle 플러그인

3834 단어 android 학습gradle
이 편에서는 실제 프로젝트에서 Android Gradle 플러그인의 사용을 다룹니다.
1. Android Gradle 플러그인
제3자 플러그인을 도입하는 방법: 루트build.gradle 중:
buildscript{
	repositories {
		jcenter()
	}
	dependecies {
		classpath 'com.android.tools.build:gradle:1.5.0'
	}
}

제3자gradl e라이브러리를 도입하는 방법: 먼저 루트build.gradle에서classpath 도입 경로를 사용합니다. 루트 프로젝트에 설정되어 있기 때문에 모든 하위 프로젝트는 설정할 필요가 없습니다.
다른 모듈, 예를 들어 App 모듈, 모듈 아래의build.gradle 파일:
apply plugin : 'com.android.application'
android{
	compileSdkVersion 23
	buildToolsVersion "23.0.1"
}

apply plugin: ‘com.android.애플리케이션 '애플리케이션 프로젝트 만들기 apply plugin:'com.android.library'라이브러리 프로젝트 만들기 apply plugin:'com.android.테스트 프로젝트 만들기
2. 일반적인 안드로이드 구성
SDK 버전 및 빌드 도구 버전 컴파일
android {
	//  Android   SDK  
	compileSdkVersion 23
	//Android       
	buildToolsVersion "23.0.1"
}

defaultConfig: 기본 구성, ProductFlavor
defaultConfig {
	//    
	applicationId "com.breeze.qrcode"
	//     Android  
	minSdkVersion 15
	//    Android    
	targetSdkVersion 26
	//   
	versionCode 1
	//    
	versionName "1.0.0"
}

서명 정보 구성
signingConfigs {
	release {
		//        
		storeFile file("myrelease.keystore")
		//        
		storePassword "password"
		//          
		keyAlias "Alias"
		//          
		keyPassword "password"
	}
	//    
	debug {
		//....
	}
}
//  
defaultConfig{
signingConfig signingConfigs.release
}

구축된 응용 유형
android {
	buildTypes {
		release {
			//    
			minifyEnabled true
			//            Dex
			multiDexEnabled true
			//               ,   false
			shrinkResources true
			//    
			signingConfig signingConfigs.release
			//      
			proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
			//  zip  
			zipAlignEnabled true
		}
		 //        
		debug {
			//   
			minifyEnabled false
			zipAlignEnabled true
			signingConfig signingConfigs.debug
		}
	}
}

생성된 apk의 이름을 수정하려면 먼저 하나의 개념을 소개합니다: 변체: 패키지 채널과 컴파일 형식의 조합, 대응하는 apk 패키지
this.afterEvaluate {
	tasks['build'].doLast {
		android.applicationVariants.all {
			variant ->
				variant.outputs.each {
					output->
						def fileName = "xxxxx.apk"
						if(variant.buildType.isDebuggable()) {
							fileName = "yyyy.apk"
						}
						def outputFile = output.outputFile
						File targetFile = new File(outputFile.parent, fileName)
						if (targetFile.exists()) {
							targetFile.delete()
						}
						if (outputFile != null && outputFile.name.endsWith(".apk")) {
							output.outputFile.renameTo(targetFile)
						}
				}
		}
	}
}

다중 경로 패키지
android {
	productFlavors {
		google {
			applicationId "com.xxx.game.google"
			manifestPlaceholders.put("UMENG_CHANNEL", "google")
		}
	}
}
//manifest     


3. 모듈화 시 사용
모듈화 프레임워크를 만들 때 모듈을 응용 프로그램으로 독립적으로 컴파일하여 실행하고 모듈을libiary로 간주하며 서로 다른 Manifest와 다른 원본 코드를 사용할 수 있습니다
//isBuildModule          module  lib  application
if (IsBuildModule.toBoolean()) {
    apply plugin: 'com.android.application'
} else {
    apply plugin: 'com.android.library'
}

//     manifest
sourceSets {
    main {
        if (IsBuildModule.toBoolean()) {
            manifest.srcFile 'src/main/debug/AndroidManifest.xml'
        } else {
            manifest.srcFile 'src/main/release/AndroidManifest.xml'
            //         debug       Java  
             java {
                    exclude 'debug/**'
           		  }
        }
    }
}

좋은 웹페이지 즐겨찾기