美文网首页
Gradle 使用总结

Gradle 使用总结

作者: 鈤汌冈板 | 来源:发表于2018-01-23 19:38 被阅读13次

    [TOC]

    1、gradle.properties

    在gradle.properties中配置好的参数,可以再build.gradle中直接使用。但要注意类型。

    buildTypes {
            release {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
                signingConfig signingConfigs.config
            }
            //当出现3个或者3个以上环境和多个渠道时,线上不提供debug打包方式。
            //直接使用特定渠道包作为测试包,指定不同包名
            debug {
                signingConfig signingConfigs.config
                buildConfigField 'String','BASE_URL',BASE_URL_DEBUG
                buildConfigField 'String','H5_BASE_URL',H5_BASE_URL_DEBUG
                buildConfigField 'String','NODE_JS',NODE_JS_DEBUG
                buildConfigField 'boolean','IS_TEST','true'
                manifestPlaceholders = [UMENG_CHANNEL_VALUE: "debug"
                                        ,JPUSH_APPKEY_VALUE: JPUSH_KEY_TEST]
            }
        }
    

    如上所示,BASE_URL_DEBUG就是在gradle.properties中配置的变量

    2、多渠道打包配置manifest文件

    在AndroidManifest.xml文件中添加占位符

    <meta-data
                android:name="JPUSH_APPKEY"
                android:value="${JPUSH_APPKEY_VALUE}"/>
    

    然后在build.gradle中进行赋值

    manifestPlaceholders = [UMENG_CHANNEL_VALUE: "debug"
                                        ,JPUSH_APPKEY_VALUE: JPUSH_KEY_TEST]
    

    3、-P命令入参构建

    将姓名、时间等作为参数构建apk。

    applicationVariants.all { variant ->
                    variant.outputs.each { output ->
                        def outputFile = output.outputFile
                        if (outputFile != null && outputFile.name.endsWith('.apk')) {
                            if (project.hasProperty('ivan')){
                            outputFileName = ivan+".apk"
                        } else {
                            outputFileName = "123.apk"
                        }
                        }
                    }
                }
    

    如果此时报错

    Cannot set the value of read-only property 'outputFile' .......
    

    貌似是因为gradle版本的问题,那就换成下面的代码:

    debug {
                android.applicationVariants.all { variant ->
                    variant.outputs.all {
                        if (project.hasProperty('ivan')){
                            outputFileName = ivan+".apk"
                        } else {
                            outputFileName = "123.apk"
                        }
                    }
                }
            }
    

    gradle 命令:

    gradle assembleDebug -Pivan=zhang
    

    这样打包出来的apk名称为zhang.apk

    4、待续

    相关文章

      网友评论

          本文标题:Gradle 使用总结

          本文链接:https://www.haomeiwen.com/subject/jobqottx.html