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

Windows下执行cordova run android报错:'sh'命令未识别

问题解决:Cordova sh 命令报错 + Vue.js 集成步骤

一、解决 apkanalyzer 调用时的 sh 命令不存在问题

方法1:添加Git Bash的sh到系统PATH

找到你的Git安装路径(默认是C:\Program Files\Git\bin),将该路径添加到系统环境变量PATH中,然后重启所有终端(PowerShell/Git Bash),再重新执行cordova run android。

方法2:指定Cordova使用的Shell

  • 临时生效:在PowerShell中执行以下命令,再运行Cordova命令:
    $env:CORDOVA_SHELL="C:\Program Files\Git\bin\sh.exe"
    
  • 永久生效:在系统环境变量中新增CORDOVA_SHELL变量,值设为C:\Program Files\Git\bin\sh.exe,保存后重启终端。

方法3:临时禁用apkanalyzer(快速绕过)

如果只是想先跑通项目,可在项目根目录的config.xml中添加以下配置,让Cordova跳过APK分析步骤:

<preference name="AndroidApkAnalyzer" value="false" />

二、集成现有Vue.js项目到Cordova

  1. 迁移Vue构建产物
    先备份Cordova项目根目录下的www文件夹,然后执行Vue项目的构建命令:

    npm run build
    

    将Vue项目dist目录下的所有文件,复制到Cordova的www目录中,覆盖原有文件。

  2. 调整Vue路由模式
    打开Vue项目的路由配置文件(如src/router/index.js),将路由模式从history改为hash,避免本地文件协议下的页面刷新404问题:

    const router = new VueRouter({
      mode: 'hash', // 替换原有的history模式
      routes: [...]
    })
    
  3. 适配Cordova设备就绪事件
    在Vue的入口文件(如src/main.js)中,确保Vue实例在Cordova的deviceready事件触发后再初始化,避免设备API未就绪的问题:

    import Vue from 'vue'
    import App from './App.vue'
    import router from './router'
    
    Vue.config.productionTip = false
    
    document.addEventListener('deviceready', () => {
      new Vue({
        router,
        render: h => h(App)
      }).$mount('#app')
    }, false)
    
  4. 测试运行
    重新执行cordova run android,验证Vue应用在Android设备/模拟器上正常加载和运行。

内容的提问来源于stack exchange,提问作者Doulla

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 23:05:25