Android Mupdf适用于MIPS和x86架构

4
我目前在我的android应用程序中使用MuPDF,但是当我根据ReadMe.txt构建它时,它只会为armeabi和armeabi-v7a生成.so文件,而不是x86和MIPS。 当我在arm架构设备(Samsung Galaxy Tab 7)上运行应用程序时,它看起来很好。 但是在mips架构下不行。 我的问题是如何生成x86和MIPS共享对象文件?如果有其他解决方案,我将不胜感激...
PS:我使用的是android ndk r8d,我尝试更改为android-ndk-r6b但我遇到了同样的问题。
1个回答

7

如果您查看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仓库。 编辑:修复已经提交。


1
是的,我获取了最新的源代码,但是出现了错误:C:/android-ndk-r8d/toolchains/x86-4.6/prebuilt/windows/bin/../lib/gcc/i686-linux-android/4.6/../../../../i686-linux-android/bin/ld.exe: ./obj/local/x86/objs/mupdf/mupdf.o: 在函数 Java_com_artifex_mupdfdemo_MuPDFCore_openFile:jni/mupdf.c:296 中:错误:未定义对 'sigsetjmp' 的引用。我该如何解决? - abhie
你遇到了同样的问题,你找到解决方法了吗? - craigrs84
sigsetjmp的缺失是该特定NDK版本中的一个错误。使用r8e,我想你会没问题的。 - Robin Watts

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接