gradle模板

本文介绍了一种基于Gradle的多渠道打包方案,详细解释了如何通过Gradle配置文件实现不同渠道的应用程序版本定制,包括渠道名、版本号、签名配置及输出文件命名等。

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

apply plugin: 'com.android.application'

android {
    compileSdkVersion 26
    defaultConfig {
        applicationId "com.example.soolife_js.demoproject"
        minSdkVersion 19
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        multiDexEnabled = true//突破65535限制
        flavorDimensions "3.0.1"  // 多渠道打包时,确保风味的一致性
    }

    lintOptions {
        // 移除lint检查的error   应该是?
        abortOnError false

        // 不清楚什么意思?
        checkReleaseBuilds false
    }

    dexOptions {
        javaMaxHeapSize "4g"
        preDexLibraries = false
    }
    sourceSets {
        main {
            jniLibs.srcDirs = ['libs']
        }
    }

    android {
        productFlavors {
            kuan {
                // manifestPlaceholders = [app_name: "kuan", icon: "@drawable/temp_tuwen"]
                // android:label="${app_name}"   配合清单文件
                resValue "string", "app_name", "线上测试"   // gradle自动生成的参数,String里面不能存在

//            applicationId "getui.permission.GetuiService.package_name_debug"

                resValue "string", "applicationId", "getui.permission.GetuiService.package_name_debug"
            }
            xiaomi {
            }
            baidu {
            }
        }

        productFlavors.all {
            flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
        }
    }

    // 自动多渠道打包时,调用该代码??
    signingConfigs {
        release {
             storeFile file('D:/Android/AndroidStudioProjects/mxg.keystore')
             keyPassword '123456'
             keyAlias 'mxg'
             keyPassword '123456'
             // keyPassword KEY_PASSWORD
        }

        config {
        }
    }

    buildTypes {
        // 这里的名字自定义,不要求大小写
        debug {
            // 这里的作用是选择是否混淆代码
            minifyEnabled false
            // signingConfig signingConfigs.release
            buildConfigField "String", "BASE_URL", "\"https://debug.api/\""  // BuildConfig.BASE_URL
            // resValue "string","app_name","线上测试"   // getResources().getString(R.string.app_name)

            // 这里是在 applicationId 中添加了一个后缀。所以『.』要加上
            applicationIdSuffix ".debug"

//            applicationId "getui.permission.GetuiService.package_name_debug"
        }

        develop.initWith(buildTypes.debug)
        develop {
            minifyEnabled false
            signingConfig signingConfigs.release
            buildConfigField "String", "BASE_URL", "\"https://develop.api/\""

            // 可以修改applicationId的名字
            applicationIdSuffix ".develop"

            buildConfigField "String","tag","\"debug\""
            buildConfigField "boolean","isDebug","true"

            // resValue "String","app_name","\"Demo_debug\""  // 修改系统参数

            manifestPlaceholders = [
                    appName  : "HelloWorld",
                    dbVersion: 101
            ]

            
        /*
        *
        在代码中使用: String tag = BuildConfig.tag;

        在manifest中引用变量
        <meta-data
            android:name="app_name"
            android:value="${appName}" />
        * */

        }

        release {
            buildConfigField "String", "BASE_URL", "\"https://release.api/\""

            //是否开启代码混淆
            minifyEnabled true
            //是否移除无用资源
            zipAlignEnabled true
            signingConfig signingConfigs.release
            //混淆的配置文件
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

            //压缩对齐生成的apk包
            zipAlignEnabled true
            //资源压缩只与代码压缩协同工作。
            shrinkResources true
            minifyEnabled true
        }
    }

    android.applicationVariants.all { variant ->
        variant.outputs.all {
            if (variant.buildType.name == "release") {
                outputFileName = "小袋快借${defaultConfig.versionName}_${releaseTime()}_${variant.productFlavors[0].name}.apk"
            } else {
                // outputFileName = "小袋快借${defaultConfig.versionName}_${releaseTime()}_${variant.productFlavors[0].name}_debug.apk"
                // 小袋快借1.0_2018-03-08_baidu_debug.apk

                // Soolife_1.0_1_baidu
                outputFileName = "DemoProject_${versionName}_${versionCode}_${variant.productFlavors[0].name}.apk"
            }
        }
    }

}

// 获取当前系统时间
def releaseTime() {
    return new Date().format("yyyy-MM-dd", TimeZone.getTimeZone("UTC"))
}

// 获取程序名称
def getProductName() {
    return "gradlesample"
}


dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation 'com.android.support:appcompat-v7:26.1.0'
    compile 'com.android.support:design:26.1.0'
    implementation 'com.android.support.constraint:constraint-layout:1.0.2'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.1'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'


    // 遇到dex超出方法数的问题,采用android.support-multidex进行解决
    compile 'com.android.support:multidex:1.0.1'

    // 阿里SopHix热修复框架操作实践
    compile 'com.aliyun.ams:alicloud-android-hotfix:3.0.2'
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值