首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Android中使用mupdf库

如何在Android中使用mupdf库
EN

Stack Overflow用户
提问于 2016-01-09 09:03:24
回答 1查看 780关注 0票数 0

我已经从源代码构建了mupdf,遵循以下步骤http://www.mupdf.com/docs/how-to-build-mupdf-for-android。我已经将它集成到我的应用程序中,而且它运行得很好。

然而,我正面临着一些问题,我希望任何人都能提供意见,我将非常感谢

问题#1

在签署APK之后,当我尝试打开任何pdf时,应用程序就会崩溃。我猜在这个过程中有一些类被省略了。我在谷歌上搜索了this,这是我找到的最接近的答案,但对我来说没有用。这就是我的前守卫规则. how文件的样子

代码语言:javascript
复制
-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的样子

代码语言:javascript
复制
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)

如有任何帮助或指导,将不胜感激。

谢谢

EN

回答 1

Stack Overflow用户

发布于 2016-01-09 16:08:09

因此,在我的两个问题上花了一些时间之后,我终于解决了这些问题:

问题#1

这个问题实际上不是针对mupdf的,它是我的onCreateOptionsMenu方法在PdfViewActivity.java中的一个空指针异常。我不得不补充

可调试真

在我的应用程序gradle中知道问题出在哪里。

我将我的proguard文件更改为以下内容,并且我能够解决这个问题:

代码语言:javascript
复制
-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 := .

我希望这对可能面临同样问题的人有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34691599

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档