我们在android上有一个c ++项目,它将内置到.a中,然后将.a发布给我们的用户。
问题是,我们有很多资源文件,而这些资源'路径是必要的,因为一些第三方库需要它们。
Android的限制是:如果我们想在Android APK中放置一个文件,我们必须将它打包在res或资产中,而不再是单个文件,那么我们如何组织我们的资源呢?
我们的计划是要求我们的用户将我们的资源打包到APK的资产中,然后我们可以将它们提取到其他文件夹,但它不是用户友好的,您有更好的想法吗?< / p>
感谢
答案 0 :(得分:2)
C ++ android项目,听起来很奇怪,可能是,你想说你有c ++ arm交叉编译的静态库.a它可以在Android项目中加载。
我想你想共享一个使用很多资源的库,你需要优雅的分发方式。
尝试创建一个具有本机功能的.jar文件:
首先创建核心类导出函数并定义你的 JNI的公共本地功能。
如果您需要访问活动上下文,请不要使用活动 通过参数。
如果您想使用资源,您的布局将无法使用 你父的android项目。
您可以使用可绘制文件,并且可以以编程方式添加布局文件(使用活动上下文)。
如果您要使用某些资源,例如xml配置文件,请执行 在res / raw文件夹或assets文件夹中。
如果您具备良好的Java和JNI技能,那么这项任务就不那么困难了。
希望这些建议可以帮到你。
干杯。
答案 1 :(得分:2)
我认为您需要开发 NativeActivity 。如果您按照proper documentation进行操作,则可以创建一个可以执行任何操作的应用程序。如果您想打开资产,处理,您可以执行此操作,并从另一个应用程序启动此应用程序。
如果您真的想要使用单个库,只需在c / cpp中执行,并使用提供资产路径和aassetmanager的JNI函数调用对其进行初始化,并使用本机中的AAssetManager object。您需要包含jni.h,当然您需要使用NDK工具链和gradle或cmake工具链脚本来交叉编译库。