如何在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 桥,因为 onPause
和 onResume
可以完全本地处理。 Cordova 层甚至不需要知道它。
【讨论】:
以上是关于如何在android中使用cordova在后台打包和执行二进制文件?的主要内容,如果未能解决你的问题,请参考以下文章
cordova-ionic 应用程序在后台进行地理定位 - android 和 ios
Vue3.0入门 + Vant3.0移动端实践使用Cordova打包Android App
使用 jenkins 自动化编译cordova for android 生成 APK