E / Unity: невозможно найти главный - PullRequest
0 голосов
/ 01 марта 2019

Я использую Unity в сочетании с пользовательской NDK-библиотекой внутри моего приложения.Моя проблема заключается в том, что, если я пытаюсь запустить узел, на котором выполняется Unity, процесс всегда завершается с сообщением:

E / Unity: не удается найти основной

иalertBox из Unity:

Заголовок: Ошибка инициализации!

Сообщение: Ваше оборудование не поддерживает это приложение

После некоторой попытки обойти, яЯ получил решение, которое мне нужно добавить в мой файл gradle:

android{
    ...
    defaultConfig{
    ...        
        ndk {
               abiFilters 'armeabi-v7a', 'x86'
        }
    }
    ...
}

после выполнения этого Unity работает без ошибок, но когда я запускаю Activity, содержащую мою собственную NDK-библиотеку, она вылетает с ошибкой.

Caused by: java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/de.biosign.daimlerhrv-2/base.apk", zip file "/data/app/de.biosign.daimlerhrv-2/split_lib_dependencies_apk.apk", zip file "/data/app/de.biosign.daimlerhrv-2/split_lib_slice_0_apk.apk", zip file "/data/app/de.biosign.daimlerhrv-2/split_lib_slice_1_apk.apk", zip file "/data/app/de.biosign.daimlerhrv-2/split_lib_slice_2_apk.apk", zip file "/data/app/de.biosign.daimlerhrv-2/split_lib_slice_3_apk.apk", zip file "/data/app/de.biosign.daimlerhrv-2/split_lib_slice_4_apk.apk", zip file "/data/app/de.biosign.daimlerhrv-2/split_lib_slice_5_apk.apk", zip file "/data/app/de.biosign.daimlerhrv-2/split_lib_slice_6_apk.apk", zip file "/data/app/de.biosign.daimlerhrv-2/split_lib_slice_7_apk.apk", zip file "/data/app/de.biosign.daimlerhrv-2/split_lib_slice_8_apk.apk", zip file "/data/app/de.biosign.daimlerhrv-2/split_lib_slice_9_apk.apk"],nativeLibraryDirectories=[/data/app/de.biosign.daimlerhrv-2/lib/arm64, /system/lib64, /vendor/lib64, /system/vendor/lib64]]] couldn't find "libMyLib.so"
        at java.lang.Runtime.loadLibrary0(Runtime.java:972)
        at java.lang.System.loadLibrary(System.java:1530)
        at de.biosign.sessioncomponents.session.RunningSession.<clinit>(RunningSession.java:34)
        at de.biosign.mvc.session.sessionController.SessionController.<init>(SessionController.java:63)
        at de.biosign.biofeedbackunity.BiofeedbackUnity.onCreate(BiofeedbackUnity.java:109)
        at android.app.Activity.performCreate(Activity.java:6666)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2677)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2789)
        at android.app.ActivityThread.-wrap12(ActivityThread.java)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1527)
        at android.os.Handler.dispatchMessage(Handler.java:110)
        at android.os.Looper.loop(Looper.java:203)
        at android.app.ActivityThread.main(ActivityThread.java:6251)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1063)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:924)

Кто-нибудь получил решение этой проблемы и может дать мне подсказку.

Спасибо

Ответы [ 2 ]

0 голосов
/ 01 марта 2019

Решением для меня было добавить следующее в мой Android.mk: (См. Также на https://developer.android.com/ndk/guides/android_mk)

TARGET_ARCH : armeabi-v7a x86

, поэтому мои библиотеки, созданные для этой архитектуры, снова запускаются рядом с Unity,Согласно некоторым сообщениям, более новые версии выше 2017.4 Unity уже поддерживают 64 бита, но для своей работы я использую 5.6, поэтому могу использовать это.

Для других, использующих 2017.4 или выше, есть ссылка: https://developer.android.com/distribute/best-practices/develop/64-bit#unity_developers

0 голосов
/ 01 марта 2019

Согласно вашим журналам ошибок

Причина: java.lang.UnsatisfiedLinkError: ...... / system / lib64, / vendor / lib64, / system / vendor / lib64

Похоже, ваше устройство 64-битное.Но ваш abiFilters 'armeabi-v7a', 'x86' только для 32-битных.

Итак, возможное решение ваших проблем может быть следующим: добавление 64-битных ABI в abiFilters:

abiFilters 'armeabi-v7a', 'x86', 'arm64-v8a', 'x86_64'

Перекрестная проверка:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...