2

首先,我在 OSX 10.7.3 上使用 MonoDevelop 2.8.8.4 和 MonoDroid 4.0.6 和 Mono 2.10.9。

所以我购买了 MFA 并创建了通用的“Mono for Android Application”项目进行测试。我已经在 Option/Build/MonoForAndroidBuild 下的 Advanced 选项卡中检查了 ABI 为“armeabi”、“armeabi-v7a”和“x86”。我还将构建设置为发布。然后我转到 fileMenu 中的 Project/CreateAndroidProject 来构建我的 apk 文件,我将使用它上传到 Logitech Revue GoogleTV 设备或 x86 模拟器。

上传并运行应用程序后,我收到错误消息:“应用程序 AndroidTest(进程 AndroidTest.AndroidTest)已意外停止。请重试。”。

使用 Android 模拟器“API lvl 10 Intel Atom x86”时,我也会遇到同样的错误。有没有人让 MonoDroid 在任何 x86 平台上工作?如果是这样,您使用的是哪一个以及设置是什么?您使用的是 VirtualBox 还是标准的 AndroidEmulator?另外,您使用了什么 API 级别,您需要设置什么 MonoDroid proj/sln 设置才能使其正常工作?注意:我使用的项目适用于我的 ARM android 手机设备和 ARM AndroidEmulator。

我还设置了 AndroidManifest.xml 标志::

<uses-feature android:name="android.hardware.touchscreen" android:required="false" />

当我使用“adb logcat”时,它会在 x86 仿真器上给出错误::“java.lang.UnsatisfiedLinkError:无法加载库:reloc_library [1311]:799 无法找到 'atexit'...”

编辑 - 这是在 Logitech GoogleTV 上运行应用程序时的 logcat 信息:: "

I/ActivityManager(193): 开始: Intent { act=android.intent.action.MAIN flg=0x10200000 cmp=com.Reign.WaterDemo_Android/waterdemo_android.Activity1 } 从 pid 247 I/ActivityManager(193): 启动 proc com.Reign .WaterDemo_Android 用于活动 com.Reign.WaterDemo_Android/waterdemo_android.Activity1:pid=2084 uid=10060 gids={1015} I/ActivityThread(2084):Pub com.Reign.WaterDemo_Android。mono_init:mono.MonoRuntimeProvider D / AndroidRuntime(2084):关闭VM W / dalvikvm(2084):threadid = 1:线程退出未捕获异常(组= 0x66995778)E / AndroidRuntime(2084):致命异常:主要E / AndroidRuntime( 2084):java.lang.UnsatisfiedLinkError:无法加载 monodroid:findLibrary 返回 null E/AndroidRuntime(2084):在 java.lang.Runtime.loadLibrary(Runtime.java:425) E/AndroidRuntime(2084):在 java。 lang.System.loadLibrary(System.java:554) E/AndroidRuntime(2084): 在 mono.MonoPackageManager.LoadApplication(MonoPackageManager.java:24) E/AndroidRuntime(2084): 在 mono.MonoRuntimeProvider.attachInfo(MonoRuntimeProvider.java: 22) E/AndroidRuntime(2084):在 android.app.ActivityThread.installProvider(ActivityThread.java:3938) E/AndroidRuntime(2084):在 android.app.ActivityThread。installContentProviders(ActivityThread.java:3693) E/AndroidRuntime(2084): 在 android.app.ActivityThread.handleBindApplication(ActivityThread.java:3649) E/AndroidRuntime(2084): 在 android.app.ActivityThread.access$2200(ActivityThread.java :124) E/AndroidRuntime(2084): 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1054) E/AndroidRuntime(2084): 在 android.os.Handler.dispatchMessage(Handler.java:99) E /AndroidRuntime(2084): 在 android.os.Looper.loop(Looper.java:132) E/AndroidRuntime(2084): 在 android.app.ActivityThread.main(ActivityThread.java:4083) E/AndroidRuntime(2084):在 java.lang.reflect.Method.invokeNative(Native Method) E/AndroidRuntime(2084): 在 java.lang.reflect.Method.invoke(Method.java:491) E/AndroidRuntime(2084): 在 com.android。内部操作系统ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841) E/AndroidRuntime(2084):在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599) E/AndroidRuntime(2084):在 dalvik.system。 NativeStart.main(Native Method) W/ActivityManager(193):强制完成活动 com.Reign.WaterDemo_Android/waterdemo_android.Activity1 D/dalvikvm(193):GC_FOR_ALLOC 释放 324K,18% 释放 9559K/11591K,暂停 59ms I/dalvikvm-堆(193):将堆(碎片情况)增加到 9.816MB,分配 178700 字节 D/dalvikvm(193):GC_FOR_ALLOC 释放 9K,18% 空闲 9723K/11783K,暂停 59ms D/dalvikvm(193):GC_FOR_ALLOC 释放 117K, 19% 空闲 9606K/11783K,暂停 58 毫秒 I/dalvikvm-heap(193):将堆(碎片情况)增加到 10.794MB,分配 1155900 字节 D/dalvikvm(193):GC_FOR_ALLOC 释放 2K,18% 空闲 10733K/12935K,暂停 56 毫秒 D/dalvikvm(193):GC_FOR_ALLOC 释放 <1K,18% 空闲 10733K/12935K,暂停 57ms I/dalvikvm-heap(193):将堆(碎片情况)增加到 12.752MB,分配 2054924 字节 D/dalvikvm(193):GC_FOR_ALLOC 释放 0K,15% free 12740K/14983K, paused 57ms W/ActivityManager(193): Activity pause timeout for ActivityRecord{66e1c680 com.Reign.WaterDemo_Android/waterdemo_android.Activity1} D/dalvikvm(193): GC_CONCURRENT freed 12K, 15% free 12867K/14983K, paused 1ms+3msGC_CONCURRENT 释放 12K,15% 释放 12867K/14983K,暂停 1ms+3msGC_CONCURRENT 释放 12K,15% 释放 12867K/14983K,暂停 1ms+3ms

"

4

2 回答 2

2

Google TV 不支持 NDK,因此 MonoDroid Java 框架无法加载 libmonodroid.so 库。目前没有可用的 ABI。

在 Google TV 上有一个针对 NDK 支持的功能请求:

http://code.google.com/p/googletv-issues/issues/detail?id=12

于 2012-04-17T01:24:02.497 回答
1

这是一个已知问题,它会影响所有 x86 模拟器中的 Mono for Android 应用程序,针对此问题的修复将包含在 Mono for Android 的下一个版本中。这是 Google x86 ndk 中的一个错误,据说已经修复(但事实证明,它不是),所以我们不得不做一些变通方法。您的应用程序的调试版本应该可以正常工作,这只会影响发布版本。

于 2012-04-23T15:29:00.183 回答