zoukankan      html  css  js  c++  java
  • 【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、将此路径增加至系统环境变量中:

    05r2e02i.nl4

    qmxxns1a.f2o

    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

    2xwhh3uk.3ir

    9、接着将Android clean,重新编译,运行后,即可看到设备上显示如下:

    image

    哈哈,我的第一个JNI测试程序完成了...

  • 相关阅读:
    alert()、confirm()和prompt()的区别与用法
    简单的算法
    图片消失隐藏轮播
    HTML head 头标签
    关于for of循环的用法和使用
    requestanimationframe用法一二
    关于css中after和before伪类的用法
    HTML5使用local storage存储的数据是如何保存在本地的
    js中  关于bom的知识
    关于一些假值的问题
  • 原文地址:https://www.cnblogs.com/Amandaliu/p/2971257.html
Copyright © 2011-2022 走看看