如何在Android 2.1中链接至Jnigraphics?

问题描述

| 我有一个使用jnigraphics的应用程序,但我需要它可用于Android 2.1(因为〜25%的用户仍然拥有该功能。)我正在尝试将其捆绑在一起,但是在链接方面遇到困难。 我的Android.mk如下:
LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := jnigraphics-prebuilt
LOCAL_SRC_FILES := lib/libjnigraphics.so
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include

include $(PREBUILT_SHARED_LIBRARY)

include $(CLEAR_VARS)

LOCAL_MODULE    := yyy
LOCAL_SRC_FILES := yyy.c
LOCAL_SHARED_LIBRARY := jnigraphics-prebuilt
LOCAL_C_INCLUDES := $(LOCAL_PATH)/include
LOCAL_LDLIBS    += -lm -llog
#LOCAL_CFLAGS    += -O3

include $(BUILD_SHARED_LIBRARY)
现在,它可以识别
#include <android/bitmap.h>
(在添加C_INCLUDES行之前出现错误),但似乎仍未链接库,因为在构建时,我获得了对(显然)成功包含的标头中符号的未定义引用文件
Prebuilt       : libjnigraphics.so <= jni/lib/
Install        : libjnigraphics.so => libs/armeabi/libjnigraphics.so
Compile thumb  : yyy <= yyy.c
SharedLibrary  : libyyy.so
/home/xxx/w/zzz/obj/local/armeabI/Objs/yyy/yyy.o: In function `Java_yyy_yyy_yyy_MainActivity_yyy\':
/home/xxx/w/zzz/jni/yyy.c:143: undefined reference to `AndroidBitmap_getInfo\'
更新: 解决方案是在LDLIBS -L中提供包含该库的目录,并在LDLIBS -l中提供该库的名称,例如:
LOCAL_LDLIBS += -L$(PROJECT_PATH)/libs/$(TARGET_ARCH_ABI)/ -ljnigraphics -lm -llog
您还必须在使用它的类中加载新嵌入的库,例如:
public native static byte[] doYYY(Bitmap bitmap); static {
    System.loadLibrary(\"jnigraphics\");
    System.loadLibrary(\"yyy\");
}
非常感谢Richard Puckett提供此解决方案。 更新2: 供应商(以及像CY这样的固件模块)可能会干扰此API,因此不应依赖它。     

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)