关于NDK及安装使用
在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及安装使用相关推荐
- Linux下NDK的安装配置
Linux下NDK的安装配置 在编写android程序的时候如果需要复用一部分以前的c语言程序,可以考虑使用NDK.由于设计到c和c++编程,故强烈建议在Linux下安装上eclipse的CDT插件. ...
- ndk+opencv安装+各种错误分析(新版安装,编译不需要Cygwin 和Sequoyah了)
鼓捣了两三天,终于成功算跑通了一个简单的程序.下面说说具体的安装: 因为从同学那里拷过来的eclipse 就有adt cdt 的插件.所以这两个就不用再安装了.(需要的话自己安装) 具体说下安装过程: ...
- android ndk如何安装,android NDK安装
Android NDK 是运行于Android 平台上的Native Development Kit 的缩写.Android 应用开发者可以通过NDK 调用C 或C++ 本地代码. NDK的作用: 1 ...
- Unity导出apk出现的问题,JDK,Android SDK,NDK,无“安装模块”
导出apk失败 使用unity导出apk文件,会出现提示:需要合适版本的JDK.Android SDK和Android NDK,要找到.下载和安装好合适的版本非常耗费时间, 网上很多教程指出可以直接在 ...
- NDK JNI 安装与配置(一)(UBUNTU16.04 )
1.下载Android NDK自解压包, 官方地址: https://developer.android.com/ndk/downloads/index.html#download 下载: $ wge ...
- Windows下有关NDK的安装资料
前面介绍Windows下Android 开发环境配置,主要是面向JAVA开发环境,对只做APK上层应用开发人员来讲,基本够用了,由于Linux系统的权限限制和Android封装架构限制,很多涉及底层设 ...
- 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 ...
- android ndk mac安装成功,Mac下Android Studio NDK 环境搭建并运行
本文包括两部分. 一,NDK环境配置 二,NDK项目运行. 2,下载完成之后,在cmd命令中解压文件. (1) cd 命令进入下载后ndk存放的目录 cd /Users/talon/Desktop ...
- 【Android 逆向】Android 进程注入工具开发 ( Visual Studio 开发 Android NDK 应用 | Visual Studio 中 SDK 和 NDK 安装位置 )
文章目录 一.Visual Studio 中安装 " 使用 C++ 的移动开发 " 开发库 二.Visual Studio 中安装的 Android SDK 和 NDK 位置 三. ...
- Linux--Ubuntu12.04安装NDK
前言 本篇博客将介绍如何在Ubuntu12.04下安装Android NDK,在其他版本的Ubuntu下,方法也类似.由于Android NDK不能单独作为Android应用程序来运行,因此,使用An ...
最新文章
- linux查看系统版本信息命令
- Activity全屏问题
- 蓝湖怎么切图标注_【蓝湖指北】一张图教你如何选择标注尺寸
- Memcached分布式算法详解--转
- linux常用的脚本、命令
- 通俗易懂,嵌入式Linux驱动基础
- bzoj4636: 蒟蒻的数列
- 黑客——技术的凝聚者???
- node 安装 webpack
- hadoop中mapreduce参数优化
- 最新可用的goole翻译接口
- [转载] python numpy.sqrt_python中numpy库ndarray多维数组的的运算:np.abs(x)、np.sqrt(x)、np.modf(x)等...
- java中map函数指针_如何用Rust编写合适的map函数?
- 矩阵卷积运算的具体过程,很简单
- MATLAB制图代码
- 关于C语言中数组输入与打印
- Jupyter更改默认浏览器
- NOTA-NHS ester,1338231-09-6,双功能配体的大环化合物
- el-amap的使用
- Python 3中 mp3play module 的使用
热门文章
- redis 数据结构笔记
- CentOS安装MySQL及其使用(总结整理)
- php动态交叉表,SQLServer:SQL实现动态交叉表
- linux把profile文件删了怎么办,误删Profile后的处理
- C语言Ip获取mac,C语言怎么实现Windows下获取IP和MAC地址?
- 一个应用程序中最多只能有一个窗口java_在Windows 中,同时显示多个应用程序窗口的正确方法是 ______ 。_学小易找答案...
- python数据环境的搭建_Python数据分析环境搭建
- 鼠标在滑块上滚轮控制_直线导轨(滚轮导轨)与线轨(滚珠导轨)的优劣势对比...
- 设计模式(5)——单例模式的七种实现方式
- 论文翻译 | ORB-SLAM3:一个用于视觉、视觉惯性和多地图SLAM系统