我从某人那里收到了一个可以运行的 Android 版本,但是当我尝试启动它时,我收到了错误..
09-23 07:25:26.976: E/AndroidRuntime(336): FATAL EXCEPTION: main
09-23 07:25:26.976: E/AndroidRuntime(336): java.lang.ExceptionInInitializerError
09-23 07:25:26.976: E/AndroidRuntime(336): at java.lang.Class.newInstanceImpl(Native Method)
09-23 07:25:26.976: E/AndroidRuntime(336): at java.lang.Class.newInstance(Class.java:1409)
09-23 07:25:26.976: E/AndroidRuntime(336): at android.app.Instrumentation.newActivity(Instrumentation.java:1021)
09-23 07:25:26.976: E/AndroidRuntime(336): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1561)
09-23 07:25:26.976: E/AndroidRuntime(336): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
09-23 07:25:26.976: E/AndroidRuntime(336): at android.app.ActivityThread.access$1500(ActivityThread.java:117)
09-23 07:25:26.976: E/AndroidRuntime(336): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
09-23 07:25:26.976: E/AndroidRuntime(336): at android.os.Handler.dispatchMessage(Handler.java:99)
09-23 07:25:26.976: E/AndroidRuntime(336): at android.os.Looper.loop(Looper.java:123)
09-23 07:25:26.976: E/AndroidRuntime(336): at android.app.ActivityThread.main(ActivityThread.java:3683)
09-23 07:25:26.976: E/AndroidRuntime(336): at java.lang.reflect.Method.invokeNative(Native Method)
09-23 07:25:26.976: E/AndroidRuntime(336): at java.lang.reflect.Method.invoke(Method.java:507)
09-23 07:25:26.976: E/AndroidRuntime(336): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
09-23 07:25:26.976: E/AndroidRuntime(336): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
09-23 07:25:26.976: E/AndroidRuntime(336): at dalvik.system.NativeStart.main(Native Method)
09-23 07:25:26.976: E/AndroidRuntime(336): Caused by: java.lang.UnsatisfiedLinkError: Couldn't load moai: findLibrary returned null
09-23 07:25:26.976: E/AndroidRuntime(336): at java.lang.Runtime.loadLibrary(Runtime.java:429)
09-23 07:25:26.976: E/AndroidRuntime(336): at java.lang.System.loadLibrary(System.java:554)
09-23 07:25:26.976: E/AndroidRuntime(336): at com.getmoai.samples.MoaiActivity.<clinit>(MoaiActivity.java:67)
09-23 07:25:26.976: E/AndroidRuntime(336): ... 15 more
谁能告诉我如何解决这个问题?
法尔科
最佳答案
需要验证的事情很少...
您是否使用匹配的模拟器/AVD 镜像?如果您使用基于 x86 的 AVD 或 genymotion,请确保您的项目正在生成 x86 库。假设您有 NDK 库的源代码,很容易生成 x86 库以及其他库,只需添加
APP_ABI := armeabi armeabi-v7a x86 mips
或者简单地
APP_ABI := 全部
在您的 Application.mk 中(位于 jni 文件夹中)。如果您没有源(通常是 jni 文件夹),请使用匹配的设备进行测试或使用匹配的 AVD 模拟器配置。
确保 eclipse 正确地将 native 库与您的 APK 打包在一起。您可以通过将 APK 文件(位于 bin 文件夹下)作为 zip 文件打开,然后检查是否有
lib
文件夹及其内部的x86
文件夹或相应的文件来执行此操作。您正在使用的模拟器/avd 配置的 arch 文件夹。- 如果出现问题,为了让 Eclipse 构建和打包基于 NDK 的应用程序,您将需要 download Android NDK kit ,并在 Eclipse 中的
Window -> Preferences -> Android -> NDK
下配置 NDK 路径。 - 在 Eclipse 中,您还需要右键单击该项目,然后为您的项目单击
Android Tools -> Add Native Support...
。然后,您应该能够正确构建使用 NDK 的应用。
- 如果出现问题,为了让 Eclipse 构建和打包基于 NDK 的应用程序,您将需要 download Android NDK kit ,并在 Eclipse 中的
关于android - 摩艾安卓构建问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25927891/