如何在 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 桥,因为 onPause
和 onResume
可以完全在本机处理。 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>
正在尝试 运行 一个在后台使用 cordova 的可执行 .so 文件。我有一个“lib”文件夹,其中包含文件夹“arm64-v8a”、“ameabi-v7a”和“x86_64”这三个文件夹包含用于匹配架构(arm 等)的可执行 .so 文件
如何将它们打包到 cordova 应用程序中?我可以简单地将“lib”目录放入 cordova 应用程序的“www”目录吗?然后构建它,然后将它复制到我可以在 android 中执行它的地方?这样的地方/文件夹是什么,我该怎么做? 那么我如何 运行 它在后台并在 cordova 应用程序完全关闭时停止它?
Cordova 只是一个 WebView。你能用它做的范围是相当有限的。从不稳定的后台执行到您无法直接访问本机代码的一切。
您可以做的是创建一个单独的 Cordova 插件,在 android 上执行它。在模块内部的 npm
级别,您可以确保复制二进制文件并计划其在本机级别的执行。
您甚至不需要编写 Cordova 桥,因为 onPause
和 onResume
可以完全在本机处理。 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>