如何在android中使用cordova在后台打包和执行二进制文件?

Posted

技术标签:

【中文标题】如何在android中使用cordova在后台打包和执行二进制文件?【英文标题】:How to package and execute a binary in background with cordova in android? 【发布时间】:2021-09-20 22:27:10 【问题描述】:

尝试在后台运行带有 cordova 的可执行 .so 文件。我有一个“lib”文件夹,其中包含文件夹“arm64-v8a”、“ameabi-v7a”和“x86_64”这三个文件夹包含匹配架构(arm 等)的可执行 .so 文件

如何将它们打包到 cordova 应用程序中?我可以简单地将“lib”目录放入cordova应用程序的“www”目录中吗?然后构建它,然后将它复制到我可以在android中执行它的地方?什么是这样的地方/文件夹,我该怎么做? 那么我将如何在后台运行它并在cordova应用程序完全关闭时停止它?

【问题讨论】:

【参考方案1】:

将文件放在 www 文件夹中不会有任何作用,您应该将文件放在本机项目中的正确文件夹中,但在 Cordova 应用程序中并不建议这样做,您应该创建一个复制和使用文件的插件。

插件应该有一个plugin.xml 文件将.so 文件复制到本机项目,例如:

<platform name="android">
    <source-file src="libs/arm64-v8a/yourlibrary.so" target-dir="src/main/jniLibs/arm64-v8a/" />
    <source-file src="libs/armeabi-v7a/yourlibrary.so" target-dir="src/main/jniLibs/armeabi-v7a/" />
    <source-file src="libs/x86_64/yourlibrary.so" target-dir="src/main/jniLibs/x86_64/" />
</platform>

【讨论】:

这是否也运行 .so 文件?它必须作为后台进程运行。 不,只是将其复制到您的项目中。 .so 只是一个库,您需要编写使用该库的代码。【参考方案2】:

Cordova 只是一个 WebView。你可以用它做的范围是相当有限的。从不稳定的后台执行到您无法直接访问本机代码这一事实。

您可以做的是创建一个单独的 Cordova 插件,在 android 上执行它。在模块内部的npm 级别上,您可以确保复制二进制文件并在本机级别上计划其执行。

您甚至不需要编写 Cordova 桥,因为 onPauseonResume 可以完全本地处理。 Cordova 层甚至不需要知道它。

插件开发指南:https://cordova.apache.org/docs/en/10.x/guide/hybrid/plugins/ 看看其他插件如何处理复制本机二进制文件:https://www.npmjs.com/package/cordova-plugin-scanbot-sdk

【讨论】:

以上是关于如何在android中使用cordova在后台打包和执行二进制文件?的主要内容,如果未能解决你的问题,请参考以下文章

如何在Android后台服务中运行cordova插件?

cordova-ionic 应用程序在后台进行地理定位 - android 和 ios

Vue3.0入门 + Vant3.0移动端实践使用Cordova打包Android App

使用 jenkins 自动化编译cordova for android 生成 APK

cordova+vue 项目打包成Android(apk),启动黑屏问题

如何使用ionic打包android的apk