我想打开 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项目中吗?
答案 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的包相匹配