交叉编译

  • 系统平台:Windows、Mac OS、Linux
  • CPU平台:ARM、X86、MIPS
  • 概念:在一个平台下打包编译出还有一个平台能够运行的程序#交叉编译原理
  • 源代码->预编译->编译->链接->可运行程序
  • 原理:模拟还有一个平台的特性去编译代码#交叉编译工具链*ToolChains,一个工具运行完成自己主动运行下一个工具#常见工具
  • NDK:native developement kits
  • CDT:eclipse插件,C/C++ developement tool。高亮显示C语言keyword
  • cygwin:Linux命令行模拟器#NDK文件夹结构
  • doc:帮助文档
  • build/tools:linux的批处理文件
  • platforms:开发jni过程中会用到的头文件和C语言类库
  • prebuilt:预编译时用到的工具
  • samples:JNI的使用案例
  • sources:NDK源代码
  • toolchains:编译打包时用到的工具链
  • ndk-build.cmd:開始编译打包JNI代码

JNI开发流程

  1. 创建jni目录,创建c文件
  2. 在java类中定义本地方法
  3. 在C文件里定义函数实现本地方法

    //函数名必须是Java开头,_连接包名类名方法名
    jstring Java_com_itheima_helloworld1_MainActivity_helloFromC(JNIEnv* env, jobject thiz)
  4. 创建Android.mk文件。指定要编译的c文件和模块名字

  5. 在jni文件夹下运行ndk-build.cmd指令。编译打包出动态链接库

  6. 在java代码中载入动态链接库。调用本地方法

  7. 部署项目

常见错误

找不到类库

  • 没有加入x86支持
  • 载入动态链接库时写错模块名###本地方法找不到
  • 忘记载入动态链接库
  • c函数名写错

javah

  • 自己主动生成jni样式的头文件
  • java1.7:在src文件夹下 运行javah com.itheima.helloworld2.MainActivity
  • java1.6:在bin/classes文件夹下 运行javah com.itheima.helloworld2.MainActivity

加入本地支持

  • 须要先指定NDK目录
  • 自己主动生成jni目录和cpp文件、Android.mk文件
  • 能够指定include目录的路径
  • 每次部署项目时。开发环境会自己主动编译打包出so类库

javap

  • 打印方法的签名
  • 在bin/classes文件夹下 javap -s com.itheima.calljava.MainActivity

最新文章

  1. KnockoutJS 3.X API 第八章 映射(mapping)插件
  2. Struts2文件下载找不到输入流异常
  3. OS X 下iso刻录U盘
  4. 手机抓包-fiddler
  5. java中的final总结
  6. POJ2411 Mondriaan's Dream 轮廓线dp
  7. Universal-Image-Loader(UIL)使用方法&流程图&源码分析 ----- 未完
  8. Activity 状态的保存和恢复
  9. LA 3662 Another Minimum Spanning Tree (曼哈顿距离最小生成树 模板)
  10. Linux网络管理——ISO/OSI七层模型
  11. java微信平台,发源码
  12. PID控制算法研究
  13. 201521123069 《Java程序设计》 第7周学习总结
  14. Bootstrap Table急速完美搭建后台管理系统
  15. Codeforce E. Fire
  16. springMVC使用jsp:include嵌入页面的两种方式
  17. jacascript CSS样式的脚本化操作
  18. 第二章 ArrayList源码解析
  19. redux 与 react-redux
  20. python 全栈开发,Day117(popup,Model类的继承,crm业务开发)

热门文章

  1. pywordfrom
  2. 和菜鸟一起学c之gcc编译过程及其常用编译选项【转】
  3. source insight setting
  4. flask框架基本使用(1)(基本框架搭建与请求参数接收)
  5. Python基础-列表、元祖
  6. [BZOJ1193][HNOI2006]马步距离 大范围贪心小范围爆搜
  7. 牛客网 暑期ACM多校训练营(第二场)I.car-规律思维题
  8. 大数据技术之_16_Scala学习_08_数据结构(下)-集合操作+模式匹配
  9. springMVC笔记:jsp页面获取后台数据记录列表
  10. (寒假集训) Cow Jog(二分优化的最长上升子数列)