《黑马74期不加密1 05_day41-day43 JNI day01 资料 Android-JNI》由会员分享,可在线阅读,更多相关《黑马74期不加密1 05_day41-day43 JNI day01 资料 Android-JNI(38页珍藏版)》请在人人文库网上搜索。

1、android下JNI开发,2020/8/21,什么是JNI,JNI(Java Native Interface) java本地开发接口 JNI 是一个协议, 有了这个协议可以使Java代码和C/C+代码相互调用.,为什么用JNI,1、扩展JVM功能,访问驱动,操作硬件 (物联网、智能家居、 车载电脑) 2、效率上c/c+语言效率更高 数学运算,实时渲染的游戏上,音 视频处理 3、 java反编译比c语言容易, 通过JNI增强代码安全性(加密算法放到C实现) 4、代码移植,复用已经存在的c代码(opencv,ffmpeg),怎么用JNI,1.C/C+语言 2.掌握java jni流程 3.ND。

2、K (native develop kits ),C语言入门,目标: 课程结束大家能看懂c代码.会读会调用. 安排: 1.基本数据类型 2.基本输入输出函数 3.数组 4.指针 5.结构体 6.枚举,开发环境介绍,windows下用轻量级 dev-c+,C语言基本数据类型,char, int, float, double, long, short, signed, unsigned, void,输入输出函数,%d - int %ld long int %lld - long long %hd 短整型 %c - char %f - float %lf double %u 无符号数 %x 十六进制。

