Android Gradle(四) AGP使用与详解

本文详细介绍了Android Gradle Plugin (AGP) 的配置使用,包括`android`节点的设置,如`compileSdkVersion`、`buildToolsVersion`、`defaultConfig`、`multiDexEnabled`、`ndk`配置、`manifestPlaceholders`、`productFlavors`、`buildTypes`以及`signingConfigs`等关键参数。此外,还提到了源码目录的设置、adb选项和Java版本配置。通过实例展示了如何进行模块构建配置,帮助开发者更好地理解和掌握AGP的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

AGP的使用主要是在模块build.gradle 中android节点的配置,由于android节点的配置无法查看源码,所以就只能熟能生巧了,死记硬背(●'◡'●)。
下面我们来看下android节点配置的使用

1.Android节点的引入

apply plugin: 'com.android.application'
//或者
plugins{
	id 'com.android.application'
}

2.Android节点配置(代码+注释)

//AGP
//com.android.application 提供
android {
    compileSdkVersion 30  //编译时使用SDK的版本
    //Android Studio 4.2 版本后系统默认配置,用户不需要配置 
	//buildTools主要是以下工具:aapt packgageTool abd dx
 	buildToolsVersion "30.0.3"
  
    //默认配置
    defaultConfig {
        applicationId "com.example.myapplication1"   //应用的ID
        applicationIdSuffix "fres" //追加后缀
        minSdkVersion 23    //最小支持Android系统版本
        targetSdkVersion 30 //针对开发使用的Android SDK版本,一般compileSdkVersion保持一致
        versionCode 1       //应用的版本号
        versionName "1.0"   //应用的版本名称
        buildConfigField 'String', 'YZAPP_NAME', '"远智教育"'  //往BuildConfig中写入一个String字符串
		//多dex打包,主要是为了防止65535限制
		//一个dex文件只能有65535方法,因为dex文件会把所有类的方法 id 用一个short存储,short对应65535
	    multiDexEnabled true
		//ndk配置 市面上主要有armeabi-v7a  arm64-v8a架构
		//一般项目只要生成armeabi-v7a架构。
		//现在应用商店也有提供两种框架的上传,可以根据需求打对应的框架包
   		 ndk {
            abiFilters 'armeabi-v7a'//,"x86" // 'armeabi', ,'arm64-v8a'//, "x86"//,'arm64-v8a'
        }
        //测试引擎
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
		//下面的功能主要是可以在AndroidManifest 获取到build.gradle生成的字段
		//例如可以在AndroidManifest的`android:label="${app_name}"` 这样使用,就可以获取到对应的字段测试
		//或者一些常见的渠道化配置,APPKEY配置        
		//<meta-data android:name="JPUSH_APPKEY" android:value="${JPUSH_APPKEY}" />

        manifestPlaceholders = [
                app_name: "测试",
                JPUSH_APPKEY   : 'f4451546546445545'
        ]
    }
    flavorDimensions "channel", "charge" //维度,就是针对一种类型的产品风味的描述
    //排列组合
    productFlavors {
        huawei {
            dimension "channel"
					//插入自定义的资源节点,类似于strings.xml 不能有重复的资源节点
            resValue 'string', 'app_name1', "自定义appname" 
            resValue 'string', 'aaa', "aaa"  
        }
        oppo {
            dimension "channel"
        }

        free {
            dimension "charge"
        }
        paid {
            dimension "charge"
        }
        aaa {
            dimension "charge"
        }
    }
    //每个BuildType都有一个SourceSet
    //包含源码,源文件等信息
    sourceSets {
		//主要用来导入libs的库
		main{
			jniLibs.srcDirs=['libs']
		}
		//主要使用在组件化项目中方便调试
        java{
//            exclude 'src/main/'
             //组件管理
            if (rootProject.ext.android.is_application) {
                manifest.srcFile "src/main/debug/AndroidManifest.xml"
                //当模块是应用的时候,加载module下的文件
                java.srcDir "src/main/debug"
            } else {
                manifest.srcFile "src/main/AndroidManifest.xml"
                resources {
                    //正式版本时,排除debug文件夹下所有调试文件
                    exclude "src/main/debug/*"
                }
            }

        }

    }
    //adb操作选项
    adbOptions{
		adb instll -s 
    }
	
	//一般有两种 release debug,也可以自定义
    buildTypes {
        release {
            zipAlignEnabled true //是否开启ZipAlign
            shrinkResources true //清理无效资源
            minifyEnabled false //是否启动代码混淆
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }

        debug {

        }

        custom {
            //继承上面release的配置
            initWith release
            applicationIdSuffix ".releaseCutsom"
        }
    }

    //签名信息配置
    signingConfigs {
        release {
            keyAlias "xxxx"
            keyPassword "xxxx"
            storePassword "xxxx"
            storeFile file("../xxxx")
            v2SigningEnabled true
            v1SigningEnabled true
        }

        debug {
            keyAlias "xxxx"
            keyPassword "xxxx"
            storePassword "xxxx"
            storeFile file("../xxxx")
            v2SigningEnabled true
            v1SigningEnabled true
        }
    }
	//高版本Android Studio默认java1.8
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
	//指定jvm版本
    kotlinOptions {
        jvmTarget = '1.8'
    }
}

1.Android Gradle - Gradle 生命周期_wumeixinjiazu的博客-CSDN博客

2.Android Gradle - Gradle 和 AGP区别_wumeixinjiazu的博客-CSDN博客

3.Android Gradle - 根节点的build.gradle_wumeixinjiazu的博客-CSDN博客

4.Android Gradle - AGP使用_wumeixinjiazu的博客-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值