编译Android源代码(JNI)时出现错误

Build error while compiling Android source (JNI)

本文关键字:错误 JNI Android 源代码 编译      更新时间:2023-10-16

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

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

我已经在我的C文件中包含了jnihelp.h

这是一个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。

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

build yourproj

(将yourproj替换为存放代码的文件夹)

我发现问题确实在makefile中我查找了其他JNI实现,并将其添加到makefile

LOCAL_SHARED_LIBRARIES := 
        libandroid_runtime 
        libandroidfw 
        libnativehelper 
        libRS 
        libcutils 
        libskia 
        libutils

我不知道里面的一些库是用来做什么的,但我把它们留在那里,它被编译了。现在我有一个不同的问题。当我加载编译库时,我得到"不满意的链接错误"。有人对此有什么想法吗?

编辑:我编译的库正在被转移到电话。我手动将它们推到电话上的/system/lib目录,但我仍然得到'UnsatisfiedLinkError'。