在Windows下创建cocos2dx的android项目build_native.sh时如果遇到权限问题的解决办法

本文介绍了解决Cocos2d-x项目在Windows环境下构建时遇到的权限问题的具体步骤,包括使用takeown和icacls命令来修改文件及目录权限。

cygdrive是cygwin的目录

切换目录至/cygdrive/d/cocos2dx/MyHelloWorld/proj.android运行build_native.sh

  1. berdy@berdy-PC /cygdrive/d/cocos2dx/MyHelloWorld/proj.android  
  2. $ ./build_native.sh  
  3. cp: cannot open `/cygdrive/d/cocos2dx/MyHelloWorld/Resources/CloseNormal.png' for reading: Permission denied  
  4. cp: cannot open `/cygdrive/d/cocos2dx/MyHelloWorld/Resources/CloseSelected.png' for reading: Permission denied  
  5. cp: cannot open `/cygdrive/d/cocos2dx/MyHelloWorld/Resources/fps_images.png' for reading: Permission denied  
  6. cp: cannot open `/cygdrive/d/cocos2dx/MyHelloWorld/Resources/fps_images-hd.png' for reading: Permission denied  
  7. cp: cannot open `/cygdrive/d/cocos2dx/MyHelloWorld/Resources/fps_images-ipadhd.png' for reading: Permission denied  
  8. cp: cannot open `/cygdrive/d/cocos2dx/MyHelloWorld/Resources/HelloWorld.png' for reading: Permission denied  
  9. Using prebuilt externals  
  10. make: Entering directory `/cygdrive/d/cocos2dx/MyHelloWorld/proj.android'  
  11. /cygdrive/d/Android/android-sdk/android-ndk-r8b/build/core/add-application.mk:49: jni/Application.mk: Permission denied  
  12. /cygdrive/d/Android/android-sdk/android-ndk-r8b/build/core/setup-toolchain.mk:169: jni/Android.mk: Permission denied  
  13. Gdbserver      : [arm-linux-androideabi-4.6] libs/armeabi/gdbserver  
  14. Gdbsetup       : libs/armeabi/gdb.setup  
  15. make: Leaving directory `/cygdrive/d/cocos2dx/MyHelloWorld/proj.android'

可以看到cannot open,说明build出错了,Permission denied,windows 7下的权限问题。切换到windows的命令行中,
切换到D:\cocos2dx\MyHelloWorld录下,修改文件和目录的权限。


  1. D:\cocos2dx\MyHelloWorld>takeown /f * /a /r  
  2. 成功: 此文件(或文件夹): "D:\cocos2dx\MyHelloWorld\Classes" 现在由管理员组所有。  
  3. 成功: 此文件(或文件夹): "D:\cocos2dx\MyHelloWorld\proj.android" 现在由管理员组所有。  
  4. 成功: 此文件(或文件夹): "D:\cocos2dx\MyHelloWorld\Resources" 现在由管理员组所有。  
  5. 成功: 此文件(或文件夹): "D:\cocos2dx\MyHelloWorld\Classes\AppDelegate.cpp" 现在由管理员组所有。  
  6. 成功: 此文件(或文件夹): "D:\cocos2dx\MyHelloWorld\Classes\AppDelegate.h" 现在由管理员组所有。  
  7. 成功: 此文件(或文件夹): "D:\cocos2dx\MyHelloWorld\Classes\HelloWorldScene.cpp" 现在由管理员组所有。  
  8. 成功: 此文件(或文件夹): "D:\cocos2dx\MyHelloWorld\Classes\HelloWorldScene.h" 现在由管理员组所有。  
  9. 成功: 此文件(或文件夹): "D:\cocos2dx\MyHelloWorld\proj.android\AndroidManifest.xml" 现在由管理员组所有。  
  10. 成功: 此文件(或文件夹): "D:\cocos2dx\MyHelloWorld\proj.android\ant.properties" 现在由管理员组所有。  
  11. 成功: 此文件(或文件夹): "D:\cocos2dx\MyHelloWorld\proj.android\assets" 现在由管理员组所有。  
  12. 成功: 此文件(或文件夹): "D:\cocos2dx\MyHelloWorld\proj.android\bin" 现在由管理员组所有。  
  13. 成功: 此文件(或文件夹): "D:\cocos2dx\MyHelloWorld\proj.android\build.xml" 现在由管理员组所有。  
  14. 成功: 此文件(或文件夹): "D:\cocos2dx\MyHelloWorld\proj.android\build_native.sh" 现在由管理员组所有。  

说明修改文件和目录的权限打开了


