Hook失败,错误代码为ENOENT - 如何将Android资源添加到配置xml而不是使用挂钩

时间:2015-05-28 10:43:31

标签: android cordova cordova-cli

当我尝试在我的Windows 7计算机上运行cordova emulate android时,在我的命令提示符中返回以下错误。

Error: Hook failed with error code ENOENT: C:\wwwroot\stk\stk_ks3\app\hooks\after_prepare\assets_copy.sh
at C:\Users\Zab\AppData\Roaming\npm\node_modules\cordova\node_modules\cordova-lib\src\hooks\HooksRunner.js:195:23
at _rejected (C:\Users\Zab\AppData\Roaming\npm\node_modules\cordova\node_modules\q\q.js:797:24)
at C:\Users\Zab\AppData\Roaming\npm\node_modules\cordova\node_modules\q\q.js:823:30
at Promise.when (C:\Users\Zab\AppData\Roaming\npm\node_modules\cordova\node_modules\q\q.js:1035:31)
at Promise.promise.promiseDispatch (C:\Users\Zab\AppData\Roaming\npm\node_modules\cordova\node_modules\q\q.js:741
1)
at C:\Users\Zab\AppData\Roaming\npm\node_modules\cordova\node_modules\q\q.js:557:44
at flush (C:\Users\Zab\AppData\Roaming\npm\node_modules\cordova\node_modules\q\q.js:108:17)
at process._tickCallback (node.js:355:11)
at Function.Module.runMain (module.js:503:11)
at startup (node.js:129:16)

我的系统信息如下(来自Ionic' info'命令)

Your system information:

Cordova CLI: 5.0.0
Ionic CLI Version: 1.4.5
Ionic App Lib Version: 0.0.22
OS: Windows 7 SP1
Node Version: v0.12.2

注意Ionic安装在我的机器上但没有用于这个单独的项目 - 我知道这个错误与我的hooks目录有关,它在 after_prepare 目录中有一个钩子。

此文件名为' assets_copy.sh'并且是一个包含以下信息的shell脚本。

#!/bin/bash

#iOS assets copy
ios="./platforms/ios"
if [ -d  "$ios" ] 
then
  cp -Rf ./www/res/icons/ios/* ./platforms/ios/'Stk'/Resources/icons
  cp -Rf ./www/res/screens/ios/* ./platforms/ios/'Stk'/Resources/splash
fi

#Android assets copy
 android="./platforms/android"
if [ -d "$android" ] 
then

  cp -Rf ./www/res/icons/android/icon.png ./platforms/android/res/drawable/icon.png
  cp -Rf ./www/res/screens/android/screen-portrait.png ./platforms/android/res/drawable/screen.png

  cp -Rf ./www/res/icons/android/hdpi-icon.png ./platforms/android/res/drawable-hdpi/icon.png
  cp -Rf ./www/res/screens/android/hdpi-screen-portrait.png ./platforms/android/res/drawable-hdpi/screen.png

  cp -Rf ./www/res/icons/android/ldpi-icon.png ./platforms/android/res/drawable-ldpi/icon.png
  cp -Rf ./www/res/screens/android/ldpi-screen-portrait.png ./platforms/android/res/drawable-ldpi/screen.png

  cp -Rf ./www/res/icons/android/mdpi-icon.png ./platforms/android/res/drawable-mdpi/icon.png
  cp -Rf ./www/res/screens/android/mdpi-screen-portrait.png ./platforms/android/res/drawable-mdpi/screen.png

  cp -Rf ./www/res/icons/android/xhdpi-icon.png ./platforms/android/res/drawable-xhdpi/icon.png
  cp -Rf ./www/res/screens/android/xhdpi-screen-portrait.png ./platforms/android/res/drawable-xhdpi/screen.png

fi

该应用程序最初是由Mac上的其他用户开发的 - 当在Windows上运行时,如果我删除assets_copy.sh文件,那么所有内容都会构建,但由于这包含了生成资源图标所需的图标,有什么替代方案允许我在config.xml中为图标添加相同的Android资源的方法&背景屏幕?

1 个答案:

答案 0 :(得分:1)

在我的config.xml文件中添加了以下内容 - 请注意,这必须位于节点内。 这将指定图标&然后是后面的屏幕 - 这似乎对我有用:)

e.g

<widget>
 <platform name="android">
   <icon src="www/res/icons/android/icon.png" />
   <icon src="www/res/icons/android/ldpi-icon.png" density="ldpi" />
   <icon src="www/res/icons/android/mdpi-icon.png" density="mdpi" />
   <icon src="www/res/icons/android/hdpi-icon.png" density="hdpi" />
   <icon src="www/res/icons/android/xhdpi-icon.png" density="xhdpi" />

   <!-- you can use any density that exists in the Android project -->
   <splash src="www/res/screens/android/screen-portrait.png" />    
   <splash src="www/res/screens/android/hdpi-screen-portrait.png" density="port-hdpi" />
   <splash src="www/res/screens/android/ldpi-screen-portrait.png" density="port-ldpi" />
   <splash src="www/res/screens/android/mdpi-screen-portrait.png" density="port-mdpi" />
   <splash src="www/res/screens/android/xhdpi-screen-portrait.png" density="port-xhdpi" />
 </platform>
</widget>