文档章节

二、JNI开发环境搭建与调试

unic0rn
 unic0rn
发布于 2016/07/14 16:23
字数 509
阅读 78
收藏 0
jni
  1. 开发/编译环境的选择
  2. JNI代码调试

 

1.开发/编译环境的选择

        JNI技术在Java开发和Android开发中都有涉及,但是Android中的Java是google根据Android自身特性进行改造的,JNI编译环境与标准Java有所不同,Android中使用NDK进行JNI编译,而本文只介绍标准Java的JNI编译环境搭建与调试。

 

        JNI实际上是一段遵循Java本地调用接口的C或C++程序,所以JNI的编译也是用C/C++编译器。最终Java调用C/C++实际上是Java调用动态库实现的,windows下是dll,linux是so。

 

如果在Linux下,我们可以使用gcc完成JNI的编译。

如果在windows下,我们可以有以下几种选择:

  1. eclipse开发Java + VS 开发JNI(VS是windows下开发C/C++最好用的IDE)
  2. eclipse安装CDT同时开发Java和C/C++(安装CDT的eclipse开发C/C++比较鸡肋)

    

2.JNI代码调试

        在此只介绍在eclipse开发Java+VS开发JNI的环境下调试JNI代码

本文假设你已经有一个使用了JNI的Java工程,并且导入了eclipse且JNI代码也已经导入VS

 

1)在Java工程中将即将调用JNI的代码进行断点,以调试模式启动Java工程

2)在cmd中使用jps命令查看该Java工程进程的ID

3)在VS中对需要调试的JNI代码进行断点

4)在VS中打开菜单 调试->附加到进程 会打开附加窗口,根据进程ID找到Java进程,并点击附加

 

 

5)附加进程后,在eclipse中按F8继续运行,当程序执行到对应的JNI代码VS将会断点,你就可以在VS中继续调试JNI代码

加我QQ:981656164,共同学习交流,记得备注 —— OSC!  ~~ <( ̄3 ̄)> 

© 著作权归作者所有

共有 人打赏支持
unic0rn
粉丝 8
博文 76
码字总数 36275
作品 1
泉州
项目经理
android NDK 在Ubuntu10.04开发环境的搭建

最近可能要用到调用jni,我对NDK和Jni了解非常的少,今天根据网络上的一些博客搭建了一下NDK的开发环境,但是继续往下编译jni这些就不会了,如果有哪位看到了,希望能帮帮忙 下面我将今天搭建...

雨焰
2013/03/19
0
0
Android Studio之NDK环境搭建,so文件打包以及使用

本篇入门教程开发环境为mac + Android Studio + gradle 2.14.1,主要包含以下3块内容: NDK环境搭建 编写第一个JNI项目 打包出动态so文件,在其他项目中使用 一、NDK环境搭建 从Android Stu...

ljianbing
06/26
0
0
欢迎进入阿钟的博客导航——快速查找所有博客

世上最遥远的距离,是我在if里你在else里,似乎一直相伴又永远分离;世界上最痴心的等待,是我当case你是switch,或许永远都选不上自己;世界上最真情的相依,是你在try我在catch。无论你发神...

a_zhon
2016/08/25
0
0
搭建android环境报:Failed to load the JNI shared library

大家开发android App的时候,开发环境是怎么样的?是直接使用官网提供的已经集成好的ADT么?下载下来,解压即用。还是自己亲力亲为的去搭建? 我一直都是使用官网提供是傻瓜ADT来进行android...

RickeyZhu
2015/08/17
0
0
Eclipse替代ndk-gdb断点调试Android NDK程序

一 概述: Eclipse调试NDK程序的操作并不难,难的是环境的搭建。光是安装Eclipse就有不少问题,真是“大错不犯,小过不断”不胜期烦。在网上,已经有先行者记录下了Eclipse断点调试Android N...

胖老狼
2015/10/11
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

shell特殊符号、cut、sort、uniq、wc、tee、tr、split命令

10月15日任务 8.10 shell特殊符号cut命令 8.11 sort_wc_uniq命令 8.12 tee_tr_split命令 8.13 shell特殊符号下 cut 命令 cut作用:截取字符串 用法如下:cat /etc/passwd |head -2 |cut -d ...

hhpuppy
6分钟前
0
0
Springboot实现filter拦截token验证和跨域

背景 web验证授权合法的一般分为下面几种 1使用session作为验证合法用户访问的验证方式 使用自己实现的token 使用OCA标准 在使用API接口授权验证时,token是自定义的方式实现起来不需要引入其...

funnymin
40分钟前
1
0
linux使用ntfs-3g操作ntfs格式硬盘

Linux内核目前只支持对微软NTFS文件系统的读取。 NTFS-3G 是微软 NTFS 文件系统的一个开源实现,同时支持读和写。NTFS-3G 开发者使用 FUSE 文件系统来辅助开发,同时对可移植性有益。 安装 ...

linuxprobe16
今天
1
0
kubeadm部署kubernetes集群

一、环境要求 这里使用RHEL7.5 master、etcd:192.168.10.101,主机名:master node1:192.168.10.103,主机名:node1 node2:192.168.10.104,主机名:node2 所有机子能基于主机名通信,编辑...

人在艹木中
今天
12
0
Shell特殊符号总结以及cut,sort,wc,uniq,tee,tr,split命令

特殊符号总结一 * 任意个任意字符 ? 任意一个字符 # 注释字符 \ 脱义字符 | 管道符 # #号后的备注被忽略[root@centos01 ~]# ls a.txt # 备注 a.txt[root@centos01 ~]# a=1[root@centos01...

野雪球
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部