当前位置: 首页 > news >正文

【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测试程序完成了...

相关文章:

  • SHELL取IP 参考
  • C语言extern的用法
  • 只不过是R.java文件的特性-----出错信息:R.java was modified manually! Reverting to generated version!...
  • 关于无法标识/锁定数据库文件
  • [转]步步为营 C# 技术漫谈 二、ASP.NET 页生命周期
  • silverlight 遍历datagrid行的数据
  • yum失败
  • 罗技G500游戏鼠标
  • PHP获取星期的方法及代码
  • Java的IO操作(四) - SequenceInputStream类,实例:一个文件分割、合并工具
  • eclipse中默认js编辑器非常慢,尤其在拷贝粘贴代码时的解决方法
  • 禽流感注意事项
  • setTimeout,setInterval的使用小结
  • C# WF中关闭按钮的状态判定,根据用户选择执行不同的方法
  • iPhone上画圆角矩形的方法
  • @angular/forms 源码解析之双向绑定
  • [分享]iOS开发 - 实现UITableView Plain SectionView和table不停留一起滑动
  • 《Javascript高级程序设计 (第三版)》第五章 引用类型
  • ES6 学习笔记(一)let,const和解构赋值
  • gitlab-ci配置详解(一)
  • JS专题之继承
  • Linux gpio口使用方法
  • MQ框架的比较
  • Python学习之路13-记分
  • ReactNative开发常用的三方模块
  • Vue全家桶实现一个Web App
  • windows下mongoDB的环境配置
  • 编写符合Python风格的对象
  • 从零开始学习部署
  • 工作中总结前端开发流程--vue项目
  • 计算机常识 - 收藏集 - 掘金
  • 模仿 Go Sort 排序接口实现的自定义排序
  • 如何实现 font-size 的响应式
  • 使用权重正则化较少模型过拟合
  • 数据科学 第 3 章 11 字符串处理
  • 源码安装memcached和php memcache扩展
  • ​3ds Max插件CG MAGIC图形板块为您提升线条效率!
  • ​如何在iOS手机上查看应用日志
  • #pragam once 和 #ifndef 预编译头
  • #前后端分离# 头条发布系统
  • (附源码)spring boot基于Java的电影院售票与管理系统毕业设计 011449
  • (附源码)springboot教学评价 毕业设计 641310
  • (附源码)springboot猪场管理系统 毕业设计 160901
  • (机器学习-深度学习快速入门)第一章第一节:Python环境和数据分析
  • (九)One-Wire总线-DS18B20
  • (七)c52学习之旅-中断
  • (三十五)大数据实战——Superset可视化平台搭建
  • (转)Windows2003安全设置/维护
  • (转)菜鸟学数据库(三)——存储过程
  • .net core 3.0 linux,.NET Core 3.0 的新增功能
  • .NET Core 版本不支持的问题
  • .NET 中选择合适的文件打开模式(CreateNew, Create, Open, OpenOrCreate, Truncate, Append)
  • .NET中 MVC 工厂模式浅析
  • .net中调用windows performance记录性能信息
  • .sh