Android之jni入门

jni即java native interface,使用jni我们可以在JAVA中调用C代码,提高了效率,可以复用代码,可以灵活的应用于各种场景

怎么使用JNI

安装软件

1.NDK 用于将C代码编译成so库

2.CygWin 在windows下模拟linux环境

3.CDT 在eclipse下编写C与C++环境搭建

JNI实现

1 定义一个c方法的接口 相当于在java代码中定义了一个接口 接口的实现方法是C语言实现的

    public native String helloWorldFromC();

2 步 实现C代码

注意:方法名 严格按照jni的规范 jstring Java_com_zj_helloworldfromc_MainActivity_helloWorldFromC(JNIEnv* env,jobject obj)
其中Java是大写的,函数名必须包括正确的包名,笔者就因为在这里出了错,导致找不到库文件

#include <stdio.h>
#include <jni.h>//public native String helloWorldFromC();
jstring Java_com_zj_helloworldfromc_MainActivity_helloWorldFromC(JNIEnv*env,jobject obj)
{//返回一个java String类型的字符串// jstring     (*NewStringUTF)(JNIEnv*, const char*);//return (**env).NewStringUTF(env,"hello wrold From C");return (*env)->NewStringUTF(env,"hellowroldFromC");//把C代码打包成函数库}

3 生成android.mk 告诉编译器 如何把c代码打包成函数库

如果没有mk文件,就使用ndk-build就会报错

这里写图片描述

android.mk文件格式如下

   LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)# 对应打包成函数库的名字LOCAL_MODULE    := hello# 对应c代码的文件LOCAL_SRC_FILES := Hello.cinclude $(BUILD_SHARED_LIBRARY)

4步 把c代码 打包成函数库 用到了安装的环境

这里写图片描述

生成了libhello.so库文件,就可以使用了

