在android中jni的调用过程

1)安装和下载Cygwin,下载 Android NDK。自己补上:Aygwin模拟一个linux环境,相当于android用的eclipse

2)在ndk项目中进行JNI接口的设计。  导入so文件

3)使用C/C++实现本地方法   自定义在c文件里的方法

4)JNI生成动态链接库.so文件

5)将动态链接库复制到java工程,在java工程中调用,运行java工程即可

/**

* android项目发布之后,被人通过反编译并破解了Web Service接口地址以及参数的定义,

* 因此需要想办法对传输的数据进行加密,考虑到Java代码存在被反编译的问题,最终采用了Android NDK来实现,

* 通过NDK调用C语言写的加密算法生成MD5验证码的,

* 同时考虑到用C写的SO被人盗用(直接将SO文件引用入工程)采用通过C语言调用 Java代码进行调用者身份确认。

*/

static

{

System.loadLibrary("hello-jni");

}

加载本地的c文件,调用里面自定义的方法进行一系列操作

====================================安装过程如下===================================

解压android-ndk-r5c-windows.zip

解压cygwin package.rar

Cygwin安装步骤

运行setup.exe,选第三项从本地安装cygwin

设置cygwin安装到那里

指定安装程序位置

选中安装的内容,只选devel就可以了

cygwin与Ndk集成

必须用Editplus打开.profile文件,绝对不能用记事本打开

home文件夹不为空

D:\ndk\cygwin\home\username\.bash_profile(username是你登录电脑的用户名) 增加下面两行

NDK=/cygdrive/d/android-ndk-r5c-windows/android-ndk-r5c (d是ndk-sdk解压后的盘符,后面是ndk所在的路径)

export NDK

home文件夹为空

如果安装后home目录下面是空的,没有.bash_profile文件,到\cygwin\etc\skel\下找到.bash_profile文件增加下面两行

NDK=/cygdrive/d/android-ndk-r5c-windows/android-ndk-r5c

export NDK
然后拷贝到(C:\Documents and Settings\Administrator),有些win7要拷到c:\users目录下,重启cygwin就可以使用了

测试cygwin与Ndk集成是否成功

双击运行cygwin

$ cd $NDK

显示ndk所在文件夹的路径就说明集成成功

编写c代码

在windows资源管理器中找到D:\android-ndk-r5c-windows\android-ndk-r5c\samples\hello-jni\jni\hello-jni.c中查看hello-jni.c ,修改代码

生成.so

tttadasdfdsfdsafd@zjj ~

$ cd $NDK

tttadasdfdsfdsafd@zjj /cygdrive/d/android-ndk-r5c-windows/android-ndk-r5c

$ cd samples

tttadasdfdsfdsafd@zjj /cygdrive/d/android-ndk-r5c-windows/android-ndk-r5c/sample

s

$ cd hello-jni

tttadasdfdsfdsafd@zjj /cygdrive/d/android-ndk-r5c-windows/android-ndk-r5c/sample

s/hello-jni

$ $NDK/ndk-build

Gdbserver      : [arm-linux-androideabi-4.4.3] libs/armeabi/gdbserver

Gdbsetup       : libs/armeabi/gdb.setup

Compile thumb  : hello-jni <= hello-jni.c

SharedLibrary  : libhello-jni.so

Install        : libhello-jni.so => libs/armeabi/libhello-jni.so

在Andori中使用.so

将libs拷到android项目的根目录中

在android类中添加如下代码

使用NDK的优点

保护代码

代码重用。

C运行速度快

可手动分配内存,如视频

转载于:https://www.cnblogs.com/zhanshiwei/p/3644780.html