授权everyone组:

  1. D:\cocos2dx\MyHelloWorld>icacls * /t /grant:r everyone:f  
  2. 已处理的文件: Classes  
  3. 已处理的文件: proj.android  
  4. 已处理的文件: Resources  
  5. (省略了中间的提示信息)  
  6. 已处理的文件: Resources\CloseNormal.png  
  7. 已处理的文件: Resources\CloseSelected.png  
  8. 已处理的文件: Resources\fps_images-hd.png  
  9. 已处理的文件: Resources\fps_images-ipadhd.png  
  10. 已处理的文件: Resources\fps_images.png  
  11. 已处理的文件: Resources\HelloWorld.png  
  12. 已成功处理 65 个文件; 处理 0 个文件时失败  

再切换到cygwin Terminal下,再次运行build_native.sh包

  1. berdy@berdy-PC /cygdrive/d/cocos2dx/MyHelloWorld/proj.android  
  2. $ ./build_native.sh  
  3. (省略中间的编译提示信息)  
  4. d:/android/android-sdk/android-ndk-r8b/toolchains/arm-linux-androideabi-4.6/prebuilt/windows/bin/../lib/gcc/arm-linux-androideabi/4.6.x-google/../../../../arm-linux-androideabi/bin/ld.exe: cannot find ./obj/local/armeabi/png.a: Permission denied  
  5. d:/android/android-sdk/android-ndk-r8b/toolchains/arm-linux-androideabi-4.6/prebuilt/windows/bin/../lib/gcc/arm-linux-androideabi/4.6.x-google/../../../../arm-linux-androideabi/bin/ld.exe: cannot find ./obj/local/armeabi/jpeg.a: Permission denied  
  6. d:/android/android-sdk/android-ndk-r8b/toolchains/arm-linux-androideabi-4.6/prebuilt/windows/bin/../lib/gcc/arm-linux-androideabi/4.6.x-google/../../../../arm-linux-androideabi/bin/ld.exe: cannot find ./obj/local/armeabi/xml2.a: Permission denied  
  7. d:/android/android-sdk/android-ndk-r8b/toolchains/arm-linux-androideabi-4.6/prebuilt/windows/bin/../lib/gcc/arm-linux-androideabi/4.6.x-google/../../../../arm-linux-androideabi/bin/ld.exe: cannot find ./obj/local/armeabi/tiff.a: Permission denied  
  8. d:/android/android-sdk/android-ndk-r8b/toolchains/arm-linux-androideabi-4.6/prebuilt/windows/bin/../lib/gcc/arm-linux-androideabi/4.6.x-google/../../../../arm-linux-androideabi/bin/ld.exe: cannot find ./obj/local/armeabi/libgnustl_static.a: Permission denied  
  9. collect2: ld returned 1 exit status  
  10. /cygdrive/d/Android/android-sdk/android-ndk-r8b/build/core/build-binary.mk:378: recipe for target `obj/local/armeabi/libgame.so' failed  
  11. make: *** [obj/local/armeabi/libgame.so] Error 1  
  12. make: Leaving directory `/cygdrive/d/cocos2dx/MyHelloWorld/proj.android'  

发现还是Permission denied错误,所以还需要打开某些文件的权限:

jpeg.a,libcocos2d.a,libcocosdenshion.a,libgnustl_static.a,png.a,tiff.a,xml2.a
切换到D:\cocos2dx\MyHelloWorld\proj.android\obj\local\armeabi,同样执行上面的命令

  1. D:\cocos2dx\MyHelloWorld\proj.android\obj\local\armeabi>takeown /f * /a /r  
  2. D:\cocos2dx\MyHelloWorld\proj.android\obj\local\armeabi>icacls * /t /grant:r everyone:f

再次切换到cygwin Terminal下

[plain]  view plain copy
  1. berdy@berdy-PC /cygdrive/d/cocos2dx/MyHelloWorld/proj.android  
  2. $ ./build_native.sh  
  3. Using prebuilt externals  
  4. make: Entering directory `/cygdrive/d/cocos2dx/MyHelloWorld/proj.android'  
  5. Gdbserver      : [arm-linux-androideabi-4.6] libs/armeabi/gdbserver  
  6. Gdbsetup       : libs/armeabi/gdb.setup  
  7. SharedLibrary  : libgame.so  
  8. Install        : libgame.so => libs/armeabi/libgame.so  
  9. make: Leaving directory `/cygdrive/d/cocos2dx/MyHelloWorld/proj.android'  

说明build_native.sh执行成功了

所以说打开文件权限的方法是在windows的命令行中cd 到某一个目录下,然后执行takeown /f * /a /r和icacls * /t /grant:r everyone:f

这样就打开了该文件夹下的文件的权限


或是修改build_native.sh

比如bulid_native.sh中复制asserts文件的代码



在下面增加一行chmod 666 -R "$APP_ANDROID_ROOT"/assets,这样的话即可对assets文件进行操作了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值