Android Studio3.4使用Gradle打包apk后重命名apk文件名称

Android Studio除了可以使用可视化工具来打包带有正式签名的apk文件,也可以使用Gradle构建工具来进行打包。

1、Gradle打包配置

在app\build.gradle文件中的android闭包中添加:

signingConfigs {
        debug {
            storeFile file(KEY_PATH)//签名文件路径
            storePassword KEY_PASS
            keyAlias ALIAS_NAME
            keyPassword ALIAS_PASS  //签名密码
            v1SigningEnabled true
            v2SigningEnabled true
            println("--- signingConfigs.debug ---")
        }
        release {
            storeFile file(KEY_PATH)//签名文件路径
            storePassword KEY_PASS
            keyAlias ALIAS_NAME
            keyPassword ALIAS_PASS  //签名密码
            v1SigningEnabled true
            v2SigningEnabled true
            println("--- signingConfigs.release ---")
        }
    }

    buildTypes {
        release {
            minifyEnabled false
            multiDexEnabled true
            signingConfig signingConfigs.release
            //proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
        debug {
            minifyEnabled false
            multiDexEnabled true
            signingConfig signingConfigs.debug
            //proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }

点击右侧工具栏的Gradle -> 项目名 -> :app -> Tasks -> other 双击assembleRelease 即可进行打包。(低版本的Gradle路径是:Gradle -> 项目名 -> :app -> Tasks -> build)

2、重命名apk文件名称

默认情况生成的apk文件在\项目名\app\build\outputs\apk\release文件夹下,名称为app-release.apk。为了修改默认的apk名称我们可以在android闭包中再添加:

    applicationVariants.all { variant ->
        variant.outputs.all { output ->
            //def outputFile = output.outputFile
            //if (outputFile != null && outputFile.name.endsWith('.apk')) {
            if (variant.buildType.name == 'release') {
                def fileName = "app_${defaultConfig.versionCode}_${defaultConfig.versionName}_.apk"
                outputFileName = fileName
            }
            //}
        }
    }

高版本需要注意的是

1、低版本时第二行的 each 方法要修改为 all 方法,以及低版本的命名方式 output.outputFile = new File(outputFile.parent, fileName) 要改为 outputFileName = fileName;

2、需要去掉 output.outputFile 方法,不然会报错如下错误。因为output.outputFile具体实现里应该调用了variantOutput.getPackageApplication() 。后续应该会有库升级兼容这个问题,目前避开这个调用即可。

WARNING: API 'variantOutput.getPackageApplication()' is obsolete and has been replaced with 'variant.getPackageApplicationProvider()'.
It will be removed at the end of 2019.
For more information, see https://d.android.com/r/tools/task-configuration-avoidance.
To determine what is calling variantOutput.getPackageApplication(), use -Pandroid.debug.obsoleteApi=true on the command line to display more information.
Affected Modules: app
 

猜你喜欢

转载自blog.csdn.net/beita08/article/details/95768251