0

当我的项目中有 libs/armeabi 文件夹和 libs/armeabi-v7a 文件夹时,一切正常,我可以通过调用 OpenCVLoader.initDebug() 来执行 OpenCV 的静态初始化

但是,由于我的主要目标是支持所有不使用 ARM v7 CPU 的旧设备,我听说armeabi-v7a 有一些优化代码,而仅使用 armeabi 应该适用于所有设备,所以我想删除它以减少APK 大小。但是,在这样做之后,它无法在我的三星 Galaxy S3 上进行初始化。

我做错什么了吗?如何强制它使用 libs/armeabi 进行初始化?

提前致谢!

4

1 回答 1

1

我发现了问题,但我不确定它为什么会这样..

这是因为我的文件夹结构:

/armeabi
   - libabc.so
   - libdef.so
   - libspecial.so

/armeabi-v7a
   - libabc.so
   - libdef.so

因为我的设备使用的是 arm7 cpu,所以最终的 APK 在 libs 文件夹中只包含 libabc.so 和 libdef.so。这就是为什么我无法初始化依赖于 libspecial.so 的 OpenCV。我上面的问题具有误导性,因为我说我删除了 armeabi-v7a 文件夹,但实际上我只删除了 libspecial.so,对此感到抱歉,应该更清楚地提及它。

但是,阅读这篇文章后,我更加困惑.. http://docs.xamarin.com/guides/android/advanced_topics/cpu_architecture 。这篇文章指出,在 4.0.4 版本之后它应该进行合并,我不会有这个问题..哦,好吧。

我通过完全删除 armeabi-v7a 文件夹让它工作,所以一切都在 armeabi 上运行。但我认为这不是一个好主意,因为有些人建议如果我真的想节省 APK 文件大小,我应该为每个架构创建两个单独的 APK 目标。

于 2013-09-01T02:13:37.750 回答