使用libwebp和NDK在Android 2.x上显示WebP图像

时间:2013-09-01 06:40:22

标签: java android android-ndk java-native-interface webp

我想在较旧的Android平台上显示webp图像。我尝试了这些步骤:

  1. 下载最新的Android SDK和NDK包。
  2. 将NDK路径添加到系统环境path并在Eclipse首选项中设置它。
  3. 在Eclipse中创建新的Android项目
  4. 右键单击项目文件夹Android Tools - > Add native support,确认默认名称。
  5. 下载libwebp-0.3.1.tar.gz,摘录到项目/jni
  6. static {}webpToBitmap方法添加到主Activity,代码来自WebP for Android
  7. /jni/swig/libwebp.jar(随libwebp源附带)添加到java构建路径和import com.google.webp.libwebp;
  8. 尝试使用webpToBitmap时出现这些错误:(删除不必要的时间/包名称)

    Could not find method com.google.webp.libwebp.WebPDecodeARGB, referenced from method ....MainActivity.webpToBitmap
    
    VFY: unable to resolve static method 4601: Lcom/google/webp/libwebp;.WebPDecodeARGB
    
    E/AndroidRuntime(12614): java.lang.UnsatisfiedLinkError: Couldn't load webp from loader dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/....apk"],nativeLibraryDirectories=[/data/app-lib/..., /vendor/lib, /system/lib]]]: findLibrary returned null
    

    我还尝试将swig/libwebp_java_wrap.c \(随附libwebp源码)添加到Android.mk LOCAL_SRC_FILESinclude $(BUILD_STATIC_LIBRARY) - > include $(BUILD_SHARED_LIBRARY),同样的错误。

    或者,有没有我可以轻松添加到项目中的预建文件?

1 个答案:

答案 0 :(得分:0)

最后通过获取0.3.1版本中包含的jar的更新版本来解决此错误。该软件包中包含的版本已损坏,您可以使用0.3.0版本的旧版本,也可以使用James在此链接中编译的新版本:

https://groups.google.com/a/webmproject.org/forum/#!topic/webp-discuss/4nNFdaE2GXI

总结:

这使用0.3.1源树的略微修改版本。 libwebp.jar文件不适用于该树,我们不得不对Android.mk文件进行一些小的修改。对0.3.1版本中的文件执行以下更改并获取新的libwebp.jar。

添加到Android.mk:

swig/libwebp_java_wrap.c \

-include $(BUILD_STATIC_LIBRARY)
+include $(BUILD_SHARED_LIBRARY)

LOCAL_ARM_MODE := arm

Application.mk应包含:

APP_ABI := armeabi armeabi-v7a
APP_OPTIM := release