尝试为PDFTron Android加载图书馆时出错

尝试与PDFTron集成时,我遇到了一个奇怪的错误,即PDFNet Android SDK:

UnsatisfiedLinkError:无法加载PDFNetC:findLibrary返回null。 预计armv7a,找到cpu_info:abi:armeabi-v7a

我已经检查了这个链接 。

很可能PDFNet Android SDK提供的本机库未正确包含在我的项目中。 在lib文件夹里面我下载了包,有本机库和java库都需要包含在我的项目中。

在主文件夹中创建一个名为jniLibs的文件夹,并将所有.so(具有相应的文件夹结构)放在jniLibs文件夹中,即:

在此处输入图像描述

这将允许Android Studio自动识别本机库路径。

我还指定了产品风味来过滤哪些.so使用,例如:

productFlavors { armv7a { ndk { abiFilters "armeabi-v7a" } } arm { ndk { abiFilters "armeabi" } } x86 { ndk { abiFilters "x86" } } armv8 { ndk { abiFilters "arm64-v8a" } } x86_64 { ndk { abiFilters "x86_64" } } fat { ndk { abiFilters "armeabi-v7a", "armeabi", "arm64-v8a", "x86", "x86_64" } } } 

然后我在项目的build.gradle文件中指定了jniLibs目录,即:

 sourceSets { main { manifest.srcFile 'AndroidManifest.xml' java.srcDirs = ['src'] resources.srcDirs = ['src'] res.srcDirs = ['res'] jniLibs.srcDirs = ['libs'] svg.srcDir 'src/main/svg' } } 

在Android Studio中导入PDFTron库项目。 在您的应用程序中使用该库项目。为此,请在应用程序的build.gradle使用compile project(':libraries:PDFViewCtrlTools')

现在将libPDFNetC.so文件复制到应用程序中的“jni / libs / armeabi”文件夹中。

在你的application.mk写这个。

 APP_ABI := armeabi-v7a APP_CPPFLAGS += -std=c++11 -exception APP_STL := gnustl_shared APP_PLATFORM=android-19 APP_OPTIM := debug NDK_TOOLCHAIN_VERSION := 4.8 

在你的Android.mk文件中添加这个

 include $(CLEAR_VARS) LOCAL_MODULE := libPDFNetC # this libs path is relative to my jni files, so, src/main/jni/libs/libPrecompiledLib.a LOCAL_SRC_FILES := libs/armeabi/libPDFNetC.so include $(PREBUILT_SHARED_LIBRARY) 

编辑:

 PDFDoc doc = PDFDoc(InputStream var1) 

可以通过使用此方法,您可以从URL打开PDF。

码:

 PDFViewCtrl mPDFViewCtrl = (PDFViewCtrl) view.findViewById(R.id.pdfViewer); PDFDoc doc = new PDFDoc(filePath); mPDFViewCtrl.setDoc(doc); 

XML

  

如果您使用的是标准的jniLib结构(即主屏幕中的jniLibs,如第一个屏幕截图所示),则无需再在sourceSets中指定它。 jniLibs.srcDirs = ['libs']与标准结构(jniLibs)冲突。

请参阅https://groups.google.com/forum/?fromgroups#!topicsearchin/pdfnet-sdk/android $ 20AND$20author$3Asgong@pdftron.com/pdfnet-sdk/0t_3-pN5jG4