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

使用Gradle将apk安装包输出到指定的目录 前言 我使用的Android stuido开发android项目,现在有A项目和B项目,B项目中需要用到A项目的apk包(A项目的apk放到B项目的assets目录下) 代码apply plugin: 'com.android.application' //这里是要输入的路径 def outputPathName = "/Users/zsl/Downloads/Bproject/assets/s 阅读详情

----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----

Android Gradle构建:定制APK输出路径与文件名的工程实践 在软件构建与持续集成(CI/CD)流程中,构建产物的规范化管理是提升工程效率的关键环节。其核心原理在于通过构建工具对输出产物进行标准化命名与路径规划,从而实现自动化脚本的通用性和版本追溯的便捷性。这一实践的技术价值在于,它能显著减少人工干预,避免文件混淆,并优化团队协作流程。尤其在Android开发领域,通过Gradle这一主流构建工具,开发者可以灵活配置APK的输出属性,将版本号、构建时间、Git提交哈希或渠道标识等信息动态嵌入文件名,并将产物归类到指定目录。这种定制化能力广泛应用于多构建变体管理、多渠道 阅读详情

相关推荐

【Android Gradle学习笔记】第三天:Gradle Task

Gradle Task是Android构建工具的核心执行单元,负责编译代码、处理资源、打包APK等操作。文章介绍了Gradle任务的基本概念和两种创建方式:通过task关键字快速创建和指定任务类型(如Copy、Exec)实现特定功能。重点讲解了任务依赖关系(dependsOn)、执行顺序控制(mustRunAfter)以及任务前后操作(doFirst/doLast)。最后提到通过group和description对任务进行分组和描述管理,提高构建流程的可控性和可维护性。

u012739527的博客 943

Gradle修改APP输出路径和输出文件名

Android 目录:https://blog.youkuaiyun.com/dkbnull/article/details/87932847 Gradle 升级到5.4.0版本,Gradle Plugin 升级到3.5.0版本之后,APP打包输出路径和输出文件名写法也有了变动,如下 android.applicationVariants.all { variant -> variant.ou...

null 2625

GmSSL国密双证书实战:从生成到Nginx配置全流程

本文详细介绍了使用GmSSL工具生成国密双证书(签名证书与加密证书)并配置Nginx支持国密HTTPS(TLCP协议)的全流程。内容涵盖环境准备、自签CA创建、服务器双证书生成、Nginx单向/双向认证配置以及兼容性处理,为部署符合国密标准的HTTPS服务提供实战指南。

weixin_29276847的博客 478

安卓Gradle脚本实现自动打包后复制一份APK文件,并修改APK名称,到指定目录作备份

