【问题标题】:How do I know what target Architectures to choose?我怎么知道要选择什么目标架构?
【发布时间】:2017-08-02 15:40:04
【问题描述】:

我正在构建我的 Xamarin.Android 项目,并且我选择了 AOT 编译,它使我的 .apk 膨胀到 165mb。

为了减小 .apk 的大小,我正在研究目标架构,目前我的目标是:

armeabi、armeabi-v7、x86、arm64-v8a

但我不知道这些架构如何与现代设备相对应。

我已经阅读了Android CPU Architectures,上面写着:

Xamarin.Android 默认为 armeabi-v7a 用于发布版本。这 设置提供比 armeabi 更好的性能。如果你 面向 64 位 ARM 平台(例如 Nexus 9),请选择 arm64-v8a。如果要将应用程序部署到 x86 设备,请选择 x86。 如果目标 x86 设备使用 64 位 CPU 架构,请选择 x86_64。

因此我需要针对 armeabi 和 armeabi-v7 吗?

现代 Android 平板电脑和手机应该针对哪些架构?

【问题讨论】:

  • 我取决于您...假设您排除 x86,那么您的应用程序将不会显示给拥有基于 Intel 的设备(ASUS、Acer、Hp、Lenovo、Dells 等)的用户。Android平板电脑使用英特尔凌动)。当前使用的 ABI 的设备编号细分是多少?谷歌不发布这个统计数据,他们只在他们的仪表板上发布 API 级别的统计数据。就我个人而言,我处理的大多数客户都会为每个 ABI 发布单独的 APK,因此每个 APK 对于 Xamarin 应用程序来说都是最小的。如果您手动进行,这会为您的构建/发布过程增加更多工作......
  • .... 排除 arm64-v8a 和更新的 Nexus 将使用 armeabi-v7a,但运行速度会慢一些,等等...为单个 App Id 发布单独的 APK:developer.android.com/google/play/publishing/multiple-apks.html
  • @SushiHangover 我办公室里有 Nexus 9,所以我会尝试排除 arm64-v8a 看看会发生什么。我目前正在使用VSTSGoogle play extension 发布我的应用程序。我认为他们不允许您为不同的 ABI 上传多个 apk,这很烦人
  • 我也刚刚意识到我的办公室里有一个联想标签。当 x86 未选中时,这可能不起作用
  • 是的,联想现在确实有一些基于 ARM 的平板电脑,但大多数都是基于 Atom 的......从长远来看,从单个 APK 中排除 ABI 将再次减少您的潜在用户群,您的选择基于应用程序及其目标市场,我拥有的唯一不发布所有 ABI 的真实客户是针对专用设备的客户(即集成条形码设备、销售点设备等......)

标签: android xamarin xamarin.android cpu-architecture


【解决方案1】:

armeabi 用于旧设备,因为大多数新设备运行armeabi-v7。其次,64 位设备可以回退到其他 ABI。如果您担心大小,那么您最好的选择是创建多个 apk:

https://developer.xamarin.com/guides/android/application_fundamentals/cpu_architectures/#Targeting_Multiple_Platforms

虽然 Google 建议使用单个 APK,但情况并非总是如此:

尽管我们鼓励您开发和发布一个支持尽可能多的设备配置的 APK,但有时这样做是不可能的。为了帮助您为尽可能多的设备发布应用程序,Google Play 允许您在同一应用程序列表下发布多个 APK。然后,Google Play 根据您在每个 APK 的清单文件中声明的配置支持将每个 APK 提供给相应的设备。

https://developer.android.com/google/play/publishing/multiple-apks.html

【讨论】:

  • 我找到了Android-x86 devices 的列表,从这个quora 链接看来,armeabi-v7 是在 2012 年推出的,所以armeabi 必须适用于 2012 年之前的设备。我已经为其他人添加了这些链接。如果我错了纠正我。我最终得到了armeabi-v7arm64-v8a,即使我仍然是 99mb,所以需要调查您发布的链接
猜你喜欢
  • 1970-01-01
  • 2013-10-06
  • 2017-08-04
  • 1970-01-01
  • 2011-06-24
  • 2014-02-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-11
相关资源
最近更新 更多