【问题标题】:android native method not found找不到android本机方法
【发布时间】:2013-12-02 23:03:29
【问题描述】:

我得到 No implementation found for native Lcom/vb/HAR/VBHARActivity;.nativeMain:()V 在 Windows 7 上的错误。我已经编译并运行了 sanangeles 和 hello-jni 示例,在模拟器和设备上没有问题。这是规格 窗口 7、ndk-9rb、adt 22(带有 eclipse)、java 1.7、mingw、没有 cygwin、ndk-build 和 android 项目构建没有错误。 android 项目的最小 sdk 为 10,目标为 19。 libvbhar.so 在 libs 目录中为 29k,但在 obj 目录中大得多。验证共享库已复制到模拟器。

项目的路径是 src\com\vb\HAR\VBHARActivity.java

public class VBHARActivity extends Activity {
    static {System.loadLibrary("vbhar");}
    public static native void nativeMain();
    private Button btn; 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.vbhar);
        this.btn = (Button)this.findViewById(R.id.button1);
        Log.i("", "vb_har before button");      
        this.btn.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                Log.i("", "vb_har calling native c code");
                nativeMain();
            }
          });

    }
}

c码

#include <jni.h>
#include "HARCVB.h"
void Java_com_vb_vbHarC_VBHARActivity_nativeMain(JNIEnv*  env)
{
    maincall();
}

android.mk

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_CFLAGS := -DANDROID_NDK --std=c99
LOCAL_MODULE    := vbhar
LOCAL_SRC_FILES := HARCVB.cpp \
 vbMain.c \
 vbHarApp.c \
 vbHarUtil.c \
 vbSensorData.c \
 vbSupport.c \
include $(BUILD_SHARED_LIBRARY)

感谢您的帮助 亚历克斯

【问题讨论】:

    标签: android android-ndk


    【解决方案1】:

    它正在寻找Java_com_vb_HAR_VBHARActivity_nativeMain,但您提供的是Java_com_vb_vbHarC_VBHARActivity_nativeMain。重命名您的方法以匹配。

    您还应该确保它是用extern "C" 声明的。

    【讨论】:

    • com/vb/HAR/ 与包名不同。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多