Разработка с 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 источники. Возможно, это не лучший способ сделать это. Рассматривайте это:
- под этими классами Java есть JNI-код, то есть написано на C / C++. Чего вы хотите достичь, так это того, что этот так называемый собственный код компилируется в объект библиотеки, который может быть загружен / запущен на Android. С этой целью обычно пишет Андроид.Mk файл, расположенный в папке " JNI " и запускает "ndk-build" в постройте эти источники.
- должен быть некоторый код оболочки / привязки в Java, который вызывает эти собственные функции C / C++. Привязка Java-вызовов к C-функции выполняются по именам пакетов и классов. Таким образом, если вы двигаетесь вокруг кода скорее всего, они уничтожат эти путы. Если вы знай, что ты делаешь, я бы посоветовал тебе уйти. такой проект библиотеки Android, как есть и просто включить проект в проект приложения через свойства -> Android от Затмение.
кроме того, вы можете проверить этот проект. https://github.com/fscz/FFmpeg-Android