You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows 11下Android.mk中$(shell cp)失效,求替代文件复制方案

Android.mk 文件复制替代方案(解决Windows 11下cp命令静默失败问题)

原因分析

新Windows 11环境下的Android Studio默认可能使用Windows原生CMD作为执行shell,而cp是Unix/Linux环境的命令,CMD中不存在该命令,因此会出现静默执行失败的情况。

替代方案

1. 使用Windows原生copy/xcopy命令

直接替换cp为Windows CMD支持的copy命令,添加/Y参数跳过覆盖确认,并用引号包裹路径避免空格问题:

$(shell copy /Y "$(LOCAL_SRC_FILES)" "$(TARGET_OUT)/somefile.txt")

如果需要复制目录或处理更复杂的文件结构,可使用xcopy:

$(shell xcopy /Y /E "$(LOCAL_SRC_FILES)" "$(TARGET_OUT)/some_dir/")

2. 使用NDK构建系统自带的跨平台拷贝宏

Android NDK的构建系统提供了跨平台的拷贝宏,无需依赖系统shell命令,兼容性更强:

  • 单个文件拷贝:使用copy-file-to-target宏
LOCAL_POST_INSTALL_CMD += $(call copy-file-to-target, $(LOCAL_SRC_FILES), $(TARGET_OUT)/somefile.txt)
  • 多个文件批量拷贝:使用copy-many-files宏
LOCAL_POST_INSTALL_CMD += $(call copy-many-files, $(LOCAL_SRC_FILES), $(TARGET_OUT))

这种方式会自动适配不同操作系统的文件操作逻辑,避免因shell环境差异导致的问题。

3. 手动指定shell环境(可选)

如果坚持使用cp命令,可以强制构建系统使用Git Bash或MinGW等支持Unix命令的shell,在local.properties中指定:

shell=C:\\Program Files\\Git\\bin\\bash.exe

但这种方式依赖额外软件安装,不如前两种方案通用。

内容的提问来源于stack exchange,提问作者Alexey S. Larionov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 01:20:06