在Android上配置正式和测试服务器

2017-08-18  本文已影响0人  laujiangtao

在开发过程中,打包上传应用商店的apk需要连接正式服务器,而在平时打包的时候,一般连接测试服务器,每一次手动设置挺麻烦的,所以

通常设置是这样的

//正式
//public static final String IP = "";
//public static final String API = "";

//测试
public static final String IP = "";
public static final String API = "";

使用哪一个就把哪一个放开,现在我们可以使用gradle配置两个服务器

首先要在项目目录下的gradle中添加打包的版本

app目录下build.gradle文件.png

在buildTypes标签下添加

    buildTypes {
        local {
            //配置本地服务器
            buildConfigField "String", "HOST", LOCAL_HOST
            buildConfigField "String", "API", LOCAL_API
            //显示log
            buildConfigField "boolean", "LOG_DEBUG", "true"
            signingConfig signingConfigs.hxtx
        }
        debug {
            //配置测试服务器
            buildConfigField "String", "HOST", DEBUG_HOST
            buildConfigField "String", "API", DEBUG_API
            //显示log
            buildConfigField "boolean", "LOG_DEBUG", "true"
            signingConfig signingConfigs.hxtx
        }
        release {
            //配置正式服务器
            buildConfigField "String", "HOST", RELEASE_HOST
            buildConfigField "String", "API", RELEASE_API
            // 不显示Log
            buildConfigField "boolean", "LOG_DEBUG", "false"
            minifyEnabled true
            shrinkResources true //移除无用资源
            debuggable false
            zipAlignEnabled true //zipalign优化
            signingConfig signingConfigs.hxtx
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

            // 自定义输出配置
            applicationVariants.all { variant ->
                variant.outputs.each { output ->
                    def outputFile = output.outputFile
                    if (outputFile != null && outputFile.name.endsWith('.apk')) {
                        // 输出apk名称为SAAS_v1.0_2016-12-01_uerbt.apk
                        def fileName = "APK_${variant.flavorName}_${variant.versionName}_${releaseTime()}.apk"
                        output.outputFile = new File(outputFile.parent, fileName)
                    }
                }
                //过滤掉unaligned的包
                variant.assemble.doLast {
                    variant.outputs.each { output ->
                        println "-----------------------------------------"
                        println "aligned " + output.outputFile
                        println "unaligned " + output.packageApplication.outputFile
                        File unaligned = output.packageApplication.outputFile
                        File aligned = output.outputFile
                        if (!unaligned.getName().equalsIgnoreCase(aligned.getName())) {
                            println "deleting " + unaligned.getName()
                            unaligned.delete()
                        }
                    }
                }
            }
        }
    }

然后在release 或者debug 里面添加

buildConfigField "String", "HOST", DEBUG_HOST

其中DEBUG_HOST字段需要在gradle.properties中配置

gradle.properties文件.png
# Project-wide Gradle settings.

# IDE (e.g. Android Studio) users:
# Gradle settings configured through the IDE *will override*
# any settings specified in this file.

# For more details on how to configure your build environment visit
# http://www.gradle.org/docs/current/userguide/build_environment.html

# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
org.gradle.jvmargs=-Xmx1536m

# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
# org.gradle.parallel=true
android.enableAapt2=false

RELEASE_HOST=""
RELEASE_API=""

DEBUG_HOST=""
DEBUG_API=""

LOCAL_HOST=""
LOCAL_API=""

使用的时候直接使用

BuildConfig.HOST

就可以取到 buildConfigField "String", "HOST", DEBUG_HOST 对应的值

RELEASE_HOST | DEBUG_HOST | DEBUG_HOST

使用

BuildConfig.API

就可以取到对应的api的值

RELEASE_API | DEBUG_API | LOCAL_API

打包时只要选择对应的版本就好了

打包.png
上一篇 下一篇

猜你喜欢

热点阅读