编译Android源代码时构建错误(JNI)

时间:2014-06-04 18:10:28

标签: android c++ makefile

我在C中添加了一些新功能,当我尝试构建它时,它给了我以下错误:

  

libnativehelper/include/nativehelper/JNIHelp.h:116: error: undefined reference to 'jniRegisterNativeMethods' error.

我已将jnihelp.h包含在我的C档中。

这是与makefile相关的问题还是我遗漏了什么?

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE    := newfile
LOCAL_SRC_FILES := newfile.cpp

include $(BUILD_SHARED_LIBRARY)

编辑6/5/14:我终于解决了它。我以为我会把所有信息放在这里以防其他人需要它。

  1. 必须修改清单以加载我在下面的评论中提到的某些库。这是为了解决undefined reference to 'jniRegisterNativeMethods'错误
  2. 具有本机实现的cpp文件必须位于extern "C"块内。这导致了UnsatisfiedLinkError。

2 个答案:

答案 0 :(得分:0)

您需要转到父文件夹,其中包含您的构建和dalvik二进制文件。然后从那里你需要输入:

build yourproj

(将您的项目替换为包含代码的文件夹)

答案 1 :(得分:0)

我发现问题确实存在于makefile中 我四处寻找其他JNI实现并将其添加到makefile

LOCAL_SHARED_LIBRARIES := \
        libandroid_runtime \
        libandroidfw \
        libnativehelper \
        libRS \
        libcutils \
        libskia \
        libutils

我不知道那里有几个库是什么,但我把它们留在那里并编译。 现在我有一个不同的问题。加载编译库时,我收到'Unsatified Link错误'。有没有人对此有所了解?

编辑:我的编译库正在传输到手机。我手动将它们推到手机上的/ system / lib目录中,但我仍然得到'UnsatisfiedLinkError'。