как мне поставить мои нативные библиотеки на obj / local - PullRequest
0 голосов
/ 08 октября 2018

Итак, я уже сделал файл Android.mk и думаю, что он уже делает свою работу.Я использую .so файлы, и у меня нет исходных файлов для них.

Это мой файл Android.mk.

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)
LOCAL_MODULE := wfdsinkemu
LOCAL_SRC_FILES := lib/armeabi-v7a/libwfdsinkemu.so
include $(PREBUILT_SHARED_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE := gstreamer_android
LOCAL_SRC_FILES := lib/armeabi-v7a/libgstreamer_android.so
include $(PREBUILT_SHARED_LIBRARY)

Это мой файл Application.mk.

APP_ABI := all
APP_OPTIM := release
APP_PLATFORM := android-8
APP_STL := c++_shared
APP_BUILD_SCRIPT := jni/Android.mk
APP_MODULES := libgstreamer_android libwfdsinkemu

Но я думаю, что нативные библиотеки по-прежнему не копируются в папку obj / local, потому что приложение по-прежнему вылетает с UnsatisfiedLinkError.

Я уже использую ReLinker, он все еще показывает этоошибка.

Fatal Exception: java.lang.UnsatisfiedLinkError: dlopen failed: library "./obj/local/armeabi-v7a/libgstreamer_android.so" not found

Кстати, я пытаюсь заставить это работать на андроид-боксе, работающем на нуге.

После понижения моего targetSdkVersion с 26 до 22, это работало с, я думаю, что ошибкаотображается с помощью AlertDialog.Ошибка

Detected problems with app native libraries
(please consult log for detail):
libwfdsinkemu.so: invalid DT_NEEDED entry "./obj/local/armeabi-v7a/libgstreamer_android.so"

Ответы [ 2 ]

0 голосов
/ 08 октября 2018

Вы должны сообщить Gradle, что у вас есть предварительно собранные библиотеки NDK.

https://developer.android.com/studio/projects/gradle-external-native-builds#jniLibs

android {
    ...
    sourceSets {
        main {
            jniLibs.srcDirs 'imported-lib/src/', 'more-imported-libs/src/'
        }
    }
}
0 голосов
/ 08 октября 2018

Таким образом, по-видимому, от нуги или от зефира до последней версии Android API (нуга), Google изменил некоторые политики безопасности, затрудняя использование собственных библиотек.

После некоторого исследования я нашел ответ, который говорит, что мне нужно сделать мои targetSdkVersion до 22 (первоначально 26).После внесения изменений все заработало.Кажется, что это ошибка на Android Api зефир и выше.Я надеюсь, что в следующей версии они упростят использование нативных библиотек.

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