3、输出 int 或者long int 或者short int %o - 八进制输出 %s 字符串 Int len; Scanf(“%d”,什么是指针,int main(void) int * p; /p 是变量的名字, int * 是一个类型 /这个变量存放的是int类型变量的地址。 int i =3; p= ,指针常见错误,声明后未赋值直接用 声明的指针类型和指向的类型要一致,指针和指针变量的关系,指针就是地址,地址就是指针 地址就是内存单元的编号 指针变量是存放地址的变量 指针和指针变量是两个不同的概念 但是要注意: 通常我们叙述时会把 指针变量简称为指针,实际它们含义并不一样,为什么使用指。

4、针,直接访问硬件 (opengl 显卡绘图) 快速传递数据(指针表示地址) 返回一个以上的值(返回一个数组或者结构体的指针) 表示复杂的数据结构(结构体) 方便处理字符串,*号的三种含义,*号的含义 数学运算符: 3 * 5 定义指针变量: int * p; 指针运算符(取值): *p (取p的内容(地址)在内存中的值),互换两个数字,swap(int* i, int* j) / 引用传递 int temp = *i; *i = *j; *j = temp; main() int i = 89; int j = 10; swap( ,函数返回一个以上的值,change(int* a, int*。

5、 b) *a = 1; *b = 2; main() int a = 3, b = 5; change( ,指针和数组的关系,数组名 int a5; / a是数组名,5是数组的大小,元素个数 数组名称是个指针常量,它存放的是数组中第一个元素的地址 int a5; ai 等价于 *(a + i) / 这里i的范围是04(数组长度 -1),指针的长度,不管什么类型的指针都是4个字节.(64位系统8字节) C语言为了方便指针运算, 定义各种基本类型的指针, 每种类型的指针运算时所偏移量的值是根据类型的长度决定的.,多级指针,int i = 10; int* p1 = ,主函数获取子函数变量地址,vo。

6、id function(int* p) int i = 4; *p = ,静态内存和动态内存,动态内存和静态内存 静态内存是系统是程序编译执行后系统自动分配,由系统自动释放, 静态内存是栈分配的. 动态内存是开发者手动分配的, 是堆分配的. 栈内存 * 系统自动分配 * 系统自动销毁 * 连续的内存区域 * 向低地址扩展 * 大小固定 * 栈上分配的内存称为静态内存,* 堆内存 * 程序员手动分配 * java:new * c:malloc * 空间不连续 * 大小取决于系统的虚拟内存 * C:程序员手动回收free * java:自动回收 * 堆上分配的内存称为动态内存,创建动态数组,mal。

7、loc(memory allocate) 函数 free(地址); 回收内存 realloc re- allocate,结构体,struct Student int age; float score; char sex; ; main() struct Student stu = 18, 88.5, M; ,使用结构体变量,struct Student stu = 80,55.5,F; struct Student stu2; stu2.age = 10; stu2.score = 88.8f; stu2.sex= M; printf(%d %f %cn, st.age, st.score, 。

8、st.sex); / 结构体指针 struct Student * pStu; pStu = pStu-age 在计算机内部会被转换为 (* pStu).age pStu -age的含义: pStu所指向的结构体变量中的age这个成员,函数的指针,1.定义int (*pf)(int x, int y); 2.赋值 pf = add; 3.引用 pf(3,5);,Union,struct Date int year; int month; int day; ; union Mix long i; int k; char ii; ; main() printf(date:%dn,sizeof(st。

9、ruct Date); printf(mix:%dn,sizeof(union Mix); system(pause); ,枚举,enum WeekDay Monday=0,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday ; main() enum WeekDay day = Sunday; printf(%dn,day); system(pause); ,typedef,声明自定义数据类型,配合各种原有数据类型来达到简化编程的目的的类型定义关键字。 #include #include typedef int i; typedef long 。

10、l; main() i m = 10; l n = 123123123; printf(%dn, m); printf(%ldn, n); system(pause); ,JNI 协议,NDK HelloWorld,1.创建一个android工程 2.java代码中写声明native方法 3.创建jni目录,编写c代码,方法名字要对应 4.编写Android.mk文件 5.NDK编译生成动态链接库 6.java代码load动态库.调用native代码,javah 生成头文件,注意: 不同版本的JDK操作方式不同. 命令: javah JDK1.6使用方式 在工程的bin/classes目录下,。

11、 执行javah命令. JDK1.7使用方式 在工程的src目录下, 执行javah命令.,NDK 简便开发流程,1. 关联NDK: Window - Preferences - Android - NDK 2. 创建Android工程, 声明native方法. 3. 设置函数库名字: 右键工程 - Android Tools - App Native support 4. 使用javah生成.h的头文件, 并把.h文件拷贝到工程下jni文件夹中. 5. c代码提示: 邮件工程 - Properties - C/C+ General - Path and Symbols / Includes 。

12、- Add - File system 选中以下路径.latformsandroid-18arch-armusrinclude 6. 把后缀名.cpp改成.c, 实现native方法. 7. java代码中加载动态库, 调用native方法.,java 与 c之间的数据传递,public native int add(int x, int y); public native String sayHelloInC(String s); public native int arrElementsIncrease(int intArray);,在c代码中使用logcat,Android.mk文件增加。

13、以下内容 LOCAL_LDLIBS += -llog C代码中增加以下内容 #include #define LOG_TAG System.out #define LOGD(.) __android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, __VA_ARGS__) #define LOGI(.) __android_log_print(ANDROID_LOG_INFO, LOG_TAG, __VA_ARGS__) C代码中使用logcat, 例: LOGI(infon); LOGD(debugn);,C语言回调java方法,C调用java空方法 public。

14、 void helloFromJava() C调用java中的带两个int参数的方法 public int add(int x,int y) C调用java中参数为string的方法 public void printString(String s) ,C语言回调java静态方法,C语言调用下面静态方法. public static void sayHello(String text) System.out.println(MainActivity:showText: + text); ,C语言回调java刷新界面,C语言调用下面Activity中方法, 弹出吐司. public void showToast(String text) Toast.makeText(this, text, 0).show(); ,eclipse找不到ndk选项解决办法,NDK插件 com.android.ide.eclipse.ndk_23.0.2.1259578.jar 如果在eclipse里配置ndk却发现没有配置的选项,则需要此插件,放置在eclipse/plugins下,重启即可。

黑马android74期全套不加密,黑马74期不加密1 05_day41-day43 JNI day01 资料 Android-JNI相关推荐

  1. 老男孩python14期全套-老男孩第十四期Python学习班之Day01

    一.废话 开始洗脑.高大上的工作环境.周围人的收入.就好像下一秒大家就能走上人生巅峰一样的看着别人取得的成就.不要忘记有一个叫做幸存者偏差的概念? 跟着课程学习,就能如何如何.这个概率是有,但是也要付 ...

  2. 黑马49期全套视频(2018年)

    黑马49期全套视频下载链接:https://pan.baidu.com/s/1kp2heB_bjgJo2ghnKbAwqw 提取码:z7v9

  3. 黑马安卓74期安全卫士day04 缺失部分

    黑马安卓74期安全卫士day04 缺失部分: 当天所讲内容,大致如下: 1.设置引导界面的代码抽取: 2.手机防盗界面及功能的编写: 3.SIM卡变更的短信发送功能. 对应网上流传的视频,是69期的视 ...

  4. 黑马程序员全套Java教程_Java基础教程_异常(含扩展)(二十三)

    黑马程序员全套Java教程_Java基础教程_异常(含扩展)(二十三) 1.1 异常概述与异常体系结构 1.2 JVM遇到异常时的默认处理方案 1.3 异常处理 1.4 异常处理之try--catch ...

  5. python千锋好还是黑马好_千峰,达内,黑马哪个好?我们该如何选择呢

    千峰,达内,黑马哪个好?说起千峰,达内,黑马,相信很多人都不会陌生,相信可能也有学生报过他们培训班,那么千峰,达内,黑马哪个会比较好呢,我们该如何选择一家好的培训班呢.开课通知:php中文网<第 ...

  6. 《痞子衡嵌入式半月刊》 第 74 期

    痞子衡嵌入式半月刊: 第 74 期 这里分享嵌入式领域有用有趣的项目/工具以及一些热点新闻,农历年分二十四节气,希望在每个交节之日准时发布一期. 本期刊是开源项目(GitHub: JayHeng/pz ...

  7. 音视频技术开发周刊 74期

    『音视频技术开发周刊』由LiveVideoStack团队出品,专注在音视频技术领域,纵览相关技术领域的干货和新闻投稿,每周一期.点击『阅读原文』,浏览第74期内容,祝您阅读愉快. 架构 VMAF:未毕 ...

  8. 【第74期】想做游戏策划,得有点屁股精神

    我是酱油,这是第74期文章. 如果把人当作整体,那么每个人,都挺适合做游戏策划,至少"屁股君"就是典范.为什么说"屁股君"适合干这行呢?我们来看下它的特性: 1 ...

  9. 74期:涂鸦科技A轮获千万美元,无专职运维!

    摘要: <云周刊>74期:涂鸦科技A轮获千万美元,无专职运维! 云周刊 本周要点 查看更多 [直播回顾]涂鸦科技:A轮千万美元,无专职运维! 你听说过有家叫涂鸦科技的公司吗?它专门做智能硬 ...

最新文章

  1. 二分法:查找区间search for a range
  2. 文末福利 | 只送给真正想学英语的你!
  3. es6笔记2之解构赋值,rest和展开运算符
  4. opendolphin_使用DolphinDB进行机器学习
  5. Mysql初始化root密码和允许远程访问
  6. L1-011 A-B(13行代码AC!!)
  7. 朴素贝叶斯原理及实现
  8. java excel 操作 poi_Java使用apache poi进行excel相关操作
  9. 关于 asp.net 点击确定按钮 获取不到新值问题
  10. 河海大学计算机科学考研真题,河海大学计算机与信息学院845电子技术基础历年考研真题汇编.pdf...
  11. DataBseDesign工作笔记003---ERStudio使用笔记_基本使用方法详解
  12. 推荐一个js代码混淆工具的网址
  13. Total Control通过定义配置文件,预加载脚本教程
  14. 4.13 期货每日早盘操作建议
  15. 圣水观音湖规划--------------三维虚拟展示系统
  16. linux or msys2设置网络代理
  17. 来一波PY交易吧(交换友链)
  18. zuiqingchun4
  19. opencv 中函数的一相关说明,如:cvtColor和cvCvtColor区别
  20. 延迟渲染(Deferred Rendering)

热门文章

  1. libxml2在Linux arm平台的交叉编译
  2. UE5 Lyra游戏内容制作学习总纲
  3. 通过CSS,H5,JavaScript实现表格表单的随机选择,和简单的随机点名。
  4. 交通标志识别论文综述
  5. MapGuide和Google Maps集成常见问题
  6. 在java中实现 AutoCAD api
  7. 公告栏自动滚动例子代码
  8. Q-BERT: Hessian Based Ultra Low Precision Quantization of BERT---Q-BERT:基于Hessian的超低精度BERT量化
  9. 【附源码】计算机毕业设计SSM校园快递代取系统
  10. 如果串口驱动有问题,怎么调