Android:java.lang.UnsatisfiedLinkError:无法找到" libtiff.so"

时间:2015-03-12 06:54:35

标签: android tiff libtiff

我想打开 Tiff 文件,但原生图片查看器无法打开tiff文件。所以我从以下路径下载了项目。 TiffonAndroid

我从该项目获取了所有src,res文件并将它们添加到我的项目中。在运行时我收到此错误

java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.tiffviewer-2/base.apk"], 
nativeLibraryDirectories=[/vendor/lib, /system/lib]]] couldn't find "libtiff.so".

libtiff.so是基于c ++的库项目。如何解决上述问题我们可以将基于c ++的项目添加到我们的一般android项目中吗?

2 个答案:

答案 0 :(得分:0)

当您的APK未包含其中的本机库时,就会发生这种情况。是的,您可以为当前的Android项目添加本机支持。如果您使用Eclipse作为IDE,请右键单击您的项目Android Tool - > Add Native Support...。有关详细信息,请查看official document

答案 1 :(得分:0)

如果使用JNI并复制.so文件,则必须将包含本机方法的类放在正确的包中(在.so中定义),并使用在.so中定义的相同名称。

>>> sum([(1,), (2,)])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'int' and 'tuple'

和这个.h文件

package site.zhuzijian.jnitest;
public class NdkJniUtils {
public static native String getLanguageString(String name);

public static native String[] cryptRequest(String uuid, String time, String[] contents);

static {
    System.loadLibrary("jnitest");
}}

您可能看不到此.h文件,因为它是在.so文件中编译的。 如您所见,.h文件中的方法包含包名称。它必须与NdkJniUtils的包相匹配