我已经从源代码构建了mupdf,遵循以下步骤http://www.mupdf.com/docs/how-to-build-mupdf-for-android。我已经将它集成到我的应用程序中,而且它运行得很好。
然而,我正面临着一些问题,我希望任何人都能提供意见,我将非常感谢
问题#1
在签署APK之后,当我尝试打开任何pdf时,应用程序就会崩溃。我猜在这个过程中有一些类被省略了。我在谷歌上搜索了this,这是我找到的最接近的答案,但对我来说没有用。这就是我的前守卫规则. how文件的样子
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-verbose
-dontoptimize
-dontpreverify
-dontwarn com.squareup.picasso.**
-dontwarn com.android.volley.**
-dontwarn com.nhaarman.listviewanimations.**
-dontwarn android.support.**
-keep class com.artifex.mupdfdemo.** { *; }
-keep class android.support.v4.app.** { *; }
-keep interface android.support.v4.app.** { *; }
-keep class android.support.v7.app.** { *; }
-keep interface android.support.v7.app.** { *; }问题2
第二个问题是最后签署的APK的大小。包含库后,大小从3.2MB移动到10.7MB。我向IRC #鬼怪脚本渠道寻求建议,但解决方案没有解决我的问题,可能是我在实现过程中遗漏了一些东西。我被建议加上这个
LOCAL_CFLAGS += -DNOCJK
在Core.mk中。若要从.so中排除字体,请执行以下操作。这就是我最后一个Core.mk的样子
LOCAL_PATH := $(call my-dir)
ifdef SUPPORT_GPROOF
include $(CLEAR_VARS)
LOCAL_MODULE := gsso
LOCAL_SRC_FILES := libgs.so
include $(PREBUILT_SHARED_LIBRARY)
endif
include $(CLEAR_VARS)
MY_ROOT := ../..
ifeq ($(TARGET_ARCH),arm)
LOCAL_CFLAGS += -DARCH_ARM -DARCH_THUMB -DARCH_ARM_CAN_LOAD_UNALIGNED
ifdef NDK_PROFILER
LOCAL_CFLAGS += -pg -DNDK_PROFILER
endif
endif
ifdef SUPPORT_GPROOF
LOCAL_CFLAGS += -DSUPPORT_GPROOF
endif
LOCAL_CFLAGS += -DAA_BITS=8
ifdef MEMENTO
LOCAL_CFLAGS += -DMEMENTO -DMEMENTO_LEAKONLY
endif
ifdef SSL_BUILD
LOCAL_CFLAGS += -DHAVE_OPENSSL
LOCAL_CFLAGS += -DNOCJK
endif
LOCAL_C_INCLUDES := \
../../thirdparty/jbig2dec \
../../thirdparty/openjpeg/libopenjpeg \
../../thirdparty/jpeg \
../../thirdparty/mujs \
../../thirdparty/zlib \
../../thirdparty/freetype/include \
../../source/fitz \
../../source/pdf \
../../source/xps \
../../source/cbz \
../../source/img \
../../source/tiff \
../../scripts/freetype \
../../scripts/jpeg \
../../scripts/openjpeg \
../../generated \
../../resources \
../../include \
../..
ifdef V8_BUILD
LOCAL_C_INCLUDES += ../../thirdparty/$(V8)/include
endif
ifdef SSL_BUILD
LOCAL_C_INCLUDES += ../../thirdparty/openssl/include
endif
LOCAL_MODULE := mupdfcore
LOCAL_SRC_FILES := \
$(wildcard $(MY_ROOT)/source/fitz/*.c) \
$(wildcard $(MY_ROOT)/source/pdf/*.c) \
$(wildcard $(MY_ROOT)/source/xps/*.c) \
$(wildcard $(MY_ROOT)/source/cbz/*.c) \
$(wildcard $(MY_ROOT)/source/gprf/*.c) \
$(wildcard $(MY_ROOT)/source/html/*.c)
LOCAL_SRC_FILES += \
$(MY_ROOT)/source/pdf/js/pdf-js.c \
$(MY_ROOT)/source/pdf/js/pdf-jsimp-mu.c
ifdef SUPPORT_GPROOF
LOCAL_SHARED_LIBRARIES := gsso
endif
LOCAL_LDLIBS := -lm -llog -ljnigraphics
LOCAL_SRC_FILES := $(addprefix ../, $(LOCAL_SRC_FILES))
include $(BUILD_STATIC_LIBRARY)如有任何帮助或指导,将不胜感激。
谢谢
发布于 2016-01-09 16:08:09
因此,在我的两个问题上花了一些时间之后,我终于解决了这些问题:
问题#1
这个问题实际上不是针对mupdf的,它是我的onCreateOptionsMenu方法在PdfViewActivity.java中的一个空指针异常。我不得不补充
可调试真
在我的应用程序gradle中知道问题出在哪里。
我将我的proguard文件更改为以下内容,并且我能够解决这个问题:
-ignorewarnings
-optimizationpasses 2
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontpreverify
-verbose
-keepclasseswithmembernames class * {
native <methods>;
}
-keep public class com.artifex.mupdfdemo.* {*;}
-dontwarn com.squareup.picasso.**
-dontwarn com.android.volley.**
-dontwarn com.nhaarman.listviewanimations.**
-dontwarn android.support.**
-dontwarn android.support.v4.**
-keep class android.support.v4.** { *; }
-dontwarn android.support.v7.**
-keep class android.support.v7.** { *; }问题2
我可以通过添加
LOCAL_CFLAGS += -DNOCJK
仍在Core.mk,但就在之后
MY_ROOT := .
我希望这对可能面临同样问题的人有所帮助。
https://stackoverflow.com/questions/34691599
复制相似问题