将特定于设备的文件添加为代号one native lib

Adding device-specific files as a codenameone native lib

我想将特定于设备的本机代码添加到我的本机 android 库中。

所以,换句话说,我有一个包含 *.so 个文件的文件夹:

然后我有一个单独的 CN1Lib 应用程序,其本机代码包含多个库。示例应用程序显示此文件夹与正常的 .jar 库一起添加,所以我对代号 one 做了同样的事情:

soFolder包含所有 so 文件(根据示例 android 应用正确命名)。

然后我构建了这个CN1Lib,并将它添加到lib文件夹下的主项目中,这样就可以了。 但是,当我检查 codenameone APK 并将其与示例 android 应用程序进行比较时,.so 文件位于不同的位置。示例应用程序将它放在根目录的 lib 文件夹下,codenameone 应用程序将它放在 assets 文件夹下。这会导致需要这些文件的设备无法找到它们。

示例应用在左侧,代号为 one 的应用在右侧。

有什么方法可以使用codenameone获取apk文件中lib文件夹下的so文件夹吗?

感谢您的帮助。

我没有做过这么多,所以我不是这里的大专家,但据我了解,您需要在 Android Studio 中创建一个 AAR 文件并使用它。基于开发人员指南部分 here

如果您不想经历创建 AAR 的麻烦,可以使用半解决方案。

您可以创建一个普通的 android 库项目,并在构建它之后,手动打开存档并将 lib 文件夹放入其中。然后将此 jar 文件添加为本机 android 依赖项。

当从 codenameone 构建 returns 时,文件夹应该位于 apk 文件中:)

正确的方法很可能是 AAR 方法,但它不是一次性解决方案那么直接。