主页 > 手机  > 

AndroidStuidio指定APK文件的输出路径和文件名格式

AndroidStuidio指定APK文件的输出路径和文件名格式
AndroidStuidio 指定APK 文件的输出路径和文件名格式

步骤总结 1、编辑build.gradle(Module :app)文件; 2、在 android {……} 结构体·中添加如上方法1、方法2的函数方法;

方法一:使用使用 java.nio.file.Files.copy 方法来完成文件复制操作。

缺点:outputDir (输出文件路径)必须跟完整绝对路径! 💡原因:调试发现 def outputDir = new File("E:/SVN/ASProjects/Release")实际指向了{Gradle_Location}/Release

😝优化:需要跟相对路径,使用 def outputDir = new File(project.rootDir, "../Release")格式

android { ... // 指定 APK 输出路径和文件名格式 applicationVariants.all { variant -> variant.outputs.all { def appName = "TouchAssistant" def versionName = variant.versionName def buildType = variant.buildType.name def outputDir = new File(project.rootDir, "../Release") println "目标输出目录: ${outputDir.absolutePath}" // 创建输出目录 if (!outputDir.exists()) { if (outputDir.mkdirs()) { println "成功创建输出目录: ${outputDir.absolutePath}" } else { println "无法创建输出目录: ${outputDir.absolutePath}" } } def outputFileName = "${appName}-${versionName}-${buildType}.apk" // 设置输出文件名 setOutputFileName(outputFileName) // 获取原输出文件 def originalOutputDir = outputFile.parentFile // 计算新的输出文件 def newOutputFile = new File(outputDir, outputFileName) // 如果新的输出目录不存在,则创建它 if (!newOutputFile.parentFile.exists()) { if (newOutputFile.parentFile.mkdirs()) { println "成功创建新输出文件的父目录: ${newOutputFile.parentFile.absolutePath}" } else { println "无法创建新输出文件的父目录: ${newOutputFile.parentFile.absolutePath}" } } // 在构建完成后将 APK 复制到新位置 variant.assemble.doLast { try { java.nio.file.Files.copy( outputFile.toPath(), newOutputFile.toPath(), java.nio.file.StandardCopyOption.REPLACE_EXISTING) println "成功复制 APK: ${outputFile.absolutePath} -> ${newOutputFile.absolutePath}" } catch (java.io.IOException e) { println "复制 APK 失败: ${outputFile.absolutePath} -> ${newOutputFile.absolutePath}: ${e.message}" } } } } } ❌方法二 :使用’newOutputFile.text = outputFile.text’复制文件

Error:使用该方法拷贝的文件内容可能不一致,不可用; 因为它是将文件内容作为文本处理,可能会在处理二进制文件(如 APK 文件)时改变文件的编码和格式,导致内容不一致。 我们可以使用 Java NIO 的 Files.copy 方法来进行二进制文件的复制,确保文件内容完整一致。

android { ...... // 在构建完成后将 APK 复制到新位置 variant.assemble.doLast { try { newOutputFile.text = outputFile.text //按txt文本复制,存在编码或格式错误问题 } catch (java.io.IOException e) { println "复制 APK 失败: ${outputFile.absolutePath} -> ${newOutputFile.absolutePath}: ${e.message}" } } }
标签:

AndroidStuidio指定APK文件的输出路径和文件名格式由讯客互联手机栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“AndroidStuidio指定APK文件的输出路径和文件名格式