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

How to package and execute a binary in background with cordova in android?

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

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

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

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

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

将文件放在 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>