尝试与 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'
}
}