钩子失败,错误代码为enoint-如何将Android资源添加到配置xml而不是使用钩子
当我尝试在我的Windows 7机器上运行cordova Simulate android时,我的命令提示符中返回以下错误钩子失败,错误代码为enoint-如何将Android资源添加到配置xml而不是使用钩子,android,cordova,cordova-cli,Android,Cordova,Cordova Cli,当我尝试在我的Windows 7机器上运行cordova Simulate 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\s
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)
我的系统信息如下(来自“info”命令)
注意:Ionic安装在我的机器上,但不用于这个单独的项目-我知道这个错误与我的hooks目录有关,它在after\u prepare目录中有一个hook
此文件名为“assets\u 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资源?在我的config.xml文件中添加了以下内容-注意这必须在节点中。 这将分配图标&然后是后面的屏幕-这似乎对我有用:) e、 g
我建议您使用node在js中重新编写钩子,就像这样,它适用于osx、linux和windows。关于资产,您不需要钩子,我只在config.xml中配置了图标,它们适用于ios和android。
#!/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
<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>