ANDROID 一键搞定JNI创建C头文件

Android通过jni调用本地c/c++接口方法总结 网上有网友问android的原生应用,上层java代码如何通过jni调用本地的c/c++接口或第三方动态库?之前搞过android应用开发和底层c/c++接口开发都是一个人搞定,觉得还是蛮简单的。其实没啥难度,如果觉得难只是因为你没有经历过,只要搞过一遍基本就记住了。这里总结下方法留作备忘,同时分享给有需要的小伙伴。 阅读详情

目前:新版本的jre7中是不含jdk的,如果想用jdk中的工具,比如:javah.exe,则必须再下载安装个jdk,所以养成良好的习惯,安装jre的时候,同时安装jdk,jre和jdk下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html

这一篇写的也很好:http://yuanzhifei89.iteye.com/blog/1955532

下面转自:http://blog.youkuaiyun.com/helong275098760/article/details/19847315

一、使用环境 1、windows64位操作系统 2、ADT为adt-bundle-windows-x86_64-20130917    3、NDK为android-ndk-r9b

二、配置生成头文件.h

    ⒈首先,如图所示,点击External Tools Configurations...

       

    ⒉然后,如图所示,点击 

    

    ⒊接下来,看图操作

       

这里是为了复制:-classpath ${project_loc}\bin\classes -d ${project_loc}\jni -jni ${java_type_name}   

    

    最后点击Apply,然后 我们在一个android工程中新建一个class文件

    

    

三、配置build ndk,和上面类似,参考图中配置即可

      

      

     创建C文件

       

    创建Android.mk文件

      

    创建Application.mk文件

     

    最后 加载so的库文件  就可以把C语言的函数当Java函数使用了

      

注意:在system.loadLibrary("hello")中的so库是libhello.so,在loadlibrary()的时候注意去掉lib前缀。

好了,上面就是是用eclipse快速开发JNI的方法了,你学会了吗?


下面转自:http://blog.youkuaiyun.com/wh_19910525/article/details/8258134

1、在java代码里,如果想要 加载 libFileLoader.so ,
 使用

static {
    System.loadLibrary("FileLoader");
}

就可以加载这个动态库了。

这里要注意,参数只写xxx就可以了,不需要写libxxx,也不需要写libxxx.so。

还有一点要说明,System.loadLibrary这个函数会在如下路径搜索libxxx.so文件:
/system/lib
/data/data/you apk package/lib

但,如果libxxx.so还依赖其它.so文件,比如libyyy.so,则System.loadLibrary只会在/system/lib目录下去找,如果没找到,它不会自动到/data/data/you apk package/lib
下去找,这个时候就会报动态库没找到的错;
解决方法是在load libxxx.so之前,先load libyyy.so,如下:

System.loadLibrary("yyy");
System.loadLibrary("xxx");

Android Studio 下安卓 jni 开发错误 undefined reference to AndroidBitmap_getInfo 阅读详情

相关推荐

JNI 如何使用dlopen,dlsym调用第三方自定义的 .so库(包括JNI->JNI)

先说下大致思路: 如果想要完成这个目标,就需要大致了解 JNI 的调用过程,本人也是走了很多弯路才摸明白的,现在将经验分享如下: 实际上2者本来应该是一样的,结果都是一样的都是生成的so库被JNI调用,只不过 JNI->JNI 不用其他交叉编译工具,直接NDK就可以搞定。而我们自定义的c文件想要变成android JNI 识别的库 需要用到 NDK 的arm-linux-android

什么都做一点 6011

Android JNI 头文件的生成

