尝试为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