Android gradle配置打包后 Copy APK到指定路径

----START----

配置文件:copy_apk.gradle

先看图:
在这里插入图片描述
配置位置:app的build.gradle(这里使用相对路径,copy_apk.gradle文件位于项目根目录下)

添加依赖:

apply from: "../copy_apk.gradle"

在这里插入图片描述

copy_apk.gradle 源码如下:

project.archivesBaseName = "XXXApp"

static def releaseTime() {
    return new Date().format("HHmmss")//yyyyMMdd_HHmmss
}

android.applicationVariants.all { variant ->
    variant.outputs.all {
        if (outputFileName.endsWith('.apk')) {
            //这里使用之前定义apk文件名称

//            outputFileName = "${project.archivesBaseName}_v${variant.productFlavors[0].versionName}_${variant.productFlavors[0].versionCode}_${variant.productFlavors[0].name}_${releaseTime()}_${variant.buildType.name}.apk"
            outputFileName = "${project.archivesBaseName}_${versionCode}_v${versionName}_${releaseTime()}_${name}.apk"
        }
    }

    //复制到根目录下的output文件夹
    File desFilePath = new File("${rootDir}/output")
    //删除output目录
    delete desFilePath

    //API 'variant.getAssemble()' is obsolete and has been replaced with 'variant.getAssembleProvider()'.
    //It will be removed in version 7.0 of the Android Gradle plugin.
    //编译完成后将apk复制到指定目录
//    variant.assemble.doLast {
//        variant.outputs.all {
//            try {
//                //判断文件夹是否存在
//                if (!desFilePath.exists()) {
//                    desFilePath.mkdir()
//                }
//                //将编译好的apk 复制到output目录
//                copy {
//                    from outputFile
//                    into desFilePath
//                    include '**/*.apk'
//                }
//            } catch (Exception e) {
//                e.printStackTrace()
//            }
//        }
//    }
    //used variant.getAssembleProvider().
    //(variant.assembleProvider.configure|variant.assembleProvider.get.doLast)
    //https://stackoverflow.com/questions/54193510/while-android-studio-updated-to-v3-3-getting-api-variant-getassemble-is-obso
    variant.assembleProvider.configure {
        it.doLast {
            variant.outputs.all {
                try {
                    //判断文件夹是否存在
                    if (!desFilePath.exists()) {
                        desFilePath.mkdir()
                    }
                    //将编译好的apk 复制到output目录
                    copy {
                        from outputFile
                        into desFilePath
                        include '**/*.apk'
                    }
                } catch (Exception e) {
                    e.printStackTrace()
                }
            }
        }
    }
}

----END----

猜你喜欢

转载自blog.csdn.net/github_35033182/article/details/119823427
今日推荐