Android NDK--自己编写调用JNI

其实ubuntu中android开发环境的搭建也很简单

(1)下载android-sdk  (2)为Eclipse安装ADT,从help->Install New SoftWare进入,地址输入http://dl-ssl.google.com/android/eclipse/

要进入NDK开发再下一个android-ndk就可以了

以上开发包均可以从http://androidappdocs.appspot.com/sdk/ndk/index.html上下载得到

然后vi .bashrc,在PATH中添加3个路径:

android-sdk/tools  android-sdk/platform-tools  android-ndk

source .bashrc使更改生效

PATH下的工具命令可以直接使用,不需要指定路径。今天我们要用到android-sdk/tools下的android命令、android-sdk/platform-tools下的adb命令、android-ndk下的ndk-build命令。

Eclipse中使用NDK编程

1.New->Android Project

Project Name:hello-jni

Applicatin Name:hello-jni

create activity:HelloJni

Package Name:com.example.hellojni

Min SDK Version:3

2.项目下新建一个文件夹jni,该文件夹下新建两个文件:hello-jni.c和Android.mk

hello-jni.c

#include <string.h>
#include <jni.h>jstring
Java_com_example_hellojni_HelloJni_stringFromJNI( JNIEnv* env,  jobject thiz )
{return (*env)->NewStringUTF(env, "Hello from JNI !");
}
Java_com_example_hellojni_HelloJni_stringFromJNI这个函数名称是有讲究的
Java_  固定
com_example_hellojni_  java代码的包名
HelloJni_  java代码的类名
stringFromJNI  java代码中使用的方法名

Android.mk

LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE    := hello-jni
LOCAL_SRC_FILES := hello-jni.cinclude $(BUILD_SHARED_LIBRARY)

3.编写Android程序

com.example.hellojni.HelloJni.java

package com.example.hellojni;import android.app.Activity;
import android.widget.TextView;
import android.os.Bundle;public class HelloJni extends Activity
{/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);TextView  tv = new TextView(this);tv.setText( stringFromJNI() );setContentView(tv);}public native String  stringFromJNI();static {System.loadLibrary("hello-jni");}
}

4.编译C代码,生成共享库

进入项目的根目录$cd hello-jni

hello-jni $ android update project -p . -s

hello-jni $ ndk-build

此时libhello-jni.so就生成了,在bin下也有了apk包

5.直接在Eclipse中点击运行,或者手动安装apk包

首先输入android命令,启动模拟器

然后安装apk包:adb install bin/hello-jni.apk

6.卸载apk包

使用adb提供的shell命令

adb shell

#cd /data/app

#rm com.example.hellojin.apk

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/549039.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IP地址 子网掩码 网络地址 广播地址 主机地址

MAC地址和IP地址 author&#xff1a;wangyifei 数据包的IP地址决定了数据包最终到达哪一个计算机&#xff0c;而MAC地址决定了该数据包下一跳由哪个设备接收&#xff0c;不一定是终点 子网掩码只有一个作用&#xff0c;就是将某个IP地址划分成网络地址和主机地址两部分。 同一…

ping 工具开发日记(1)

ping 工具开发日记&#xff08;1&#xff09; 2021.1.15 hyp 0.准备 开发语言&#xff1a;python 3.8 开发环境&#xff1a;windows 7 开发工具&#xff1a;pycharm 应用功能&#xff1a;1.能实现不同系统&#xff08;windows或者linux)下ping工具 测试 ​ 2.能实现导入…

VMware中的虚拟机如何配置上网(Linux系统为例)

作者&#xff1a;chenhao 虚拟机上网首先要了解VMware虚拟机中的三种网络模式 一、桥接模式&#xff1a; 该模式下物理网卡和虚拟网卡的IP地址处于同一个网段&#xff0c;子网掩码、网关、DNS等参数都相同。 2.本地物理网卡和虚拟网卡通过VMnet0虚拟交换机进行桥接&#xff0…

Silverlight与Flash在FF中的一些注意点

在HTML中&#xff0c;Silverlight、Flash以object标签的形式显示&#xff0c;如以下代码&#xff1a;View Code <object data"data:application/x-silverlight-2,"type"application/x-silverlight-2"></object>但是必须同时指定该object元素的…

VMware虚拟机使用NAT模式上网

作者&#xff1a;chenhao 1.“NAT”类型&#xff0c;称为网络地址转换&#xff0c;在“仅主机”类型的基础上提供了guest可以访问外部host的能力 2.虚拟机之间、虚拟机和宿主机之间、虚拟机和外部host之间都可以进行通信 3.虚拟机的IP只需要配置NAT网段中的IP&#xff0c;访问外…

HSRP的初步解析及典型应用2

总的来说就是&#xff0c;由两台以上的路由器组成一个HSRP组&#xff0c;在该组之中选举一台路由器作为Active路由器&#xff0c;一台路由器作为Standby路由器&#xff0c;其它路由器则进入Listen状态。实际工作时&#xff0c;是由Active路由器去转发数据&#xff0c;一旦Activ…

centos linux7 系统安装

centos linux7 系统安装 author:WYF 第一步把光盘放入服务器光驱内&#xff0c;服务器开机进去界面 第二部按F12或者F11进入安装选择界面 其中有三个选择 1.直接安装 centos linux7系统 2.先测试后安装 centos linux7 3.恢复系统 可见选第一个和第二个都可以&#xff0c;选第…

