MainActivity.java
package com.xiaofei.app.ndk; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.EditText; import android.widget.TextView; public class MainActivity extends Activity { private EditText editText_num1,editText_num2; private TextView textView_result; //加载动态链接库 static { System.loadLibrary("hello"); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); editText_num1= (EditText) findViewById(R.id.editText); editText_num2= (EditText) findViewById(R.id.editText1); textView_result= (TextView) findViewById(R.id.textView); } //声明一个本地方法,该方法由C。c++实现 public native int add(int num1, int num2); public void addClick(View view) { String num1=editText_num1.getText().toString(); String num2=editText_num2.getText().toString(); //调用本地方法 int result= add(Integer.parseInt(num1),Integer.parseInt(num2)); textView_result.setText(textView_result.toString()+result); } }
activity_main.xml
Android.mk
LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE:= hello LOCAL_SRC_FILES := hello.c include $(BUILD_SHARED_LIBRARY)
com_xiaofei_app_ndk_MainActivity.h
/* DO NOT EDIT THIS FILE - it is machine generated */ #include/* Header for class com_xiaofei_app_ndk_MainActivity */ #ifndef _Included_com_xiaofei_app_ndk_MainActivity #define _Included_com_xiaofei_app_ndk_MainActivity #ifdef __cplusplus extern "C" { #endif /* * Class: com_xiaofei_app_ndk_MainActivity * Method: add * Signature: (II)I */ JNIEXPORT jint JNICALL Java_com_xiaofei_app_ndk_MainActivity_add (JNIEnv *, jobject, jint, jint); #ifdef __cplusplus } #endif #endif
hello.c
#include "com_xiaofei_app_ndk_MainActivity.h" JNIEXPORT jint JNICALL Java_com_xiaofei_app_ndk_MainActivity_add (JNIEnv * env, jobject obj, jint num1, jint num2) { return num1+num2; }