Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/212.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 未找到NDK本机类错误_Java_Android_Eclipse_Android Ndk_Unsatisfiedlinkerror - Fatal编程技术网

Java 未找到NDK本机类错误

Java 未找到NDK本机类错误,java,android,eclipse,android-ndk,unsatisfiedlinkerror,Java,Android,Eclipse,Android Ndk,Unsatisfiedlinkerror,我一直在试图弄清楚为什么会出现一个错误,说明找不到该方法,但似乎一切正常(至少是导致该错误的原因) 我的Android类: package com.liamw.root.androididchanger; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; pu

我一直在试图弄清楚为什么会出现一个错误,说明找不到该方法,但似乎一切正常(至少是导致该错误的原因)

我的Android类:

package com.liamw.root.androididchanger;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class DebugUserActivity extends Activity {

    Button button;
    TextView logcat;

    static {
        System.loadLibrary("sqlite");
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.debug);

        button = (Button) findViewById(R.id.button1);
        logcat = (TextView) findViewById(R.id.textView1);

        button.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View arg0) {
                runSQL("example.sqlite3", "SELECT Value FROM MyTable");
            }
        });

        /*try {
            Runtime.getRuntime().exec("logcat -c").waitFor();
            Process process = Runtime.getRuntime().exec("logcat -v long *:*");
            BufferedReader reader = new BufferedReader(new InputStreamReader(
                    process.getInputStream()));
            while (true) {
                String nextLine = reader.readLine();

                logcat.setText(logcat.getText().toString() + "\n" + nextLine);
            }
        } catch (InterruptedException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }*/

    }

    public native void runSQL(String path, String query);

}
本机文件(idchanger.c):

对我来说,一切似乎都井然有序,但错在哪里呢

编辑:

Android.mk:

LOCAL_PATH := $(call my-dir)

$(LOCAL_PATH)/../sqlite3.c:
    $(MAKE) -C $(@:%/sqlite3.c=%) sqlite3.c

include $(CLEAR_VARS)
LOCAL_LDLIBS := -llog -landroid
LOCAL_MODULE    := sqlite
LOCAL_SRC_FILES := ../sqlite3.c idchanger.c
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)
LOCAL_CFLAGS    := -DSQLITE_THREADSAFE=1

include $(BUILD_STATIC_LIBRARY)
编辑2:

啊哈!这将添加到日志中:

09-09 19:59:28.605: D/dalvikvm(9696): No JNI_OnLoad found in /system/lib/libsqlite.so 0x40e46360, skipping init
编辑3:我刚刚注意到,在我制作的一个测试应用程序中,logcat中有一些行表示它试图加载库,然后是ndk库文件


我在这里看不到这些行…

我认为问题在于libsqlite.so已经存在于system/lib中,它的优先级高于您在项目lib文件夹中构建的libsqlite.so。因此,当您调用
System.loadLibrary(“sqlite”),将加载系统/lib/libsqlite.so。您可以重命名您的库,如“mysqlite”,然后再试一次。

add

android.useDeprecatedNdk=true

gradle.properties
中继续使用当前的NDK集成。

查找logcat中加载本机库成功(或失败)的部分。还要确保您的本机库是最新的,而不是昨天的旧版本,这很容易发生。@ChrisStratton我删除了整个obj文件夹(或包含该版本的任何文件夹)。在此之前似乎没有消息,但我明天会仔细查看。如果没有消息,则它甚至不会尝试加载您的库。假设您直接从代码中复制粘贴,DebugUserActivity类的第32行是否有问题?我的意思是,关闭parantesis和分号.并不是导致异常的原因,但似乎您已经将路径和查询参数从Java反转到了C
09-09 19:59:28.605: D/dalvikvm(9696): No JNI_OnLoad found in /system/lib/libsqlite.so 0x40e46360, skipping init
android.useDeprecatedNdk=true