【发布时间】:2016-10-22 17:06:30
【问题描述】:
我正在尝试将本机代码中的一些信息记录到 logcat 中,但我似乎无法使其正常工作。我已经搜索了整个 stackoverflow(和其他网站)。
在我的本机代码中,我有 #include <android/log.h>。它完全编译没有错误。如果我根本不使用日志记录,我的本机代码会在 android 中运行。
我的 Android.mk:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := mylib-prebuilt
LOCAL_SRC_FILES := $(TARGET_ARCH_ABI)/mylib.so
LOCAL_EXPORT_C_INCLUDES += $(LOCAL_PATH)/$(TARGET_ARCH_ABI)
LOCAL_LDLIBS := -llog
include $(BUILD_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := gmp-prebuilt
LOCAL_SRC_FILES := $(TARGET_ARCH_ABI)/libgmp.so
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include
include $(BUILD_SHARED_LIBRARY)
我得到的错误:
java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol "__android_log_write" referenced by <package>
最后,我使用的日志是这样的:
__android_log_write(ANDROID_LOG_ERROR, "Native tag", "Native text");
有人知道怎么回事吗?
【问题讨论】:
-
您添加了
#define吗?喜欢#define LOGE(...) __android_log_print(ANDROID_LOG_ERROR,LOG_TAG,__VA_ARGS__)? -
这不会解决任何问题,因为这是一个预处理器宏,实际上会编译成常规的
__android_log_write。然而,由于如此绝望,我尝试了它,但没有任何好的结果。
标签: java android c java-native-interface