网上查阅了很多资料发现都不行,是作者故意删掉了小细节还是我这64位WIN7系统有点特别?、 好吧就说下我的实现吧 第一、你得把jdk bin目录配置到环境变量里吧 第二、通过dos界面进入到 “你工程的绝对路径\bin\classes\”  路径下 第三、输入 “javah -classpath . -jni 你的包名.带有native方法的类”回车 在当前目录下生成.h文件 (注:需要先

hezhuanxian123的专栏 631

Unraid小白必看:5分钟搞定OpenWrt软路由安装(附iStoreOS配置技巧)

本文为Unraid新手提供了一份详尽的OpenWrt软路由安装与配置指南。通过虚拟机技术,在Unraid系统上快速部署基于iStoreOS的软路由,详细讲解了旁路由与主路由两种模式的网络配置、性能优化技巧及常见故障排查方法,帮助用户充分利用闲置硬件,打造高性能、可定制的家庭网络中枢。

wine的专栏 486

在已有的android项目中使用JNI,用javac生成头文件

1.新建一个类,在该类中实现本地方法 它可能是红色的,提示找不到对应的jni方法,但是不用管,以后会配置 2. 在命令行对该native方法生成头文件 首先,用cd命令进入该类的目录下,然后输入javac -h .\ 你的.java文件 这里不用javah是因为jdk10之后已经弃用了javah,而使用javac -h代替。另外,这里的.\代表当前目录,不能省,而且.\后有一个空格...

amy130的博客 986

MT6771 Android13 背光曲线调试与光感数据校准实战

本文详细介绍了MT6771平台在Android 13系统上进行背光曲线调试与光感数据校准的实战经验。针对高亮度环境下背光误调节问题,深入分析了光感数据上报机制,并提供了驱动层配置修改、背光曲线优化及常见问题解决方案,帮助开发者快速定位并解决类似问题。

moon9的博客 287

Android开发实战:5分钟搞定全屏沉浸式状态栏(附完整代码示例)

本文提供了Android开发中实现全屏沉浸式状态栏的完整实战指南。通过对比主题配置、动态代码设置和Window标志位三种方法,详细讲解了如何隐藏状态栏并处理布局适配。文章还涵盖了刘海屏、手势导航等高级适配场景,并附有可直接使用的工具类代码,帮助开发者快速提升应用视觉体验。

weixin_29197699的博客 359

ANDROID JNI的头文件生成配置

(1)我的电脑-属性-高级-环境变量 增加系统变量:java_home:X:...\Java\jdk1.7.0_01(java安装好后的路径), Path变量中添加 %java_home%/bin, 增加系统变量:classpath:.;X:...\sdk\platforms (1)特别注意要加".;",这也是添加了1个路径,即当前路径,(2)第二个路径是安卓sdk的安装路径。 3. 

探索。。。发现。。。 872

武汉理工大学 python实验三

请编一个程序,用户在同一行内输入两个整数,代表头和脚的数量,编程计算笼中各有多少只鸡和兔(假设鸡和兔都正常,无残疾),如无解则输出`“Data Error!题目为:今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二,问物几何?年前,《孙子算经》中记载一个有趣的问题:今有雉兔同笼,上有三十五头,下有九十四足,问雉兔各几何?有一座八层宝塔,每一层都有一些琉璃灯,每一层的灯数都是上一层的二倍,已知共有。编写一个宝塔上的琉璃灯的小程序,计算并输出每层各有多少盏琉璃灯。,如果有多个解,则分行输出,每行一个解;

2401_83472225的博客 5950

Android的JNI开发步骤

定义并调用本地方法 public static native String getStringFromC(); 创建jni文件夹 jni文件夹里创建c文件 #include <stdio.h> #include <stdlib.h> #include "com_gjg_hellondk_MainActivity.h" JNIEXPORT jstring JNICALL Java_com_gjg_h

俊光的专栏 405

RS-485调试踩坑实录:MAX13487数据回环问题排查与修复(附电路图)

本文深入解析了RS-485通信中MAX13487芯片的数据回环问题,提供了详细的排查过程和解决方案。通过分析芯片特性和自动换向机制,揭示了RO引脚配置不当是导致问题的关键原因,并给出硬件(添加上拉电阻)和软件(调整MCU配置)两种修复方案,附有优化设计建议和实际调试技巧。

play7的博客 1297

保姆级教程:用Python+OpenCV实现相移法与格雷码三维重建(从生成条纹到点云生成)

本文详细介绍了使用Python和OpenCV实现相移法与格雷码三维重建的全流程,从条纹生成到点云计算。通过结构光技术,结合相移法和格雷码,实现高精度的三维重建,适用于无纹理物体表面的密集对应点生成。教程包含环境搭建、条纹生成、相位计算、三维点云重建及常见问题排查,适合计算机视觉开发者和研究人员。

weixin_33443333的博客 351

Android JNI 生成头文件以及cpp详细步骤

配置完之后,Clean一下项目,此时,CMakeLists.txt 就生效了,以及cpp 代码也可以引用。

专注Android ,直到世界尽头 1860

库存管理系统项目部署方案(基于jdk17)

不需要安装到服务器,运维本地安装就行,主要是用来编译前端代码的。构建完成后将dist文件夹复制到服务器内。

程序员诚哥 6373

JNI小结

什么是JNI?安卓中java代码和c/c++本地代码之间的调用.为什么要使用JNI? 安全性 :安卓java代码容易被反编译,而c/c++不反编译后都是汇编代码,基本看不懂 复用性: 有一些功能本地代码已经实现了,就没必要再用java实现一遍. 局限性: 有些直接操作硬件的代码java没法实现,只能用c来实现 效率:大计算量时,c代码执行效率远高于java代码 什么时候需要用到

hss01248的专栏 686

RHCA III之路---EX436-1

由于ha这门课有大量命令需要在3个节点上同步执行.如果执行history会出现前面数字,复制多行会有些麻烦.lab环境是nodea,nodeb,nodec 考试环境是node1,node2,node3。就可以快速将历史命令实现可多行复制,当然也可以用awk进行分割,个人喜好随意。技巧只能加快答题速度,对考试得分帮助不大。确认3个红框内容一致,且没报错即可。再执行一个histrory。3个node节点上运行。这样就能1次复制3行。

Q先生 1002

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Java 通过 JNI 调用 C 之一 HelloWorld 入门

凤姐:杰,我是你的什么 杰伦:凤,你是我的 JNI 捧在手心,暖暖的,连接你我他,连接java和c++

棺材深處 1678

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

搞定android JNI

关于什么是JNI,我想对于学习android的人一定不会陌生,如果实在不了解你可以GOOGLE一下,本人就不解释了。我今天主要想通过一个实例,让大家感受下它的使用。先介绍下我的一些开发环境和目的: 实例的开发环境:Eclipse +android ADT +windows xp+jdk 1.6.0.20+Vmware+Ubuntu 10.04       实例的目的::android的ja

636

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

用 Kotlin Native 写 Jni,以后写 Android 基本上要没有别的语言什么事儿了的节奏

我在之前写过一篇文章,讲如何用 Kotlin Native 编写 Native 代码通过 JNI 让 Java 调用。当时因为完全没有注意到 CName 这个神奇的东西的...

Kotlin中文社区 2747

java调用.h头文件_正确使用javah命令生成JNI的头文件

[这几天自己一直在琢磨使用java 读取dll 文件(专业词汇我不会说,好像是说java 动态读取本地库什么的),在网上搜索了一些资料,和示例代码,按照要求去的时候,在用javah在网上看了很多如何使用javah命令,但是都不对,前几天摸索了一阵,终于搞定。博主JDK版本为jdk1.7.0_21。具体使用方法如下:1.声明JAVA_HOME环境变量为C:\Program Files\Java\jd...

weixin_39636608的博客 1761

java通过jni调用c_Java通过JNI调用C之HelloWorld入门

首先我实在 ubantu12.04 下进行操作的,还要有 eclipse ~~1.JNI的工作原理JNI : Java Native Interface 即JAVA本地调用(1)java的本质想搞明白jni的本质,还要从java的本质说起.从本质上来说,java这门语言就是一门脚本语言(这是偶的个人理解,希望java大侠们不要用板砖拍我),它的运行完全依赖于脚本引擎对java的代码进行解释和执行(...

weixin_35108433的博客 173
上一篇: 圆形ProgressBar之外的表示进度的图片动画
下一篇: 单例模式getInstance的有效实现
HabbyGe
博客等级 码龄16年 46粉丝 143原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值