5 步在java代码中 引入库函数

    static{System.loadLibrary("hello");// 注意事项 去掉前面的lib 后面的.so}

6 使用方法

public void click(View view){//弹出一个吐司,吐司内容为C代码内容Toast.makeText(getApplicationContext(), helloWorldFromC(), 0).show();}

运行效果

这里写图片描述

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

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

相关文章

腾讯投资过 600 多家公司不惊奇,京东也有出手 260+ | 大公司投资并购盘点

来源&#xff1a;IT桔子A 股一片绿&#xff0c;这已经不是满屏绿色的第一天了&#xff0c;2018 年以来&#xff0c;A 股经历了起起落落落落落落……尤其在中美贸易战不断升级后&#xff0c;A 股的代表颜色就成了绿色&#xff0c;少数会有几家企业翻红&#xff0c;然而过不了几天…

埋点技术:“呵呵,你在网上的一举一动,都在我眼皮子底下”

&#x1f345; 作者主页&#xff1a;不吃西红柿 &#x1f345; 简介&#xff1a;CSDN博客专家 & 总榜前十&#x1f3c6;、HDZ核心组成员。欢迎点赞、收藏、评论 &#x1f345; 粉丝专属福利&#xff1a;知识体系、面试题库、技术互助、简历模板。文末公众号领取 1、什么是…

printf的格式控制的完整格式

printf的格式控制的完整格式 printf的格式控制的完整格式&#xff1a;% - 0 m.n l或h 格式字符下面对组成格式说明的各项加以说明&#xff1a;①%&#xff1a;表示格式说明的起始符号&#xff0c;不可缺少。②-&#xff1a;有-表示左对齐输出&#xff0c;如省略表示右对…

【每日SQL打卡】​​​​​​​​​​​​​​​DAY 13丨每日新用户统计【难度中等】

活动介绍&#xff1a; 「数据仓库技术交流群」已经正式启动每日SQL打卡&#xff0c;帮助大家扎实基础&#xff0c;努力工作之余&#xff0c;别忘了自我提升。另有超多CSDN 周边礼物相送。 欢迎报名和邀请小伙伴参与&#xff0c;一个人可能走得很快&#xff0c;但一群人会走得很…

美国斯坦福大学发布2025计划, 创立开环大学, 彻底颠覆全球高等教育

来源&#xff1a;钱塘号《斯坦福大学2025计划》在以设计思考理论著称的斯坦福大学设计学院牵头下正式启动&#xff0c;这次教育改革改变了以往自上而下的方式&#xff0c;代之以师生为主导。与其说《斯坦福大学2025计划》是一个方案&#xff0c;不如说它是一个对未来大学模式进…

Android之jni深入

小技巧&#xff1a;自动生成 java本地方法对应的c代码的方法名 javah 指令 全类名 java1.6版本 class C:\workspace\HelloWorldFromC2\bin\classes java1.7以上 src C:\workspace\HelloWorldFromC2\src 获得方法的签名的方法 javap -s 打印方法的签名 注意要cd到 C:\workspa…

HTML选择器

HTML选择器1、标签选择器直接将HTML元素中的标签作为选择器&#xff0c;可以是p、h1、d1、strong等HTML标签&#xff0c;在CSS中直接展现。2、ID选择器通常在编写页面的时候设定某些标签元素的ID,同一个HTML中ID不允许重复&#xff0c;例如&#xff0c;<div id"wrapper…

【每日SQL打卡】​​​​​​​​​​​​​​​DAY 13丨每位学生的最高成绩【难度中等】

活动介绍&#xff1a; 「数据仓库技术交流群」已经正式启动每日SQL打卡&#xff0c;帮助大家扎实基础&#xff0c;努力工作之余&#xff0c;别忘了自我提升。另有超多CSDN 周边礼物相送。 欢迎报名和邀请小伙伴参与&#xff0c;一个人可能走得很快&#xff0c;但一群人会走得很…

语言处理想突破,三座大山必须过

来源&#xff1a;大数据文摘编译&#xff1a;李佳、汤圆、钱天培“我的飞机什么时候到&#xff1f;”把这个问题抛给智能机器人助手。几乎可以肯定&#xff0c;机器立马就懵逼了。“我”是谁&#xff1f;“飞机”是航班还是淘宝上订的模型玩具呢&#xff1f;“到”又是到哪呢&a…

利用github page搭建博客

为什么选择GitHub Pages&#xff1f; 很多人用 wordpress&#xff0c;你为什么要用 github pages 来搭建&#xff1f; 1、github pages有300M免费空间&#xff0c;资料自己管理&#xff0c;保存可靠&#xff1b; 2、学着用 github&#xff0c;享受 github 的便利&#xff0c…

C语言中printf(built: %s %s,__TIME__,__DATE__);方便调试

代码中加入printf("built: %s %s",__TIME__,__DATE__);这样就可以了;后面将显示最后编译的时间。 这样可以知道自己改的代码是否生效&#xff0c;是否编译进去。转载于:https://www.cnblogs.com/jisheng/archive/2013/01/15/2860706.html

CSDN每日打卡已经2周,进展如何?(送两个CSDN背包)

&#x1f345; 作者主页&#xff1a;不吃西红柿 &#x1f345; 简介&#xff1a;CSDN博客专家 & 总榜前十&#x1f3c6;、HDZ核心组成员。欢迎点赞、收藏、评论 &#x1f345; 粉丝专属福利&#xff1a;知识体系、面试题库、技术互助、简历模板。文末公众号领取 点赞评论 …

WordPress环境配置与安装

要安装wordpress,要安装apache,php,mysql,还要进行一系列复杂的配置&#xff0c;较为复杂。 apache安装 php5.5.6 下载链接&#xff1a;http://windows.php.net/download/#php-5.5 推荐 V11 x64&#xff0c;也就是64bit的 apache2.4&#xff0c;下载链接&#xff1a;http:/…

趋势 | 人工智能领域十大最具成长性技术展望

来源&#xff1a;搜狐日前&#xff0c;在2018世界机器人大会基础技术与创新论坛中&#xff0c;中国电子学会发布了《新一代人工智能十大成长性技术展望》。经调研走访了一批在新一代人工智能技术及产业方面具备领先水平和特色的龙头企业&#xff0c;拜访了来自于知名高校、研究…

CTex + Texmaker

CTex 套装提供了一个Latex编译环境和相关的库&#xff0c;最大的优点是自动部署&#xff0c;直接就可以用。但是CTex自带的WinEdt和开源的Texmaker比起来在设计方面显得比较粗陋&#xff0c;影响工作效率。 Texmaker 本身只是一个前台软件&#xff0c;但是设计精良。如果已经安…

【每日SQL打卡】​​​​​​​​​​​​​​​DAY 14丨报告的记录 I【难度简单】

活动介绍&#xff1a; 「数据仓库技术交流群」已经正式启动每日SQL打卡&#xff0c;帮助大家扎实基础&#xff0c;努力工作之余&#xff0c;别忘了自我提升。另有超多CSDN 周边礼物相送。 欢迎报名和邀请小伙伴参与&#xff0c;一个人可能走得很快&#xff0c;但一群人会走得很…

android之phonegap入门

利用phoneGap可以利用HTML开发安卓应用&#xff0c;是web app的一种&#xff0c;可以有效的提高开发效率&#xff0c;降低开发成本 。 第一步&#xff1a; 开发环境配置以及基本操作请参考其它文档. 新增一个名为 phoneGap 的android项目,将主activity命名为:PhoneGapActivi…

java获得项目绝对路径

在jsp和class文件中调用的相对路径不同。 在jsp里&#xff0c;根目录是WebRoot 在class文件中&#xff0c;根目录是WebRoot/WEB-INF/classes 当然你也可以用System.getProperty("user.dir")获取你工程的绝对路径。 1.jsp中取得路径&#xff1a;以工程名为TEST为例&am…

全球第二家 亚马逊“喜提”万亿美金市值 AI或是最大功臣

亚马逊创始人杰夫贝佐斯&#xff08;Jeff Bezos&#xff09;来源&#xff1a;网易智能摘要&#xff1a;9月5日消息&#xff0c;美国当地时间周二&#xff0c;全球电商巨头亚马逊(Amazon)股价一度触及史上最高点&#xff0c;促使亚马逊市值短暂达到1万亿美元。不过&#xff0c;在…

【每日SQL打卡】​​​​​​​​​​​​​​​DAY 14丨重新格式化部门表【难度中等】

活动介绍&#xff1a; 「数据仓库技术交流群」已经正式启动每日SQL打卡&#xff0c;帮助大家扎实基础&#xff0c;努力工作之余&#xff0c;别忘了自我提升。另有超多CSDN 周边礼物相送。 欢迎报名和邀请小伙伴参与&#xff0c;一个人可能走得很快&#xff0c;但一群人会走得很…