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地址划分成网络地址和主机地址两部分。 同一…

常用VS 快捷键盘

转自:http://www.cnblogs.com/qiantuwuliang/archive/2009/05/30/1492304.html 并新加了几条。 如果你经常使用Visual Studio 2008开发程序&#xff0c;下面13个最常用快捷键你一定很熟悉。 1. F5:启动调试 2. F7 /Shift-F7:显示代码窗口或显示设计器窗口 3.Alt-Enter&#xff…

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.能实现导入…

cisco ios命令

IOS命令&#xff1a; 特权模式 设置密码 配置路由器 一般 过程 CDP的 杂项 知识产权 IPX的 路由协议&#xff1a; RIP协议 IGRP的 访问列表 广域网配置 购买力平价 帧中继 键盘快捷方式 注释&#xff1a; 静态和动态路由 距离矢量和链路状态路由 内部和外部路由协议 问题与…

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

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

推荐Android学习-农民伯伯

http://www.cnblogs.com/over140/转载于:https://blog.51cto.com/3qeveryone/496110

IP地址与子网掩码基础

IP地址与子网掩码基础 ​ IP地址分类&#xff1a;A类、B类、C类地址为单播地址 ​ IP地址中主机位归0就是该主机所在的网段。 ​ 子网掩码&#xff1a;它是一种用来指明一个IP地址的哪些位标识的是主机所在的子网以及哪些位标识的是主机的位掩码。子网掩码只有一个作用&…

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元素的…

MAC地址与IP地址

MAC地址与IP地址 author&#xff1a;mxh 数据包的目标IP地址决定了数据包最终该到达哪一个计算机&#xff0c;而目标MAC地址决定了该数据包下一跳由哪个设备接收&#xff0c;不一定是最终目的地。 计算机的IP地址有两大部分组成&#xff0c;一部分为网络地址&#xff0c;一部…

linux /etc/shadow 文本结构

l /etc/shadow<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />用户的相关密码存放文件。#vim /etc/shadowroot:$1$crpkUkzg$hLl/dYWm1wY4J6FqSG2jS0:14296:0:99999:7:::bin:*:14296:0:99999:7:::...省略。。。共有九段&#xff…

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…

用命令行方式配置JAVA系统变量

这学期又开始学JAVA了&#xff0c;装完JDK之后还得自己手动配置系统变量&#xff0c;为了便于以后重装系统配置的简单&#xff0c;就冒出了个很蛋疼的想法&#xff0c;能不能用命令行来自动配置&#xff0c;google&#xff0c;百度了下&#xff0c;发现可以利用wmic命令来实现&…

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

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

Memcached深度分析

Memcached是danga.com&#xff08;运营LiveJournal的技术团队&#xff09;开发的一套分布式内存对象缓存系统&#xff0c;用于在动态系统中减少数据库负载&#xff0c;提升性能。关于这个东西&#xff0c;相信很多人都用过&#xff0c;本文意在通过对memcached的实现及代码分析…

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

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

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

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