Can';我不能让MonoDroid 4.0.6 x86仿真或谷歌电视正常工作

Can';我不能让MonoDroid 4.0.6 x86仿真或谷歌电视正常工作,mono,x86,xamarin.android,google-tv,Mono,X86,Xamarin.android,Google Tv,首先,我在OSX 10.7.3上使用MonoDevelop 2.8.8.4以及MonoDroid 4.0.6和Mono 2.10.9 因此,我购买了MFA,并创建了通用的“Mono for Android应用程序”项目进行测试。 我已经在选项/Build/MonoForAndroidBuild下的Advanced选项卡中检查了“armeabi”、“armeabi-v7a”和“x86”的ABI。 我还将构建设置为发布。 然后,我进入文件菜单中的Project/CreateAndroidProjec

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

因此,我购买了MFA,并创建了通用的“Mono for Android应用程序”项目进行测试。 我已经在选项/Build/MonoForAndroidBuild下的Advanced选项卡中检查了“armeabi”、“armeabi-v7a”和“x86”的ABI。 我还将构建设置为发布。 然后,我进入文件菜单中的Project/CreateAndroidProject,构建我将用于上传到Logitech Revue GoogleTV设备或x86 Emulator的apk文件

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

在使用Android仿真器“API lvl 10英特尔Atom x86”时,我也会遇到同样的错误。 有人让MonoDroid在x86平台上工作吗?如果是,您使用的是哪种设置?您使用的是VirtualBox还是标准的AndroidSimulator?另外,您使用了什么API级别,需要设置什么样的MonoDroid proj/sln设置才能使其正常工作? 注意:我使用的proj可以在我的ARM android手机设备和ARM android模拟器上使用

我还设置了AndroidManifest.xml标志:

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

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

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

I/ActivityManager(193):开始:意图{ act=android.intent.action.MAIN flg=0x10200000 来自pid的cmp=com.rive.WaterDemo_Android/WaterDemo_Android.Activity1} 247 I/ActivityManager(193):启动proc com.rive.WaterDemo_Android 对于活动com.rive.WaterDemo_Android/WaterDemo_Android.Activity1: pid=2084 uid=10060 gids={1015}I/ActivityThread(2084):发布 com.reage.WaterDemo\u Android.mono\u init:mono.mono运行时提供程序 D/AndroidRuntime(2084):关闭带有dalvikvm(2084)的虚拟机: threadid=1:线程以未捕获异常退出(组=0x66995778) E/AndroidRuntime(2084):致命异常:主E/AndroidRuntime( 2084):java.lang.UnsatisfiedLinkError:无法加载monodroid: findLibrary返回空E/AndroidRuntime(2084):在 java.lang.Runtime.loadLibrary(Runtime.java:425)E/AndroidRuntime( 2084):位于java.lang.System.loadLibrary(System.java:554) E/AndroidRuntime(2084):在 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):在 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):在 invokenactive(本机方法)E/AndroidRuntime( 2084):位于java.lang.reflect.Method.invoke(Method.java:491) E/AndroidRuntime(2084):在 com.android.internal.os.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(本机) 方法)W/ActivityManager(193):强制完成活动 com.rive.WaterDemo_Android/WaterDemo_Android.Activity1 D/dalvikvm( 193):所有释放324K的GC,18%释放9559K/11591K,暂停59ms I/dalvikvm堆(193):对于 178700字节分配D/dalvikvm(193):分配释放9K的GC,18% 自由9723K/11783K,暂停59ms D/dalvikvm(193):释放所有 117K,19%空闲9606K/11783K,暂停58ms I/dalvikvm堆(193):增长 1155900字节分配D/dalvikvm( 193):GC_FOR_ALLOC freed 2K,18%free 10733K/12935K,暂停56ms
D/dalvikvm(193):Google TV不支持NDK,因此MonoDroid Java框架无法加载libmonodroid.so库。目前没有可以工作的ABI

谷歌电视上有一个NDK支持的功能请求:


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

请添加logcat进行进一步调试。在将logcat与IntelAtomx86_2.3.3模拟器映像一起使用后,它会给出错误::“java.lang.UnsatisfiedLinkError:无法加载库:reloc_库[1311]:799找不到“atexit”…“我现在没有谷歌电视,我会在可能的时候发回它的logcat输出。@Megha Joshi:看起来像你的(谷歌的,假设你在那里工作)x86 ndk上的atexit修复不太正确,链接共享库仍然会留下这个缺失的符号。我知道ndk在谷歌电视上不起作用,但是“libmonodroid.so”没有链接到ndk,是吗?它只是一个C库,引导mono/monodroid正确吗?而且monodroid只包装java api正确吗?这不应该阻止java因为它是一个C库,所以我不想加载它