文件名:build.gradle (:app) android { ... // 打包完成复制一份到apk文件夹内 this.project.afterEvaluate { project -> project.tasks.each { task -> if (task.toString().contains("assemble")) { task.doLast { and

weixin_43841630的博客 1261

深入解析时钟同步技术:相位同步、频率同步与同源时钟的实战应用

本文深入解析时钟同步技术的三种核心方式:相位同步、频率同步与同源时钟,详细阐述其技术原理、实现方案及实战应用。通过对比分析不同同步方式的特点与适用场景,为电子系统设计提供选型指南,帮助工程师优化时钟网络设计,提升系统稳定性和性能。

weixin_29240711的博客 449

【Zemax光学设计实训一】---单透镜光学设计

建立一个焦距为100mm、入瞳直径为25mm的单透镜系统,该透镜中心厚度为4mm,其两个面的曲率半径分别为100mm、-100mm,全视场2w=10°。该系统在可见光下工作,采用BK7玻璃,光阑设置在人射光线遇到的透镜的第一个光学表面;并对其展开优化。

yh的博客 3615

Android指定名称和路径打包apk

有时候会需要打包到指定的路径然后由脚本推送。打包apk时可以通过gradle指定名称和路径,并且可以配置更多信息。 def appReleaseDir = "apk输出文件夹" signingConfigs { //签名信息 可以自定义很多,以下是必须的 releaseConfig { storeFile file("jks签名文件路径") storePassword "xxxxxx" keyAlias "xxxxxx" key

weixin_41191739的博客 3182

Win10环境借助DockerDesktop部署Open web UI集成DeepSeek

Win10环境借助DockerDesktop部署Open web UI集成DeepSeek,并借助DuckDuckGo实现联网查询

虎鲸不是鱼 1698

gradle复制文件到你的build文件夹下

接到需求是,复制一个apk到build文件夹的assets文件夹下,我们都知道当我们点击clean的时候,build文件夹就会被清理,而且build文件夹下的assets文件夹并不存在,这个里面会根据application和library不同assets文件夹也会不同,具体看如下分析 application下,build文件夹的assets文件夹名称叫做 merged_assets library下,build文件夹的assets文件夹名称叫做library_assets 全路径是在build/inte.

北京流年 3620

ardupilot 日志分析《xKF1信息》

ardupilot 日志分析系列将会把ardupilot所有的日志文档进行分析,为我们分析无人机的运行状态,炸鸡原因,传感器状态,电机状态,控制信息,滤波信息做准备。本节主要分析xKF1日志信息,欢迎批评指正。学习好ardupilot必须会分析飞行日志,从飞行日志中我们可以学到很多无人机的知识。无人机是综合知识的体现,涵盖:导航、控制、滤波、算法、协议等各种知识,只有更全面的学习,才能在无人机的道路上越走越远。

陌城烟雨 1225

RK3568平台开发系列讲解(项目篇)手写数字识别

📢 本篇章带大家基于飞桨(PaddlePaddle),完成一个简单的手写数字识别任务。

内核笔记 1181

android gradle复制apk

apply plugin: 'com.android.application' android { compileSdkVersion 30 defaultConfig { applicationId "com.android.androidstudy" minSdkVersion 21 targetSdkVersion 30 versionCode 1 versionName "1.0"

forget_zhx的博客 619

AutosarMCAL开发——基于TC3x系列时钟系统浅析

本文为博主个人学习总结记录,如有不正,欢迎指正。

qq_45583706的博客 887

友盟在AS中利用Gradle进行多渠道打包和APK签名发布

自从Google放弃对Eclipse的维护,并力推Android studio时,其版本的更新迭代速度也是非常快的,而且开发的工程中经常需要用到gradle的相关操作Gradle:Gradle是Android studio默认的build工具,是基于一种JVM语言——Groovy,再加上DSL组成的说白了就是一种依赖管理工具,它抛弃了基于XML的各种繁琐配置,使用起来也简单,语法也相对简洁很多每当项目开发完成准备发布到各大安卓应用市时,此时作为项目开发人员来说简直头大,如果发布的应用市场数量小的话,可能多操

Ai1114的博客 2万+

基于simulink的多能源系统协同与能源互联网的电网系统场景实例:虚拟电厂(VPP)中电网与储能集群的协同控制

本文详细介绍了使用Simulink构建虚拟电厂(VPP)与储能集群协同控制系统的完整建模过程。主要内容包括:1) VPP系统架构设计;2)分步骤建模过程,涵盖虚拟电厂系统创建、储能单元与集群建模、VPP控制器设计(核心)以及协同控制场景仿真;3)性能分析与典型应用场景。通过混合整数线性规划优化调度和智能指令分解策略,实现了VPP参与电力市场交易、电网调频调峰等功能,验证了系统在提升可再生能源消纳率(96%)、降低电网峰谷差(35%)等方面的优异性能。该建模方法为能源互联网中的分布式资源聚合与协同控制提供了实

xiaoheshang_123的博客 466

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

最新最全Android Gradle 自定义打包输出路径和文件名,并复制到某一文件夹

最新最全的安卓打包文件名修改,基于android studio 4.1 gradle 6.5 附加低版本gradle适配

我的博客 7940

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Android Gradle开发—脚本实现自动打包后复制一份APK文件,并修改APK名称,到指定目录作备份

这样在每次assembleXXXX任务的时候, 或者Build的时候, 都会在打包完成后复制一份到/app/apk/下面通过Gradle一键打包多渠道apk至指定文件夹的方法。

Dream It Possible 1322

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

gradle打包的apk复制到另一个目录:Installation did not succeed. The application could not be installed.

项目使用行云加Jenkins打包,自定义了Apk打包目录,结果造成使用Android studio 上的运行按钮找不到安装的apk

ReminderFish 1592

Android 项目中的 Licensee:如何自动生成许可证报告并打包到 APK

在 Android 开发过程中,管理第三方依赖的许可证是确保项目合规性的重要环节。**Licensee** 作为一款强大的 Gradle 插件,能够自动验证依赖图中的许可证是否符合预期,并生成详细报告。本文将介绍如何在 Android 项目中集成 Licensee,实现许可证报告的自动生成与 APK 打包,让合规管理变得简单高效。 ## 📌 什么是 Licensee? Licensee 是一

gitblog_00609的博客 349

android studio gradle 配置copy,Mac系统配置Android Studio的gradle命令

前言:一般我们打包apk都是用的AndroidStudio直接签名生成,这就造成了很多人不知道gradle除了可以用来配置依赖外,还可以用来编译生成apk。还有就是,在使用apk插件框架的时候,就需要使用gradle来编译apk,否则会出错。这里说的是mac系统下配置gradle。找到Android Studio应用图标在Mac"应用程序"里面找,找到后使用control键+点击,然后选择显示包内...

weixin_39777464的博客 398

android studio关于命令行打包apk

android studio关于命令行打包apk,自己在学习中的详细步骤...

未来很长,但我会努力的走下去。 1万+

Web To App (web网页一键打包成android Apk文件)

Web To App (web网页一键打包成android Apk文件)

2301_81622958的博客 4262

OneLIMS 安卓 APK 一键打包说明文档

在项目根目录(onelims-web)新建文件:build-apk.bat。双击 build-apk.bat 即可自动完成打包流程。echo OneLIMS 一键打包 APK 开始。OneLIMS 安卓 APK 一键打包说明文档。echo 6. 打包 Release APK…echo 3. 进入 Android 目录…echo 2. 同步到 Android…echo 4. 强制使用 JDK17…二、一键打包脚本(Windows)echo 1. 打包前端…echo 5. 清理缓存…四、APK 输出位置。

weixin_37765605的博客 223

Android Gradle插件开发实战:从入门到APK重命名插件实现

Gradle作为现代Java和Android项目的核心构建工具,其基于Groovy/Kotlin的DSL和任务驱动模型构成了自动化构建的基石。通过将重复的构建逻辑封装成可复用的插件,开发者能够实现构建流程的标准化与工程化,显著提升团队协作效率。自定义Gradle插件技术允许在AGP(Android Gradle Plugin)构建生命周期中插入定制化任务,例如自动代码检查、资源优化或版本管理,从而应对多模块配置统一、构建过程自动化等工程实践需求。本文以Android开发中常见的APK文件重命名场景为例,详解

weixin_30675247的博客 379

android 命令行打签名包,拷贝apk到指定目录

参考android studio 自动签名打包,拷贝apk到指定目录 1.将gradle加入环境变量 2.增加签名配置 在项目路径下build.gradle文件增加配置 signingConfigs{ release{ storeFile file("签名文件路径") storePassword "123456" keyAlias "key0" keyPassword "123456"

十方 702

安卓gradle用法整理

安卓gradle常用字段整理

naaaa的专栏 2000
上一篇: View Binding爆红解决方案
下一篇: maven-publish插件的使用笔记
Jusenr
博客等级 码龄10年 13粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jusenr

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值