1

我正在尝试Accelerometer在我的游戏中使用Andengine并且我还添加了andenginephysicsbox2dextension.jar

private PhysicsWorld mPhysicsWorld;

//--OnLoadScene()

this.mPhysicsWorld = new PhysicsWorld(new Vector2(0, SensorManager.GRAVITY_EARTH), false);

当我实现这一行时,我得到了错误并且无法运行。

如何修复此错误?

Logcat 错误:

07-27 13:57:21.125: ERROR/AndroidRuntime(1006): FATAL EXCEPTION: main
07-27 13:57:21.125: ERROR/AndroidRuntime(1006): java.lang.ExceptionInInitializerError
07-27 13:57:21.125: ERROR/AndroidRuntime(1006):     at Org.Demo.PixelPerfectTest.onLoadScene(PixelPerfectTest.java:223)
07-27 13:57:21.125: ERROR/AndroidRuntime(1006):     at org.anddev.andengine.ui.activity.BaseGameActivity.doResume(BaseGameActivity.java:158)
07-27 13:57:21.125: ERROR/AndroidRuntime(1006):     at org.anddev.andengine.ui.activity.BaseGameActivity.onWindowFocusChanged(BaseGameActivity.java:82)
07-27 13:57:21.125: ERROR/AndroidRuntime(1006):     at com.android.internal.policy.impl.PhoneWindow$DecorView.onWindowFocusChanged(PhoneWindow.java:2152)
07-27 13:57:21.125: ERROR/AndroidRuntime(1006):     at android.view.View.dispatchWindowFocusChanged(View.java:4691)
07-27 13:57:21.125: ERROR/AndroidRuntime(1006):     at android.view.ViewGroup.dispatchWindowFocusChanged(ViewGroup.java:752)
07-27 13:57:21.125: ERROR/AndroidRuntime(1006):     at android.view.ViewRoot.handleMessage(ViewRoot.java:2102)
07-27 13:57:21.125: ERROR/AndroidRuntime(1006):     at android.os.Handler.dispatchMessage(Handler.java:99)
07-27 13:57:21.125: ERROR/AndroidRuntime(1006):     at android.os.Looper.loop(Looper.java:132)
07-27 13:57:21.125: ERROR/AndroidRuntime(1006):     at android.app.ActivityThread.main(ActivityThread.java:4025)
07-27 13:57:21.125: ERROR/AndroidRuntime(1006):     at java.lang.reflect.Method.invokeNative(Native Method)
07-27 13:57:21.125: ERROR/AndroidRuntime(1006):     at java.lang.reflect.Method.invoke(Method.java:491)
07-27 13:57:21.125: ERROR/AndroidRuntime(1006):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
07-27 13:57:21.125: ERROR/AndroidRuntime(1006):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
07-27 13:57:21.125: ERROR/AndroidRuntime(1006):     at dalvik.system.NativeStart.main(Native Method)
07-27 13:57:21.125: ERROR/AndroidRuntime(1006): Caused by: java.lang.UnsatisfiedLinkError: Couldn't load andenginephysicsbox2dextension: findLibrary returned null
07-27 13:57:21.125: ERROR/AndroidRuntime(1006):     at java.lang.Runtime.loadLibrary(Runtime.java:425)
07-27 13:57:21.125: ERROR/AndroidRuntime(1006):     at java.lang.System.loadLibrary(System.java:554)
07-27 13:57:21.125: ERROR/AndroidRuntime(1006):     at org.anddev.andengine.extension.physics.box2d.PhysicsWorld.<clinit>(PhysicsWorld.java:30)
07-27 13:57:21.125: ERROR/AndroidRuntime(1006):     ... 15 more
4

4 回答 4

4

您必须在库中包含 .so 文件并通过项目属性添加 .jar 文件。这两个 .so 文件有两个版本(arneabu 和 armeabi-v7a)……我不知道哪个版本更新。将它们放在库中并确保刷新构建路径。

然后,如果您还没有这样做,请确保通过在 Eclipse 中拉出 Project Properties 来包含相关的 .jar 文件。然后,在不加载 Eclipse 的情况下(我必须关闭这个浏览器以避免让这台 POS 笔记本电脑陷入太多困境),我 99% 确定它在构建路径下,你会看到一个“添加外部 JAR”选项。选择它,然后添加必要的 jar 文件。

显然,基于我阅读的一个线程,忘记 .so 库是一个有点常见的错误(我也犯了一个错误!)。

现在,如果您的应用程序是动态壁纸,那么任何 AndEngine 物理特性都会出现问题。我读过很多关于人们遇到问题、寻找错误修复等的帖子。

我现在在 AndEngine 论坛上有一个关于这个问题的悬而未决的问题。在我的物理和基于物理的(物理/化学:Buckyballs (buckminsterfullerenes) 和 AndEngine 的物理代码)LWP 应用程序中,我无法让任何触摸事件或加速度计工作。我基本上遇到了一堵砖墙,这使得继续前进变得毫无意义,直到(如果)我得到对我添加的最新更新的回应......

希望这可以帮助....

后来,
   --jim

于 2011-07-30T03:48:09.140 回答
2

注意这一行:

07-27 13:57:21.125: ERROR/AndroidRuntime(1006): Caused by: java.lang.UnsatisfiedLinkError: Couldn't load andenginephysicsbox2dextension: findLibrary returned null

验证您的构建路径设置,也许您忽略了所需的库/扩展?根据您提供的信息,并考虑到我没有使用该库。也许您需要将物理 Box2D 扩展添加到构建路径。

问候。

于 2011-07-27T09:18:05.153 回答
0

GT布鲁尔。只需在physicsbox2d 项目中构建本机库。然后 cp -r ./libs 从物理项目到动态壁纸项目。刷新,project->clean然后构建。中提琴!

于 2012-03-28T23:35:26.330 回答
0

由于您的项目忽略 .so 文件。你可以在这里按照我的回答https://stackoverflow.com/a/34068202/2026280

或者

它非常简单。按照这个简单的步骤

1)在主应用程序的 libs 文件夹中创建一个名为“lib”的新文件夹。

2)从 andEnginePhysicsBox2DExtension /libs文件夹中复制所有文件夹 ie.armabi 、 armabi-v7a 等,并粘贴到主应用程序中先前创建的“lib”文件夹中。

3)现在将"lib"文件夹压缩为"lib.zip"并将其重命名为"lib.jar"。这会将zip扩展名更改为jar

4)最后在你的主应用的Build.gradle文件中添加一行 -- compile files('lib.jar') under dependencies{} 。

5)清理并构建项目。

于 2015-12-03T14:19:36.710 回答