在Windows上使用LibVLC for android开发

我一直在努力获得运行Android-LibVLC的演示应用程序 。

我只能findLinux的文档 ,不能让我的设备上运行的应用程序(虽然它编译)。

当我启动应用程序时,它会logging:

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 

我已经编译了与org.videolan.libvlc目录类的项目APK作为源根的一部分,并与同一模块中的jni目录和失败,我还包括整个VLC模块作为一个单独的库模块,并作出它是一个依赖,这也失败了。

有没有人有一个经validation的方法来configuration/build立与LibVLC的Android项目,从Windows? 或指示/文件的链接? (我还没有find任何东西)。

目标是将我的android MediaPlayer依赖类replace为支持更多文件types/编解码器的库/实现。

Solutions Collecting From Web of "在Windows上使用LibVLC for android开发"

当在Windows中build立,你会得到警告说: "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"所以,即使你得到构build输出,它将不具备所需的文件。 因此,您在运行应用程序时遇到错误。

现在,如果你看看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的源码,解压源文件后,我能find“extracted_pa​​th”\ vlc-2.1.4 \ modules \ codec \ omxil \ iomx.cpp。 所以,如果你可以将VLC_SRC_DIR的包含path改为在WINDOWS机器上提取vlc源代码的目录,我想你应该可以编译它。 如果不使用运行linux的虚拟机来编译项目。它还需要在vlc的源代码中找不到的存档库(.a)。 所以你必须首先构buildvlc的源码,然后在项目中包含所有的东西。 我认为虚拟机中的linux是你最好的select。

那里有趣的项目。 不满意的链接错误通常意味着没有find本地库(可能是共享对象或其他东西)。 您是否在项目的“jni”文件夹中运行了Android NDK的“ndk-build”?

您还说过,您将来自库项目的Java源添加到Java源代码中。 这可能不是正确的做法。 考虑一下:

  1. 在这些Java类下面有JNI-Code,用C / C ++编写。 你想实现的是,这个所谓的本地代码被编译成一个可以在Android上加载/运行的库对象。 为此,通常会写一个位于“JNI”文件夹中的Android.mk文件,并运行“ndk-build”来构build这些源文件。
  2. Java中需要有一些Wrapper / Binding Code,它们调用那些本地的C / C ++函数。 Java调用与C函数的绑定是通过包名和类名完成的。 因此,如果你移动代码,你很可能会破坏这些绑定。 除非你知道,你在做什么,所以我build议你离开这样一个Android库项目,并且通过属性 – > Eclipse中的Android将项目包括到你的应用程序项目中。

另外,你可能想检查这个项目。 https://github.com/fscz/FFmpeg-Android