2012-04-13 2 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 и создал общий проект «Mono for Android Application» для тестирования. Я проверил ABI на «armeabi», «armeabi-v7a» и «x86» на вкладке «Дополнительно» в разделе «Option/Build/MonoForAndroidBuild». Я также установил сборку для выпуска. Затем я перехожу к проекту/CreateAndroidProject в файлеMenu для сборки моего файла apk, который я буду использовать для загрузки в устройство GoogleTV или устройство x86 Emulator.

После загрузки и запуска приложения я получаю сообщение об ошибке :: «Приложение AndroidTest (процесс AndroidTest.AndroidTest) неожиданно остановилось. Повторите попытку».

Я также получаю эту же ошибку при использовании эмулятора Android «API lvl 10 Intel Atom x86». У кого-нибудь есть MonoDroid для работы на любых платформах x86? Если да, то какой и какие настройки вы использовали? Вы использовали VirtualBox или стандартный AndroidEmulator? Также, какой уровень API вы использовали, и каковы были настройки MonjDroid proj/sln, необходимые для его работы? ПРИМЕЧАНИЕ. Проект, который я использовал, работает на моем мобильном телефоне ARM и Android-эмуляторе ARM.

Я также установить флаг AndroidManifest.xml ::

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

Когда я использую "ADB LogCat" он дает ошибку на x86 эмуляторы :: «java.lang.UnsatisfiedLinkError: Не удается загрузить библиотеку: reloc_library [1311]: 799 не может найти 'atexit' ... "

EDIT - Вот информация LogCat при запуске приложения на Logitech GoogleTV :: "

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 для дальнейшей отладки. –

+0

После использования logcat с изображением эмулятора IntelAtomx86_2.3.3 он выдает ошибку :: «java.lang.UnsatisfiedLinkError: не удается загрузить библиотеку: reloc_library [1311]: 799 не может найти« atexit »...« У вас нет GoogleTV с я на данный момент, верну свой вывод logcat, когда смогу. – zezba9000

+0

@Megha Joshi: он выглядит как ваш (Google, если вы там работаете) atexit fix на x86 ndk не совсем прав, связывание разделяемых библиотек по-прежнему оставляет их с этим отсутствующим символом. –

ответ

2

Google TV не поддерживает NDK, поэтому среда Java MonoDroid не может загрузить библиотеку libmonodroid.so. В настоящее время нет ABI, которые будут работать.

Существует запрос функция открыта для поддержки NDK на телевидении Google:

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

+0

Я знал, что NDK не работает в GoogleTV, но «libmonodroid.so» не ссылается на NDK? Его просто C lib загружает моно/монодроид правильно? Также monodroid только обертывает java api правильно? Это не должно помешать java загружать его, просто потому, что его C lib.Я новичок в android, так что, может быть, я чего-то не хватает? – zezba9000

+0

'libmonodroid.so' - это родная библиотека, которая построена с ... Android NDK. (Любая родная библиотека, которая делает что-нибудь полезное, нуждается в NDK, просто для использования, например, 'libc.so'.) – jonp

+0

Просто интересно, но как они сами запускают Java? Они не нуждаются в NDK для этого ... Своего раздражающего они сделали так трудно использовать что-нибудь еще, кроме Java. – zezba9000

1

Это известная проблема, которая влияет на Mono для Android приложений на всех x86 эмуляторы, и исправить это собирается быть включенным в следующий выпуск Mono для Android. Это ошибка в Google x86 ndk, которая предположительно была исправлена ​​(но, оказывается, это не так), поэтому нам пришлось сделать небольшое обходное решение. Отладочные сборки вашего приложения должны работать корректно, это должно влиять только на сборки релизов.

 Смежные вопросы

  • Нет связанных вопросов^_^