当我的项目中同时包含libs / armeabi文件夹和libs / armeabi-v7a文件夹时,一切正常,我可以通过调用OpenCVLoader.initDebug()来执行OpenCV的静态初始化
但是,由于我的主要目标是支持所有未使用ARM v7 CPU的旧设备,我听说armeabi-v7a has some optimization code使用armeabi应该适用于所有设备,所以我想将其删除减少APK大小。但是在这之后它无法在我的三星Galaxy S3上初始化。
我做错了什么吗?如何使用libs / armeabi强制它初始化?
提前致谢!
答案 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文件大小。