关于NDK及安装使用相关推荐

  1. Linux下NDK的安装配置

    Linux下NDK的安装配置 在编写android程序的时候如果需要复用一部分以前的c语言程序,可以考虑使用NDK.由于设计到c和c++编程,故强烈建议在Linux下安装上eclipse的CDT插件. ...

  2. ndk+opencv安装+各种错误分析(新版安装,编译不需要Cygwin 和Sequoyah了)

    鼓捣了两三天,终于成功算跑通了一个简单的程序.下面说说具体的安装: 因为从同学那里拷过来的eclipse 就有adt cdt 的插件.所以这两个就不用再安装了.(需要的话自己安装) 具体说下安装过程: ...

  3. android ndk如何安装,android NDK安装

    Android NDK 是运行于Android 平台上的Native Development Kit 的缩写.Android 应用开发者可以通过NDK 调用C 或C++ 本地代码. NDK的作用: 1 ...

  4. Unity导出apk出现的问题,JDK,Android SDK,NDK,无“安装模块”

    导出apk失败 使用unity导出apk文件,会出现提示:需要合适版本的JDK.Android SDK和Android NDK,要找到.下载和安装好合适的版本非常耗费时间, 网上很多教程指出可以直接在 ...

  5. NDK JNI 安装与配置(一)(UBUNTU16.04 )

    1.下载Android NDK自解压包, 官方地址: https://developer.android.com/ndk/downloads/index.html#download 下载: $ wge ...

  6. Windows下有关NDK的安装资料

    前面介绍Windows下Android 开发环境配置,主要是面向JAVA开发环境,对只做APK上层应用开发人员来讲,基本够用了,由于Linux系统的权限限制和Android封装架构限制,很多涉及底层设 ...

  7. android ndk r14b安装,[Cmake-Android音视频]NDK-r14b编译ffmpeg3.4支持neon,硬解码

    编译环境 Ubuntu16.04 x86_64 Ffmpeg3.4 ndk-r14b 编译前的准备 ubuntu16.04 64位linux 下载ndkubuntu 下载ffmpegbash 查看ub ...

  8. android ndk mac安装成功,Mac下Android Studio NDK 环境搭建并运行

    本文包括两部分. 一,NDK环境配置 二,NDK项目运行. 2,下载完成之后,在cmd命令中解压文件. (1) cd  命令进入下载后ndk存放的目录  cd /Users/talon/Desktop ...

  9. 【Android 逆向】Android 进程注入工具开发 ( Visual Studio 开发 Android NDK 应用 | Visual Studio 中 SDK 和 NDK 安装位置 )

    文章目录 一.Visual Studio 中安装 " 使用 C++ 的移动开发 " 开发库 二.Visual Studio 中安装的 Android SDK 和 NDK 位置 三. ...

  10. Linux--Ubuntu12.04安装NDK

    前言 本篇博客将介绍如何在Ubuntu12.04下安装Android NDK,在其他版本的Ubuntu下,方法也类似.由于Android NDK不能单独作为Android应用程序来运行,因此,使用An ...

最新文章

  1. linux查看系统版本信息命令
  2. Activity全屏问题
  3. 蓝湖怎么切图标注_【蓝湖指北】一张图教你如何选择标注尺寸
  4. Memcached分布式算法详解--转
  5. linux常用的脚本、命令
  6. 通俗易懂,嵌入式Linux驱动基础
  7. bzoj4636: 蒟蒻的数列
  8. 黑客——技术的凝聚者???
  9. node 安装 webpack
  10. hadoop中mapreduce参数优化
  11. 最新可用的goole翻译接口
  12. [转载] python numpy.sqrt_python中numpy库ndarray多维数组的的运算:np.abs(x)、np.sqrt(x)、np.modf(x)等...
  13. java中map函数指针_如何用Rust编写合适的map函数?
  14. 矩阵卷积运算的具体过程,很简单
  15. MATLAB制图代码
  16. 关于C语言中数组输入与打印
  17. Jupyter更改默认浏览器
  18. NOTA-NHS ester,1338231-09-6,双功能配体的大环化合物
  19. el-amap的使用
  20. Python 3中 mp3play module 的使用

热门文章

  1. redis 数据结构笔记
  2. CentOS安装MySQL及其使用(总结整理)
  3. php动态交叉表,SQLServer:SQL实现动态交叉表
  4. linux把profile文件删了怎么办,误删Profile后的处理
  5. C语言Ip获取mac,C语言怎么实现Windows下获取IP和MAC地址?
  6. 一个应用程序中最多只能有一个窗口java_在Windows 中,同时显示多个应用程序窗口的正确方法是 ______ 。_学小易找答案...
  7. python数据环境的搭建_Python数据分析环境搭建
  8. 鼠标在滑块上滚轮控制_直线导轨(滚轮导轨)与线轨(滚珠导轨)的优劣势对比...
  9. 设计模式(5)——单例模式的七种实现方式
  10. 论文翻译 | ORB-SLAM3:一个用于视觉、视觉惯性和多地图SLAM系统