【Android】第一个JNI测试程序
1、先去官网上下载NDK,最新的是android-ndk-r8d-windows:
http://developer.android.com/tools/sdk/ndk/index.html#Downloads
2、将下载后的tar包解压至任意文件目录下,例如D:\android-ndk-r8d
3、将此路径增加至系统环境变量中:
4、貌似NDK从v6还是几开始就继承了linux部分功能了,所以这里不再安装类似cywin
5、新建一个Android工程
6、在工程下,新建文件夹jni,在该目录下新建Android.mk、first-jni.c文件,具体代码如下:
first-jni.c
#include<String.h> #include<jni.h> jint Java_com_amanda_firstjni_MainActivity_addint(JNIEnv* env,jobject thiz, jint a, jint b){ return a+b; } jint Java_com_amanda_firstjni_MainActivity_plusint(JNIEnv* env,jobject thiz, jint a, jint b){ return a-b; }
Android.mk
LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := first-jni LOCAL_SRC_FILES := first-jni.c include $(BUILD_SHARED_LIBRARY)
7、修改Android工程中的代码
activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity" > <TextView android:id="@+id/text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:text="@string/hello_world" /> </RelativeLayout>
MainActivity.java
package com.amanda.firstjni; import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.widget.TextView; public class MainActivity extends Activity { private TextView mText; //load .so static{ System.loadLibrary("first-jni"); } public native int addint(int a,int b); public native int plusint(int a, int b); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mText = (TextView)this.findViewById(R.id.text); int aa = addint(5,4); int bb = plusint(5,4); mText.setText("5+4="+aa+",5-4="+bb); } }
8、接着打开cmd,依次输入下述命令:
android update –p . –s
ndk-build
9、接着将Android clean,重新编译,运行后,即可看到设备上显示如下:
哈哈,我的第一个JNI测试程序完成了...
作者:风倾清凌
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.