当前位置: 首页 > news >正文

攀枝花移动网站建设wordpress 广州

攀枝花移动网站建设,wordpress 广州,微商城平台哪个好,零食店网站构建策划报告Android NDK开发详解之JNI中的库文件 简介工作原理流程原生 activity 和应用 简介 本部分简要介绍了 NDK 的工作原理。Android NDK 是一组使您能将 C 或 C#xff08;“原生代码”#xff09;嵌入到 Android 应用中的工具。能够在 Android 应用中使用原生代码对于想执行以下… Android NDK开发详解之JNI中的库文件 简介工作原理流程原生 activity 和应用 简介 本部分简要介绍了 NDK 的工作原理。Android NDK 是一组使您能将 C 或 C“原生代码”嵌入到 Android 应用中的工具。能够在 Android 应用中使用原生代码对于想执行以下一项或多项操作的开发者特别有用 在平台之间移植其应用。重复使用现有库或者提供其自己的库供重复使用。在特定情况下提高性能特别是像游戏这种计算密集型应用。工作原理 本部分介绍了在为 Android 构建原生应用时使用的主要组件并且介绍了构建和封装过程。 主要组件 在构建应用时您应该已经了解以下组件 原生共享库NDK 从 C/C 源代码构建这些库或 .so 文件。原生静态库NDK 也可构建静态库或 .a 文件而您可将静态库关联到其他库。Java 原生接口 (JNI)JNI 是 Java 和 C 组件用于相互通信的接口。本指南假设您具备 JNI 知识如需了解相关信息请查阅 Java 原生接口规范。应用二进制接口 (ABI)ABI 可以非常精确地定义应用的机器代码在运行时应该如何与系统交互。NDK 根据这些定义构建 .so 文件。不同的 ABI 对应不同的架构NDK 为 32 位 ARM、AArch64、x86 及 x86-64 提供 ABI 支持。如需了解详情请参阅 Android ABI。清单如果您编写的应用不包含 Java 组件必须在清单中声明 NativeActivity 类。要详细了解如何执行此操作请参阅使用 native_activity.h 接口。 流程 为 Android 开发原生应用的一般流程如下 设计应用确定要使用 Java 实现的部分以及要以原生代码形式实现的部分。注意虽然可以完全避免使用 Java但您可能会发现 Android Java 框架对于控制显示和界面等任务很有用。像创建任何其他 Android 项目一样创建一个 Android 应用项目。如果要编写纯原生应用请在 AndroidManifest.xml 中声明 NativeActivity 类。如需了解详情请参阅原生 activity 和应用。在“JNI”目录中创建一个描述原生库包括名称、标记、关联库和要编译的源文件的 Android.mk 文件。或者您也可以创建一个配置目标 ABI、工具链、发布/调试模式和 STL 的 Application.mk 文件。对于其中任何您未指明的项将分别使用以下默认值ABI所有非弃用的 ABI模式发布STL系统将原生源代码放在项目的 jni 目录下。使用 ndk-build 编译原生.so、.a库。构建 Java 组件生成可执行 .dex 文件。将所有内容封装到一个 APK 文件中包括 .so、.dex 以及应用运行所需的其他文件。原生 activity 和应用 Android SDK 提供了辅助类 NativeActivity可用于编写完全原生的 activity。NativeActivity 可处理 Android 框架与原生代码之间的通信因此您不必子类化该类或调用其方法而只需在 AndroidManifest.xml 文件中将您的应用声明为原生应用然后开始创建该原生应用。 使用 NativeActivity 的 Android 应用仍会在其自己的虚拟机中运行与其他应用以沙盒的形式分隔。因此您仍可通过 JNI 访问 Android 框架 API。在某些情况下例如对于传感器、输入事件和资源NDK 提供可使用的原生接口而无需通过 JNI 调用。如需详细了解此类支持请参阅原生 API。 无论是否要开发原生 activity我们都建议使用传统 Android 构建工具创建项目。这样有助于确保使用正确的结构构建和封装 Android 应用。 Android NDK 为实现原生 activity 提供两个选项 native_activity.h 头文件会定义 NativeActivity 类的原生版本。其中包含创建原生 activity 所需的回调接口和数据结构。由于应用的主线程会处理回调因此回调实现不能阻止主线程否则可能会收到 ANR应用无响应错误因为主线程在回调返回之前无响应。android_native_app_glue.h 文件会定义基于 native_activity.h 接口构建的静态辅助库。它会派生出另一个线程用于处理事件循环中的回调或输入事件等。将这些事件移至单独的线程可防止任何回调阻止主线程。此外ndk_root/sources/android/native_app_glue/android_native_app_glue.c 源代码也可供使用使您能够修改实现。 如需详细了解如何使用此静态库请查看原生 activity 示例应用及其文档。ndk_root/sources/android/native_app_glue/android_native_app_glue.h 文件中的注释提供了更多其他信息。 使用 native_activity.h 接口 要使用 native_activity.h 接口实现原生 activity请执行以下操作 在项目的根目录中创建一个 jni/ 目录。此目录用于存储所有原生代码。在 AndroidManifest.xml 文件中声明原生 activity。由于您的应用没有 Java 代码因此请将 android:hasCode 设为 false。application android:labelstring/app_name android:hasCodefalse您必须将 activity 标记的 android:name 属性设置为 NativeActivity。 activity android:nameandroid.app.NativeActivityandroid:labelstring/app_name注意您可以子类化 NativeActivity。如果子类化该类请使用子类的名称而不是 NativeActivity。 meta-data 标记的 android:value 属性会指定共享库的名称其中包含应用的入口点例如 C/C main省略库名的 lib 前缀和 .so 后缀。 manifestapplicationactivitymeta-data android:nameandroid.app.lib_nameandroid:valuenative-activity /intent-filteraction android:nameandroid.intent.action.MAIN /category android:nameandroid.intent.category.LAUNCHER //intent-filter/activity/application /manifest创建用于原生 activity 的文件并实现 ANativeActivity_onCreate 变量中指定的函数。应用在原生 activity 启动时会调用此函数。此函数类似于 C/C 中的 main它会接收 ANativeActivity 结构的指针其中包含您需要编写的各个回调实现的函数指针。在 ANativeActivity-callbacks 中设置回调实现的适用回调函数指针。 将 ANativeActivity-instance 字段设置为您要使用的特定数据的任何实例的地址。 实现您希望 activity 在启动时执行的任何其他操作。 实现您在 ANativeActivity-callbacks 中设置的其余回调。如需详细了解何时调用回调请参阅管理 activity 生命周期。 开发应用的其余部分。 在项目的 jni/ 目录中创建 Android.mk file向构建系统描述您的原生模块。如需了解详情请参阅 Android.mk。 创建 Android.mk 文件后使用 ndk-build 命令编译原生代码。 cd path/to/project $NDK/ndk-build像平常一样构建和安装 Android 项目。如果原生代码存放在 jni/ 目录中构建脚本会自动将从原生代码构建的 .so 文件封装到 APK 中。
http://www.zqtcl.cn/news/727988/

