Android ndk 开发步骤总结

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/dnfchan/article/details/7031115

配置完Android NDK工具后

1.新建一个Android项目,java文件下包含native方法

package com.dnfchan.ndktest;

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

public class NDKTest2Activity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //setContentView(R.layout.main);
        TextView view=new TextView(this);
        int a=add(5,9);
        view.setText(""+a);
        setContentView(view);
    }
    public native int add(int x,int y);  //本地方法1
    public native int del(); //本地方法2,未调用
    static{
    	System.loadLibrary("test-jni");//加载库,库名省略的前缀lib和后缀.so,实际库名是libtest-jni.so
    }
}

2.在工程目录下新建一个jni的目录,并在工程目录运行头文件生成命令javah -classpath bin -d jni com.dnfchan.ndktest.NDKTest2Activity.运行完后将在jni文件夹生成.h头文件

/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_dnfchan_ndktest_NDKTest2Activity */

#ifndef _Included_com_dnfchan_ndktest_NDKTest2Activity
#define _Included_com_dnfchan_ndktest_NDKTest2Activity
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     com_dnfchan_ndktest_NDKTest2Activity
 * Method:    add
 * Signature: (II)I
 */
JNIEXPORT jint JNICALL Java_com_dnfchan_ndktest_NDKTest2Activity_add
  (JNIEnv *, jobject, jint, jint);

/*
 * Class:     com_dnfchan_ndktest_NDKTest2Activity
 * Method:    del
 * Signature: ()I
 */
JNIEXPORT jint JNICALL Java_com_dnfchan_ndktest_NDKTest2Activity_del
  (JNIEnv *, jobject);

#ifdef __cplusplus
}
#endif
#endif

3.在jni文件夹下新建test-jni.c文件,并根据头文件写里面的方法。可以将.h的方法copy下来,并添上参数名即可

#include <jni.h> 
//对应java文件的add()方法
JNIEXPORT jint JNICALL Java_com_dnfchan_ndktest_NDKTest2Activity_add 
    (JNIEnv* env, jobject thiz, jint x, jint y){
  	return x+y;
  }  

4.为了将以上文件编译成库文件,还必须在jni目录下新建Android.mk文件

LOCAL_PATH:=$(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE:=test-jni
LOCAL_SRC_FILES:=test-jni.c

include $(BUILD_SHARED_LIBRARY)

第一行表示源文件路径,my-dir表示返回当前路径

第二行是指定让GNU MAKEFILE为你清除许多LOCAL_XXX变量

第三行编译后的模块名

第四行编译的源码文件

第五行编译成共享库

5.利用ndk-build生成库,在工程根目录下运行ndk-build,出现下面信息是表示生成成功。

Compile thumb  : test-jni <= test-jni.c
SharedLibrary  : libtest-jni.so
Install        : libtest-jni.so => libs/armeabi/libtest-jni.so

6.库生成好后,回到eclipse刷新工程,运行即可。
展开阅读全文

没有更多推荐了,返回首页