- 1、本文档共46页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* * * * * * * * * * * * 在上述方法中有两个常见的参数,其中一个参数JNIEnv是指向可用JNI函数表的接口指针;另一个参数jobject是Java引用。下面将对这两个参数做详细介绍。 JNIEnv接口指针示意图如下: 7.3.3 使用C/C++实现本地方法 * JNIEnv接口指针 JNIEnv接口指针,指向一个函数表,函数表中的每一个入口指向一个JNI函数。JNIEnv是一个与线程相关的变量,不同线程的JNIEnv彼此独立。在C与C++中使用JNIEnv* env分别如下: C: (*env)-方法名(env,参数列表) C++: env-方法名(参数列表) 参数jobject代表的是一个原生实例的方法,它与类实例相关,它们只能在类实例中调用,通过第二个参数获取实例引用。在原生代码不仅可以通过实例方法实现开可以通过静态方法实现,与实例方法不同的是第二参数为jclass值类型的,而且它没有与实例绑定,可以在静态上下文直接引用。 7.3.3 使用C/C++实现本地方法 * 通过C语言来实现OpenGL编程,来说明依赖关系的建立。具体可参见工程中其余的代码。 7.3.4 依赖关系建立 * Android NDK构建系统依赖另外二个文件:Android.mk和Application.mk,这两个文件应该作为NDK项目的一部分由开发人员提供,下面我们将重点介绍。 Android.mk文件:Android.mk是向Android NDK系统项目中GUN Makefile文件,用于描述实现嵌入的必备信息,因此也是每个NDK项目的必备组件。 针对上述的工程,需添加的Android.mk的文件内容如下。 7.3.4 依赖关系建立 1. LOCAL_PATH := $(call my-dir) 2. include $(CLEAR_VARS) 3. LOCAL_MODULE := hello-jni 4. LOCAL_SRC_FILES := hello-jni.c 5. include $(BUILD_SHARED_LIBRARY) * 7.3.4 依赖关系建立 1. LOCAL_PATH := $(call my-dir) 2. include $(CLEAR_VARS) 3. LOCAL_MODULE := hello-jni 4. LOCAL_SRC_FILES := hello-jni.c 5. include $(BUILD_SHARED_LIBRARY) Android系统用LOCAL_PATH来表示需要编译的C/C++代码所在目录,my-dir是Android NDK编译系统提供的宏功能,通过调用该宏功能返回当前目录的位置。 Android系统将CLEAR_VARS变量设置为脚本文件clear-vars.mk的位置,$(CLEAR_VARS)表示清除LOCAL_PATH以外所有LOCAL_开始的变量,例如LOCAL_MODULE与LOCAL_SRC_FILES等变量。因为所有的脚本都将在同一个GNU Make的执行上下文中,而且所有变量都是全局变量,因此必须在每次使用前清空所有以前用过的变量。 * LOCAL_MODILE用来声明模块名称,模块名称必须唯一,而且中间不能存在空格。因为模块名称也被用于给NDK编译系统生成的共享库文件命名,所以系统自动在模块名称前添加lib前缀,然后生成.so文件。 LOCAL_SRC_FILES表示编译模块时使用的C/C++文件列表。 include $(BUILD_SHARED_LIBRARY)表示NDK系统构建的共享库,Android NDK编译系统将BUILD_SHARED_LIBRARY变量设置成build-shared-library.mk文件的保存位置。 Application.mk文件:在进行NDK开发时,在应用程序目录中一定要有Application.mk文件,用来声明Android工程需要调用的共享库或静态库模块。 Application.mk文件通常被放置在$PROJECT/jni/Application.mk下, $PROJECT指的是项目。另一种方法是将其放在顶层的子目录下: $NDK/apps目录下 $NDK/apps/myapp/Application.mk,myapp是一个简称,用于描述你的NDK编译系统的应用程序(这个名字不会生成共享库或者最终的包)。 7.3.4 依赖关系建立 * 针对上述工程需添加的Application.mk文件内容如下: 1 APP_MODULES := JNITest 2 APP_PROJECT_PATH := $(call my-dir)/project Application.
您可能关注的文档
- 自动控制原理(非自动化类)(第2版)第2章 连续系统的数学模型.ppt
- 自动控制原理(非自动化类)(第2版)第1章 绪论.ppt
- 自动控制原理(非自动化类)(第2版)第3章 时域分析法.ppt
- 自动控制原理(非自动化类)(第2版)第5章 PID控制设计方法.ppt
- 自动控制原理(非自动化类)(第2版)第4章 频率法.ppt
- 自动控制原理(非自动化类)(第2版)第6章 离散系统控制理论.ppt
- 自动控制原理(非自动化类)(第2版)第7章 非线性控制系统分析.ppt
- 单片机原理与项目实践—基于C语言-钱宗峰:3第三章 MCS-51单片机指令系统与汇编语言.pptx
- 单片机原理与项目实践—基于C语言-钱宗峰:1第一章 单片机基础知识.pptx
- 单片机原理与项目实践—基于C语言-钱宗峰:2第二章 单片机常用开发软件.pptx
- 2025年广西中考地理二轮复习:专题四+人地协调观+课件.pptx
- 2025年广西中考地理二轮复习:专题三+综合思维+课件.pptx
- 2025年中考地理一轮教材梳理:第4讲+天气与气候.pptx
- 第5讲+世界的居民课件+2025年中考地理一轮教材梳理(商务星球版).pptx
- 冀教版一年级上册数学精品教学课件 第1单元 熟悉的数与加减法 1.1.6 认识1-9 第6课时 合与分.ppt
- 2025年中考一轮道德与法治复习课件:坚持宪法至上.pptx
- 2025年河北省中考一轮道德与法治复习课件:崇尚法治精神.pptx
- 八年级下册第二单元+理解权利义务+课件-2025年吉林省中考道德与法治一轮复习.pptx
- 精品解析:湖南省娄底市2019-2020学年八年级(上)期中考试物理试题(原卷版).doc
- 2025年中考地理一轮教材梳理:第10讲+中国的疆域与人口.pptx
最近下载
- 阳光书院兴义一中小升初语文英语全真模拟仿真试卷1-8(共8套)附详.pdf VIP
- 2024年卫生资格(中初级)-口腔颌面外科学主治医师考试近5年真题集锦(频考类试题)带答案.docx
- 中国纳米碳材料行业运行态势及未来发展趋势预测报告.docx
- 心理课:交往边界感.pptx
- ITSS运维服务目录.docx VIP
- (2015年初中英语综合测试题用括号中动词的适当的形式填空.doc VIP
- 2024年重庆市高中化学竞赛试题高一组(含答案).docx VIP
- 审计:原理与实务(第2版)马春静课后习题答案解析.pdf
- 髌骨不稳MPFL重建课件.pptx VIP
- 保险行业转型培训课程打造创新保险产品与服务模式.pptx
文档评论(0)