Cocos2d-js:一些演示不会在Genymotion上运行

时间:2014-10-07 17:33:54

标签: android cocos2d-x cocos2d-js

我为Android编译了Cocos2d-js' Hello World' -project并尝试在Genymotion上运行它(x86上的Android模拟器)。

我已经尝试添加:

APP_ABI := armeabi armeabi-v7a x86

Application.mk,这使得apk大3倍,但是当我在Genymotion中运行应用程序时,它会立即显示" HelloWorld已停止"。

同样的apk在真正的Android设备上运行良好。

有什么想法吗?

更新: 样本JS-MoonWarriors在Genymotion上运行正常(安装了ARM翻译),所以我猜它与x86无关。然而,样本JS-Tests 工作(相同的错误' ...已停止')。

2 个答案:

答案 0 :(得分:2)

在以下链接的帮助下解决了这个问题: http://discuss.cocos2d-x.org/t/cocos2d-x-with-genymotion/9476/2

在文件中Cocos2dxActivity.java是一个检查它是否在默认Android模拟器上运行的函数。 更改此功能还包括Genymotion(和Adobe VirtualBox):

isEmulator = product.equals("sdk") ||
             product.contains("_sdk") || 
             product.contains("sdk_") || 
             product.contains("vbox");

此外,您必须确保在Genymotion中安装ARM转换包,或者在问题中使用APP_ABI技巧。

答案 1 :(得分:1)

我也解决了这个问题......你应该做两件事让它发挥作用:

首先在一个名为Cocos2dxActivity.java的文件中搜索你的cocos游戏项目然后用记事本打开它并向下滚动到文件的底部然后你应该找到一个带有这样一行的静态函数:

 isEmulator = product.equals("sdk") || product.contains("_sdk") || product.contains("sdk_");

需要更改为:

 isEmulator = product.equals("sdk") || product.contains("_sdk") || product.contains("sdk_") || product.contains("vbox");

再次搜索你的cocos游戏项目,获取另一个名为Application.mk的文件,就像通常用记事本一样打开它并在这些拖曳线下:

# Uncomment this line to compile to armeabi-v7a, your application will run faster but support less devices
#APP_ABI := armeabi-v7a

在它们下方添加另一条线:

APP_ABI := armeabi x86 

你应该考虑的另一件事是你刚刚添加的行应该和我写的一样,如果你只是试试这个:

APP_ABI := Armeabi x86 (Wrong ... it wont work just because of the capital A)

顺便说一句,我使用Cocos代码IDE 1.2将我的apk文件打包用框架v3.7和android-ndk-r10c以及SDK作为adt-bundle-windows-x86_64-20140702

还有一件事......你必须在你的模拟器中使用Gapps安装Genymotion-ARM-Translation才能实现这一点。

PS:如果您没有找到任何文件,则需要重新创建项目并向签入的项目添加本机代码。