Visual Studio 2017 Cordova:Android构建目标文件夹修改及APK部署路径问题
解决Visual Studio 2017 + Cordova 7.1.0 Android部署路径不匹配问题
很高兴你已经搞定了VS2017兼容Cordova 7.1.0的核心问题!针对部署时APK路径不匹配的麻烦,这里有几个实用的解决方案,不用再手动复制了:
方法1:修改Cordova Android构建配置,直接输出APK到目标路径
Cordova的Android构建输出路径可以通过build.gradle调整,让APK直接生成在VS期望的目录:
- 打开项目中的
platforms/android/build.gradle文件 - 找到
android代码块中的applicationVariants.all部分(如果没有可以手动添加),修改输出路径逻辑:
android { // ... 其他配置 ... applicationVariants.all { variant -> variant.outputs.each { output -> def outputFile = output.outputFile if (outputFile != null && outputFile.name.endsWith('.apk')) { // 保留原文件名,将输出目录改为上级的apk文件夹 output.outputFile = new File(outputFile.parent.parent, outputFile.name) } } } }
保存文件后,下次构建时APK会直接生成在platforms\android\build\outputs\apk目录,VS就能直接找到它了。
方法2:添加Cordova构建钩子自动复制APK
如果不想修改build.gradle,可以用Cordova的钩子脚本在构建完成后自动复制APK:
- 在项目根目录创建
hooks/after_build文件夹(如果不存在的话) - 在该文件夹下新建
01_copy_apk.js文件,内容如下:
const fs = require('fs'); const path = require('path'); module.exports = function(ctx) { // 定义源路径和目标路径 const sourceDir = path.join(ctx.opts.projectRoot, 'platforms/android/build/outputs/apk/debug'); const targetDir = path.join(ctx.opts.projectRoot, 'platforms/android/build/outputs/apk'); // 确保目标目录存在 if (!fs.existsSync(targetDir)) { fs.mkdirSync(targetDir, { recursive: true }); } // 复制debug目录下的所有APK文件 fs.readdirSync(sourceDir).forEach(file => { if (file.endsWith('.apk')) { const sourcePath = path.join(sourceDir, file); const targetPath = path.join(targetDir, file); fs.copyFileSync(sourcePath, targetPath); console.log(`Automatically copied APK to: ${targetPath}`); } }); };
- 给脚本添加执行权限(Windows下可跳过,Mac/Linux下运行
chmod +x hooks/after_build/01_copy_apk.js)
之后每次构建完成,钩子会自动把APK复制到VS需要的路径。
方法3:在Visual Studio中添加后期构建事件
直接让VS在构建完成后执行复制操作,步骤如下:
- 在VS中右键你的Cordova项目,选择属性
- 切换到生成事件选项卡,在后期生成事件命令行中输入:
copy "$(ProjectDir)platforms\android\build\outputs\apk\debug\*.apk" "$(ProjectDir)platforms\android\build\outputs\apk\"
- 点击确定保存配置
这样每次VS完成构建后,会自动把debug目录下的APK复制到上级目录,部署时就能直接找到文件了。
这三个方法都能解决你的问题,推荐方法1或3,操作起来更直接。
内容的提问来源于stack exchange,提问作者Andrew Lindzon
相关产品推荐
相关产品推荐

