我目前在我的 android 应用程序中使用 MuPDF
,当我从源代码(基于 ReadMe.txt)构建它时,它只会为 armeabi 生成
和 .so
文件armeabi-v7a
但不是 x86
和 MIPS
,当我在 arm arch 设备(Samsung Galaxy Tab 7)上运行应用程序时, 看起来不错。但不是在 mips
arch 中。我的问题是如何生成 x86
和 MIPS
共享对象文件?如果有任何其他解决方案,我将不胜感激...
PS:我正在使用 android ndk r8d
,我尝试使用 android-ndk-r6b
进行更改,但我遇到了同样的问题。
最佳答案
如果您查看 mupdf 源代码中的 android/jni/Application.mk,您将看到一行:
APP_ABI = armeabi armeabi-v7a
你可以这样做:
APP_ABI = armeabi armeabi-v7a x86 mips
甚至:
APP_ABI = all
启用其他架构。
目前这会导致问题,因为 android/jni/Core.mk 和 android/jni/Core2.mk 文件定义了 -DARCH_ARM 和 -DARCH_THUMB(在编写它们时,Android 仅支持 ARM 处理器)。这需要一些预处理器的魔法:
ifeq ($(TARGET_ARCH),arm)
LOCAL_CFLAGS += -DARCH_ARM -DARCH_THUMB -DARCH_ARM_CAN_LOAD_UNALIGNED
ifdef NDK_PROFILER
LOCAL_CFLAGS += -pg -DNDK_PROFILER -O2
endif
endif
LOCAL_CFLAGS += -DAA_BITS=8
我会得到这些修复 - 在接下来的几天里观看我们的 git repo。 编辑:修复现在已提交。
关于用于 MIPS 和 x86 arch 的 android mupdf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15103022/