摘要 | 第6-7页 |
Abstract | 第7页 |
第1章 绪论 | 第10-15页 |
1.1 研究背景及意义 | 第10-11页 |
1.2 国内外研究现状 | 第11-13页 |
1.3 论文主要研究内容 | 第13页 |
1.4 论文结构安排 | 第13-15页 |
第2章 Android平台JNI原理分析 | 第15-30页 |
2.1 Android应用程序与Java虚拟机 | 第15-18页 |
2.1.1 Android应用程序 | 第15-16页 |
2.1.2 Java虚拟机 | 第16-18页 |
2.2 Java代码与本地代码 | 第18-20页 |
2.3 JNI内部原理详细分析 | 第20-29页 |
2.3.1 JNI类型 | 第21-22页 |
2.3.2 Java类型签名 | 第22页 |
2.3.3 JNI数据结构 | 第22-23页 |
2.3.4 Java本地方法 | 第23-26页 |
2.3.5 引用Java对象 | 第26页 |
2.3.6 访问Java对象 | 第26-27页 |
2.3.7 Java异常 | 第27-28页 |
2.3.8 连接Java虚拟机 | 第28-29页 |
2.4 本章小结 | 第29-30页 |
第3章 JNI代码常见错误分析 | 第30-38页 |
3.1 JavaVM和JNIEnv错误 | 第30-31页 |
3.2 线程错误 | 第31页 |
3.3 引用错误 | 第31-32页 |
3.4 缓存错误 | 第32-33页 |
3.5 字符串错误 | 第33-34页 |
3.6 数组错误 | 第34-35页 |
3.7 异常错误 | 第35-36页 |
3.8 兼容性错误 | 第36-37页 |
3.9 本章小结 | 第37-38页 |
第4章 JNI代码静态测试方法及工具设计 | 第38-56页 |
4.1 JNI代码常见错误列表 | 第38-40页 |
4.2 JNI编程优化方法列表 | 第40-41页 |
4.3 JNI代码人工阅读测试方法 | 第41-42页 |
4.4 JNI代码静态扫描测试方法 | 第42-44页 |
4.5 jnichecker设计 | 第44-48页 |
4.5.1 功能设计 | 第44-46页 |
4.5.2 流程设计 | 第46-48页 |
4.6 jnichecker实现 | 第48-53页 |
4.6.1 功能实现 | 第48-51页 |
4.6.2 算法分析 | 第51-53页 |
4.7 jnichecker实验 | 第53-55页 |
4.8 本章小结 | 第55-56页 |
第5章 JNI代码动态测试方法及工具设计 | 第56-77页 |
5.1 C/C++代码动态测试分析 | 第56-62页 |
5.1.1 使用gtest进行基于状态的测试 | 第56-58页 |
5.1.2 使用gmock进行基于交互的测试 | 第58-61页 |
5.1.3 桩、模拟对象和伪对象 | 第61-62页 |
5.2 JNI代码动态测试分析 | 第62-64页 |
5.3 基于模拟对象机制测试JNI代码的方法 | 第64-65页 |
5.4 jnimock设计 | 第65-68页 |
5.4.1 模拟对象设计 | 第66-67页 |
5.4.2 函数设计 | 第67-68页 |
5.4.3 其它设计 | 第68页 |
5.5 jn imock实现 | 第68-73页 |
5.5.1 JNIEnvMock和JavaVMMock实现 | 第68-71页 |
5.5.2 函数实现 | 第71-72页 |
5.5.3 几点说明 | 第72-73页 |
5.6 jnimock开源 | 第73-76页 |
5.7 本章小结 | 第76-77页 |
结论 | 第77-79页 |
致谢 | 第79-80页 |
参考文献 | 第80-83页 |