相关文章:

  • 做纸棋的网站制作什么网站做毕业设计
  • 上海易雅达网站建设公司广元网站开发
  • 网站备案注销北京优化健康宝
  • 网站地图怎么做XML深圳公共资源交易中心
  • 高碑店做网站的公司湛江专业建站推荐
  • 中国建设银行官网的网站首页c2c电子商务网站建设栏目结构图
  • 做网站的软件图标上海建站外贸
  • 保定网站建设推广成都移动端网站建设
  • 服务平台型网站做那个网站比较好
  • 网站做icp备案需要多久上海人才引进官网
  • 国外的设计网站app有什么好的免费网站做教育宣传语
  • 做期货都看那些网站淮北网
  • 网站建设的需求怎么写网站头条怎么做
  • 宜春seoseo网站自动推广
  • 张家界酒店网站建设人人设计网网址
  • 电脑系统做的好的网站什么网站做一手房好
  • 为什么用MyEclipse做网站上海境外输入
  • 做的比较好的小众网站go 是做网站的吗
  • 手机网站快速建设网站接入支付宝需要网站备案吗
  • 贵州省住房城乡建设厅网站农业营销型网站源码
  • 网站开发使用哪种语言wordpress 免费主机
  • 山东免费网站制作绿色食品网站模板
  • 做搜狗网站优化点广州网站开发人
  • 网站建设违法行为广东seo快速排名
  • 体育彩票网站开发该做哪些步骤深圳网站建设策划方案
  • 金华网站建设电话做网站用虚拟机还是服务器
  • 整容医院网站建设目的顺企网贵阳网站建设
  • 微网站 htmlseo做的好的网站
  • 免费做网站推荐东平网页设计
  • 所有复刻手表网站wordpress 标题简码