2012-04-13 36 views
2

首先,我在OSX 10.7.3上使用MonoDevelop 2.8.8.4和MonoDroid 4.0.6和Mono 2.10.9。無法獲得MonoDroid 4.0.6 x86仿真或GoogleTV工作

因此,我購買了MFA並創建了通用的「Android應用程序單聲道」測試項目。 我已在選項/構建/ MonoForAndroidBuild下的高級選項卡中檢查了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 android手機設備和ARM AndroidEmulator上工作。

我還設置AndroidManifest.xml中標誌::

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

當我使用「亞行logcat」,它提供了有關x86模擬器錯誤::「java.lang.UnsatisfiedLinkError中:無法加載庫:reloc_library [1311] 799找不到 '的atexit' ...... 「

編輯 - 這裏是一個羅技的GoogleTV運行應用程序時的logcat的信息::

I/ActivityManager( 193): Starting: Intent { act=android.intent.action.MAIN flg=0x10200000 cmp=com.Reign.WaterDemo_Android/waterdemo_android.Activity1 } from pid 247 I/ActivityManager( 193): Start proc com.Reign.WaterDemo_Android for activity 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): Shutting down VM W/dalvikvm(2084): threadid=1: thread exiting with uncaught exception (group=0x66995778) E/AndroidRuntime(2084): FATAL EXCEPTION: main E/AndroidRuntime( 2084): java.lang.UnsatisfiedLinkError: Couldn't load monodroid: findLibrary returned null E/AndroidRuntime(2084): at java.lang.Runtime.loadLibrary(Runtime.java:425) E/AndroidRuntime( 2084): at 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): at android.os.Looper.loop(Looper.java:132) E/AndroidRuntime( 2084): at android.app.ActivityThread.main(ActivityThread.java:4083) E/AndroidRuntime(2084): at java.lang.reflect.Method.invokeNative(Native Method) E/AndroidRuntime( 2084): at 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 Method) W/ActivityManager( 193): Force finishing activity com.Reign.WaterDemo_Android/waterdemo_android.Activity1 D/dalvikvm( 193): GC_FOR_ALLOC freed 324K, 18% free 9559K/11591K, paused 59ms I/dalvikvm-heap( 193): Grow heap (frag case) to 9.816MB for 178700-byte allocation D/dalvikvm( 193): GC_FOR_ALLOC freed 9K, 18% free 9723K/11783K, paused 59ms D/dalvikvm( 193): GC_FOR_ALLOC freed 117K, 19% free 9606K/11783K, paused 58ms I/dalvikvm-heap( 193): Grow heap (frag case) to 10.794MB for 1155900-byte allocation D/dalvikvm( 193): GC_FOR_ALLOC freed 2K, 18% free 10733K/12935K, paused 56ms D/dalvikvm( 193): GC_FOR_ALLOC freed <1K, 18% free 10733K/12935K, paused 57ms I/dalvikvm-heap( 193): Grow heap (frag case) to 12.752MB for 2054924-byte allocation D/dalvikvm( 193): GC_FOR_ALLOC freed 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+3ms

+0

請添加logcat進一步調試。 – 2012-04-13 22:23:45

+0

使用logcat與IntelAtomx86_2.3.3模擬器圖像後,它給出了錯誤::「java.lang.UnsatisfiedLinkError:無法加載庫:reloc_library [1311]:799找不到'atexit'...」沒有GoogleTV與我現在會在我可以的時候回發它的logcat輸出。 – zezba9000 2012-04-15 20:06:29

+0

@Megha Joshi:看起來你的(谷歌的,假設你在那裏工作)在x86 ndk上修復atexit不太正確,鏈接共享庫仍然留下這個缺失的符號。 – 2012-04-23 15:30:48

回答

2

Google TV不支持NDK,所以MonoDroid Java框架無法加載libmonodroid.so庫。目前沒有可用的ABI。

還有一個特點,要求開放爲谷歌電視上NDK支持:

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

+0

我知道NDK在GoogleTV上沒有工作,但'libmonodroid.so'沒有鏈接到NDK嗎?它只是一個C lib的啓動單聲道/單聲道的權利? monodroid只包裝java api的正確嗎?這不應該阻止Java加載它,只是因爲它的一個C庫。我是新來的機器人,所以也許我失去了一些東西? – zezba9000 2012-04-17 15:59:12

+0

'libmonodroid.so'是一個使用... Android NDK構建的本地庫。 (任何有用的本地庫都需要NDK,只是用'libc.so'。) – jonp 2012-04-17 16:59:23

+0

想知道,但他們如何讓Java本身啓動呢?他們不需要NDK ...有點惱人的是他們很難使用除Java之外的其他任何東西。 – zezba9000 2012-04-17 18:27:24

1

這是一個已知的問題,它會影響單在所有x86模擬器Android應用,併爲修復此打算將包含在下一個Mono for Android版本中。這是Google x86 ndk中的一個錯誤,據說這個錯誤應該是固定的(但事實並非如此),所以我們不得不採取一些措施。應用程序的調試版本應該正常工作,這應該隻影響發佈版本。