首先,我使用MonoDevelop 2.8.8.4与MonoDroid 4.0.6和Mono 2.10.9一起使用OSX 10.7.3。
所以我购买了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设置是什么? 注意:我使用的proj适用于我的ARM安卓手机设备和ARM AndroidEmulator。
我还设置了AndroidManifest.xml标志::
<uses-feature android:name="android.hardware.touchscreen" android:required="false" />
当我使用“adb logcat”时,它会在x86 emulators上出错:“java.lang.UnsatisfiedLinkError:无法加载库:reloc_library [1311]:799找不到'atexit'......”
编辑 - 以下是在Logitech GoogleTV上运行应用程序时的logcat信息:: “
I / ActivityManager(193):开始:意图{ act = android.intent.action.MAIN flg = 0x10200000 来自pid的cmp = com.Reign.WaterDemo_Android / waterdemo_android.Activity1} 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):at java.lang.Runtime.loadLibrary(Runtime.java:425)E / AndroidRuntime( 2084):在java.lang.System.loadLibrary(System.java:554) E / AndroidRuntime(2084):at mono.MonoPackageManager.LoadApplication(MonoPackageManager.java:24) E / AndroidRuntime(2084):at mono.MonoRuntimeProvider.attachInfo(MonoRuntimeProvider.java:22) E / AndroidRuntime(2084):at android.app.ActivityThread.installProvider(ActivityThread.java:3938) E / AndroidRuntime(2084):at android.app.ActivityThread.installContentProviders(ActivityThread.java:3693) E / AndroidRuntime(2084):at android.app.ActivityThread.handleBindApplication(ActivityThread.java:3649) E / AndroidRuntime(2084):at android.app.ActivityThread.access $ 2200(ActivityThread.java:124) E / AndroidRuntime(2084):at android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1054) E / AndroidRuntime(2084):at 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):at java.lang.reflect.Method.invokeNative(Native Method)E / AndroidRuntime( 2084):在java.lang.reflect.Method.invoke(Method.java:491) E / AndroidRuntime(2084):at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:841) E / AndroidRuntime(2084):at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599) E / AndroidRuntime(2084):at dalvik.system.NativeStart.main(Native 方法)W / ActivityManager(193):强制完成活动 com.Reign.WaterDemo_Android / waterdemo_android.Activity1 D / dalvikvm( 193):GC_FOR_ALLOC释放324K,18%免费9559K / 11591K,暂停59ms I / dalvikvm-heap(193):将堆(frag case)增长到9.816MB for 178700字节分配D / dalvikvm(193):GC_FOR_ALLOC释放9K,18% 免费9723K / 11783K,暂停59ms D / dalvikvm(193):GC_FOR_ALLOC已释放 117K,19%免费9606K / 11783K,暂停58ms I / dalvikvm-heap(193):成长 堆(frag case)为10.794MB,用于1155900字节分配D / dalvikvm( 193):GC_FOR_ALLOC释放2K,18%自由10733K / 12935K,暂停56ms D / dalvikvm(193):GC_FOR_ALLOC释放<1K,18%免费10733K / 12935K, 暂停57ms I / dalvikvm-heap(193):将堆(frag case)增长到12.752MB 对于2054924字节分配D / dalvikvm(193):GC_FOR_ALLOC释放0K, 15%免费12740K / 14983K,暂停57ms W / ActivityManager(193):活动 ActivityRecord的暂停超时{66e1c680 com.Reign.WaterDemo_Android / waterdemo_android.Activity1} D / dalvikvm( 193):GC_CONCURRENT释放12K,15%免费12867K / 14983K,暂停1ms + 3ms
“
答案 0 :(得分:2)
Google TV不支持NDK,因此MonoDroid Java框架无法加载libmonodroid.so库。目前没有可用的ABI。
Google TV上有针对NDK支持的功能请求:
http://code.google.com/p/googletv-issues/issues/detail?id=12
答案 1 :(得分:1)
这是一个已知的问题,影响所有x86仿真器中的Android应用程序的Mono,并且将在下一版Mono for Android中包含此修复程序。这是谷歌x86 ndk中的一个错误,据说已修复(但事实证明,它不是),所以我们不得不做一些解决方法。应用程序的调试版本应该正常工作,这应该只影响版本构建。