as通过gradle实现指定apk输出路径和apk文件名

记录一下as通过gradle实现指定apk输出路径和apk文件名


Android Studio是使用gradle进行项目构建的,这使得通过配置文件进行版本管理成为可能。使用配置文件管理app版本很简单,就是定义一个properties文件,里面有版本号、版本名等版本信息,只需要在build.gradle中引用该文件,使用该配置文件的属性,进行项目的版本号等版本信息的赋值,就可以实现版本号的动态控制(注意:在gradle文件中配置的版本号、版本名称是优于在manifest.xml中配置的,如果你在gradle文件中配置了版本信息,那么不管你是否也在manifest.xml文件中进行了配置,系统都不会再去manifest.xml中进行版本信息的读取了)。


要实现这个目的,在项目中的local.properties文件中进行配置,内容如下:

ndk.dir=D\:\\SDK\\ndk-bundle
sdk.dir=D\:\\SDK
appReleaseDir=D\:\\AndroidStudioProjects\\apk\\
appVersionCode 2
appVersionName 2.5
appSuffixName=.apk复制代码


配置完成的properties在gradle (app module)中的引用方式如下:

首先通过ext.xxx 定义本地变量, 注意: 如果本地变量需要读取外部属性,不能能过def来定义

//定义本地变量, 有默认值
ext.appReleaseDir = "D:\\AndroidStudioProjects\\apk\\"
ext.appVersionCode = 2
ext.appVersionName = "2.5"
ext.appSuffixName = ".apk"

def loadProperties() {
    def proFile = file("../local.properties")
    Properties pro = new Properties();
    proFile.withInputStream {stream ->
        pro.load(stream)
    }
    appReleaseDir = pro.appReleaseDir
    appVersionName = pro.appVersionName;
    appVersionCode = Integer.valueOf(pro.appVersionCode)
    appSuffixName = pro.appSuffixName
}

loadProperties() 

android {
    compileSdkVersion 25
    buildToolsVersion "27.0.3"
    aaptOptions.cruncherEnabled = false
    aaptOptions.useNewCruncher = false
    defaultConfig {
        applicationId "xxxxxxxx"
        minSdkVersion 21
        targetSdkVersion 25
        //通过这种方式,修改完版本号后,无需sync gradle
        versionCode appVersionCode
        versionName appVersionName
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    sourceSets {
        main {
            jniLibs.srcDirs = ['libs']
        }
    }

    android.applicationVariants.all { variant ->
        variant.outputs.each { output ->
            def outputFile = output.outputFile
            if (outputFile != null && outputFile.name.endsWith('.apk')) {
                def fileName = "DEVICE_"
                output.outputFile = new File(appReleaseDir + fileName + appVersionName + appSuffixName)
            }
        }
    }
}
复制代码



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值