从libs中删除armeabi-v7a文件夹后,静态初始化失败

时间:2013-08-26 14:33:09

标签: android opencv

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

但是,由于我的主要目标是支持所有未使用ARM v7 CPU的旧设备,我听说armeabi-v7a has some optimization code使用armeabi应该适用于所有设备,所以我想将其删除减少APK大小。但是在这之后它无法在我的三星Galaxy S3上初始化。

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

提前致谢!

1 个答案:

答案 0 :(得分: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文件大小。