Android NDK开发步骤(r9)

1. 创建Android Project

File -> New -> Android Application Project

2. 定义调用C函数的java类,并生成(Eclipse中是自动编译的)。

Java代码:

package lw.example.hellondk;

public class HelloJni {
    public native String getStringFromJni();
    
    public static native String getStringFromJniStatic();
    
    static {
        System.loadLibrary("HelloNdk");
    }
}

3. 生成h文件

在Project新建gen_h.bat文件,输入内容如下:

javah -classpath binclasses -d jni lw.example.hellondk.HelloJni
@pause

运行该bat文件后,会在jni目录生成lw_example_hellondk_HelloJni.h文件。

4. 添加Native支持

右击Project -> Android Tools -> Add Native Support...

5. 附加Android Native C的h文件

右击project -> Properties,设置如下:

6. 在cpp文件中实现函数。

#include "lw_example_hellondk_HelloJni.h"

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

jstring
Java_lw_example_hellondk_HelloJni_getStringFromJniStatic(JNIEnv* env, jclass thiz)
{
    return env->NewStringUTF("Hello JNI!(static)");
}

7. 编译so文件

点击工具栏,编译成功后,会生成so文件。

8. 在Activity中添加测试代码。

package lw.example.hellondk;

import android.app.Activity;
import android.widget.TextView;
import android.os.Bundle;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        /* Create a TextView and set its content.
         * the text is retrieved by calling a native
         * function.
         */
        TextView  tv = new TextView(this);
        tv.setText( HelloJni.getStringFromJniStatic() );
        setContentView(tv);
    }

}

9. 运行查看结果

原文地址:https://www.cnblogs.com/cpp-graphics/p/3530502.html