当运行android列表目标时,我得到了ABI:armeabi-v7a
这是什么意思?请提供如何使用的内部细节?
我开发了一个主要使用C++的应用程序,并且.so像往常一样由NDK编译到库中.我们知道必须分别为每个CPU架构构建本机应用程序; 所以,我有不同so的文件armeabi和armeabi-v7a.(我故意冷落x86和mips,因为没有多少与这些架构的Android设备被释放.)
但是,大小非常大,每个so文件占用大约90 MB空间,我想减少它.
我知道我可以省略armeabi-v7a,因为向后兼容,但在这种情况下,应用程序将运行非常缓慢.
考虑到我的应用程序仅支持android ICS及以上(minSdkVersion="14"),我可以安全地删除armeabi并假设所有这些新设备都使用armeabi-v7a?或者某些设备仍然可以使用旧的armeabi而不是armeabi-v7a架构?
该Xamarin文档是对这个有点不清楚.如果我构建我的应用程序只在构建首选项中勾选了armeabi,那么我的应用程序是:
如果它确实运行,是否有任何功能,如使用线程,将导致意外的行为或崩溃?
我有一个简单的应用程序,我试图保持它的小.另外,我没有v7a设备来进行快速实验.
澄清:
虽然似乎很明显的验收,这是"安全的,但没有这么高性能的"编译Android应用程序只与amreabi库(见这个优秀的帖子:为什么在armeabi代码中使用armeabi-V7A代码)时,Xamarin文档上CPU架构,我认为适用于自己编译的.so库,说:
需要记住的是由Xamarin.Android使用的armeabi运行时是线程安全是很重要的.如果具有armeabi支持的应用程序部署到armeabi-V7A设备,将出现许多奇怪的和无法解释的异常.
因为我已经能够测试我的应用程序,只是与armeabi编制了V7A设备上,并没有遇到任何"奇怪和无法解释的异常"呢.
更新:
看起来Xamarin文档已经更新,现在(2014-07-14)读取:
重要的是要记住Xamarin.Android使用的armeabi运行时不是线程安全的.如果将具有armeabi支持的应用程序部署到armeabi-v7a设备,则会发生许多奇怪且无法解释的异常.
我想制作自己的Android应用程序.我使用的是Ubuntu 64bit和IntelliJ.在虚拟设备配置中,它要求我选择系统映像.所有选项都有一个Download旁边,这意味着我没有下载任何系统映像.
Lollipop(API级别21)有3个选项,分别是Armeabi-v7a,x86_64和x86.(我使用的是Ubuntu 64位,所以我不应该使用x86吗?)
任何人都可以解释什么是Armeabi-v7a?Armeabi-v7a和x84_64有什么区别?我应该选择什么"版本"(哪一个运行得更快;))?