Разработка с LibVLC для android на Windows

Я старался даже демо приложения работает с Android-LibVLC.

Я могу только найти документация для linux и не может заставить приложение работать на моем устройстве (хотя оно компилируется).

когда я запускаю приложение, он записывает:

12-16 15:58:19.572    9121-9121/? E/VLC/LibVLC﹕ Can't load vlcjni library: java.lang.UnsatisfiedLinkError: Couldn't load vlcjni from loader dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.compdigitec.libvlcandroidsample-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.compdigitec.libvlcandroidsample-1, /vendor/lib, /system/lib]]]: findLibrary returned null
12-16 15:58:19.667    9135-9135/com.compdigitec.libvlcandroidsample E/VLC/LibVLC﹕ Can't load vlcjni library: java.lang.UnsatisfiedLinkError: Couldn't load vlcjni from loader dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.compdigitec.libvlcandroidsample-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.compdigitec.libvlcandroidsample-1, /vendor/lib, /system/lib]]]: findLibrary returned null

я скомпилировал проект APK с организацией.у VideoLAN.libvlc классы каталогов как часть исходного корня и с каталогом jni в том же модуле и не удалось, Я также включил весь модуль VLC в качестве отдельного библиотечного модуля и сделал его зависимостью, это также не удалось.

есть ли у кого-нибудь проверенный метод настройки/сборки проекта android с LibVLC из windows? Или ссылка на инструкции / документацию? (Я не смог ничего найти).

цель состоит в том, чтобы заменить мои классы Android MediaPlayer reliant на библиотеку/реализацию, которая поддерживает больше типов файлов / кодеков.

2 ответов


при строительстве в окнах вы получите предупреждение"Android.mk:iomx-hc: non-system libraries in linker flags: -lgcc -lstagefright - lmedia -lbinder" вы получите их за несколько файлов. И это также предупреждает "Android NDK:This is likely to result in incorrect builds. Try using LOCAL_STATIC_LIBRARIES" Поэтому, даже если вы получите выходные данные сборки, у него не будет необходимых файлов. И, следовательно, вы получаете ошибку при запуске приложения.

Теперь, если вы посмотрите на Android.mk вы найдете

include $(CLEAR_VARS)

LOCAL_MODULE     := libiomx-gingerbread
LOCAL_SRC_FILES  := ../$(VLC_SRC_DIR)/modules/codec/omxil/iomx.cpp
LOCAL_C_INCLUDES := $(VLC_SRC_DIR)/modules/codec/omxil $(ANDROID_SYS_HEADERS_GINGERBREAD)/frameworks/base/include $(ANDROID_SYS_HEADERS_GINGERBREAD)/system/core/include
LOCAL_CFLAGS     := -Wno-psabi
LOCAL_LDLIBS     := -L$(ANDROID_LIBS) -lgcc -lstagefright -lmedia -lutils -lbinder

include $(BUILD_SHARED_LIBRARY)

Я загрузил источник vlc из здесь и после извлечения источника я смог найти "extracted_path" \vlc-2.1.4\modules\codec\omxil\iomx.СРР. Поэтому, если вы можете изменить путь включения для VLC_SRC_DIR в каталог, где источник vlc извлекается на машине WINDOWS, я думаю, вы сможете его скомпилировать. Если не использовать виртуальную машину под управлением linux для компиляции проекта.Он также требует архивных библиотек (.a) который вы не найдете в источнике vlc. Таким образом, вам придется сначала создать источник vlc, а затем включить все материалы в проект. Я думаю, что linux в виртуальном машина - ваш лучший выбор.


есть интересный проект. Неудовлетворенная ошибка ссылки обычно означает, что собственная библиотека (возможно, общий объект или что-то еще) не найдена. Вы запустили " ndk-build "из Android NDK внутри папки" jni " проекта?

вы также сказали, что добавили Java-источники из проекта Библиотеки к вам Java источники. Возможно, это не лучший способ сделать это. Рассматривайте это:

  1. под этими классами Java есть JNI-код, то есть написано на C / C++. Чего вы хотите достичь, так это того, что этот так называемый собственный код компилируется в объект библиотеки, который может быть загружен / запущен на Android. С этой целью обычно пишет Андроид.Mk файл, расположенный в папке " JNI " и запускает "ndk-build" в постройте эти источники.
  2. должен быть некоторый код оболочки / привязки в Java, который вызывает эти собственные функции C / C++. Привязка Java-вызовов к C-функции выполняются по именам пакетов и классов. Таким образом, если вы двигаетесь вокруг кода скорее всего, они уничтожат эти путы. Если вы знай, что ты делаешь, я бы посоветовал тебе уйти. такой проект библиотеки Android, как есть и просто включить проект в проект приложения через свойства -> Android от Затмение.

кроме того, вы можете проверить этот проект. https://github.com/fscz/FFmpeg-Android