1

我通过命令行为 android 构建本机代码,cd <project> ndk-build但是当我运行它时,它nothing can be done for 'all'使用 HelloJni 示例中的代码输出我,如果我导入示例并编译它,一切正常。

活动

public class MainActivity extends Activity 
{
    @Override
    protected void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);

        Log.i("DEBUG", stringFromJNI());
        setContentView(new MySurfaceView(this));
    }

    public native String stringFromJNI();

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

nativemain.c

#include <string.h>
#include <jni.h>

jstring Java_com_ndktest2_MainActivity_stringFromJNI( JNIEnv* env,
                                                  jobject thiz )
{
    return (*env)->NewStringUTF(env, "Hello from JNI !");
}

安卓.mk

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE    := nativemain
LOCAL_SRC_FILES := nativemain.c

include $(BUILD_SHARED_LIBRARY)

应用程序.mk

APP_ABI := armeabi

非常感谢你们和姑娘们的帮助!!

更新 1:我刷新了项目并再次运行 ndk-build 并开始工作,但我在运行时收到了 UnsatisfiedLinkError 异常。我使用 BlueStack 作为我的模拟器。

在此处输入图像描述

4

2 回答 2

2

尝试放一个

JNIEXPORT

在你的面前

Java_com_ndktest2_MainActivity_stringFromJNI

宣言。

此外,以下 SO 问题可能与您的问题有关:

Android-NDK “java.lang.UnsatisfiedLinkError”</a>

java.lang.UnsatisfiedLinkError

希望这可以帮助

于 2013-05-27T21:04:03.777 回答
1

尝试删除“Application.mk”,因为单 ndk 模块应用程序不需要它(而 hello-jni 没有)

于 2013-05-27T21:42:47.723 回答