[P2P技术]如何配置JXTA Shell(airclh)

为什么80%的码农都做不了架构师&#xff1f;>>> JXTA Shell为JXTA平台提供了一个交互式的环境&#xff0c;使用户无须编程就能试验核心JXTA平台。Shell提供了一些基本命令&#xff0c;这些命令可以发现对等体和对等组&#xff0c;加入和脱离对等组&#xff0c;在对…

linux7 如何配置IP地址

linux7 如何配IP地址 author:WYF 首先命令行输入 vi /ect/sysconf ig/network-scripts/ifcfg-enp7s0f0**(这是第一个口&#xff0c;同理第二个口就是ensp7s0f1) 如下图所示 ethx是第几个网口 ensp7s0fx也是第几个网口 x代表数量 第二步 “i”进入编辑 把bootproto设置成静态ip…

HTML<div>标签、<img>标签

作者&#xff1a;Liuweifei < div >标签定义 HTML 文档中的一个分隔区块或者一个区域部分。 < div >标签可以把文档分割为独立的、不同的部分。div与CSS样式可让网页实现各种样式效果。< div >是在html中使用最多的布局标签。 所有主流浏览器都支持 < di…

百兆和千兆直通线与交叉线的制作方法

WYF 百兆、千兆 交叉线 直通线 制作 同一设备之间用交叉线&#xff08;比如电脑和电脑之间&#xff0c;交换机和交换机之间&#xff09;&#xff0c;不同设备之间用直连线&#xff08;比如电脑和交换机&#xff0c;交换机和路由器&#xff09;。 &#xff08;一&#xff09;百兆…

构建高性能ASP.NET站点之二 优化HTTP请求(前端)

上一篇文章主要讲述了请求一个页面的过程,同时也提出了在这个过程中的一些优化点,本篇就开始细化页面的请求过程并且提出优化的方案.同时,在上篇文章中,不少朋友也提出了一些问题,在本篇中也对这些问题给出了回答! 本篇的议题如下: HTTP请求的优化 HTTP请求的优化 在一个网页的…

CentOS 7.3镜像挂载搭建本地yum源

作者&#xff1a;chenhao 以在虚拟机上操作为例 第一步&#xff1a;先在虚拟机的设备状态“已连接”前打对钩&#xff0c;在点击确定 第二步&#xff1a;挂载光驱&#xff0c;命令mount /dev/cdrom /mnt/cdrom/ 将光驱挂载到mnt/cdrom下 mount /dev/cdrom /mnt/cdrom/注&…

十二之续、快速排序算法的深入分析

十二之续、快速排序算法的深入分析 作者:July 二零一一年二月二十七日--------------------------前言一、快速排序最初的版本二、Hoare版本的具体分析三、Hoare变种版本四、快速排序的优化版本五、快速排序的深入分析六、Hoare变种版…

centos7 配置http服务器

2021-1-20 Hyp 1.安装 http&#xff0c;使用命令 yum install -y httpd2.重启http服务 关闭服务 httpd service stop启动服务 httpd service start重启服务 httpd service restart3.测试运行 使用浏览器访问localhost或者127.0.0.1 出现测试页面即服务启动成功 4.制作自己的…

ASP.NET 生成唯一不重复的订单号 支持多用户并发、持多数据库的实现参考(C#.NET通用权限管理系统组件源码组成部分)...

我们在日常开发项目过程中往往需要各种订单单号的产生方法&#xff0c;而且是支持多用户并发、支持多种数据库的&#xff0c;我们并不想为每个项目都写一些独立的代码去实现这些功能&#xff0c;往往需要有个通用的函数比较爽一些。下面我们以C#.NET通用权限管理系统组件源码的…

Linux系统的服务器配置minicom接console线调试交换机的步骤

作者&#xff1a;chenhao 第一步&#xff1a;首先用yum安装mimicom yum install minicom输入命令后开始安装 在这里输入&#xff1a;y 这里也需要输入&#xff1a;y。安装完成。 第二步&#xff1a;配置minicom里面的参数 minicom -s选择Serial port setup,调试配置信息 …

显示器主流连接线

作者&#xff1a;Liuweifei 1.VGA VGA&#xff08;Video Graphics Array&#xff09;即视频图形阵列&#xff0c;别名D-sub&#xff0c;是经典的15针均分为3排的蓝接口&#xff0c;不支持热插拔。VGA使用模拟信号进行传输&#xff0c;由于经历了将数字-模拟-数字的信号转换过…

OSI七层协议讲解

作者&#xff1a; WYF OSI七层协议讲解 如图从下到上可分为七层 物理层&#xff1a;比如说我们电脑连接一根网线&#xff0c;电脑数据通过网线传出去的过程&#xff0c;就是物理层&#xff0c;相当于一个传输介质&#xff0c;比如说网线、光纤、电缆等。就是定义了网线、光…

Windows Server 2012学习

Windows Server 2012学习 用windows系统来架构网络&#xff0c;以便将资源共享给网络上的用户。 windows的网络架构大致可以分为工作组&#xff08;workgroup&#xff09;架构&#xff0c;域&#xff08;domain&#xff09;架构与前两者的混合架构。 一、工作组架构为分布式…