在64位Android设备上从Google Play商店安装应用时,如果应用支持,应用是否会以64位安装?

问题描述 投票:0回答:1

我问的原因与谷歌最近关于需要支持64位设备的应用程序的https://developer.android.com/distribute/best-practices/develop/64-bit沟通有关。我非常有信心我的应用程序支持基于文章中提到的建议的64位设备。当我从Google Play安装它时,它的工作方式完全符合预期,但是当我在64位硬件上使用ADB命令在本地测试APK时(正如Google在本节“在64位硬件上测试应用程序”中所建议的那样),应用程序有UI问题。我不确定为什么它表现得不一致。

是否有可能在使用Google Play时以某种方式安装32位版本,因此工作正常?我担心我的应用程序在真正安装为64位时可能确实存在问题,因此任何有关上述不一致性的说明都将受到赞赏。

我正在测试的设备是运行Android 7.0的'Moto X Pure Edition'。它有一个使用ARM架构的Snapdragon 808 CPU。另一方面,我们没有看到任何'/ lib'文件夹,因为谷歌文章建议检查。我们的应用程序是混合的,使用Ionic v3构建。

android google-play apk adb 32bit-64bit
1个回答
3
投票

没有“安装为32位”或“安装为64位”这样的事情。我会试着解释一下。这有点复杂,并且您没有提供有关您的应用的许多详细信息。您选择构建应用程序的方式有几种可能性。

  1. 您的应用中没有本机代码(没有.so库)。它完全用Java或Kotlin编写,您使用的任何第三方库都不使用本机代码。在这种情况下,你的APK的lib/子目录你应该是空的。
  2. 您的应用程序中确实有本机代码,但您有所有ABIs的.so文件(库)。在这种情况下,在你的APK中,您希望在APK中看到lib/下的多个子目录,其名称如x86armeabi-v7a
  3. 您的应用程序中有本机代码,但您依靠ABI兼容性来工作。那是你的lib/目录只包含armeabi-v7a作为子目录。 x86,x86-64和64位ARM都模拟32位ARM。
  4. 您为应用的每个版本制作了多个APK,每个ABI一个。通常被称为multi-APK。因此有一个用于64位ARM,一个用于32位ARM,一个用于X86,一个用于X86 64位等。
  5. 您使用Android App Bundle,让Google Play选择如何投放您的应用。

顺便说一下,我强烈推荐5作为选项,这使得它更有可能发生正确的事情。

在1的情况下,32位或64位无关紧要。任何UI问题都是由其他原因造成的。也许64位手机分配了更多的内存,你的应用程序在低内存中表现不佳。也许64位手机有点快,你已经用竞争条件编写了你的​​代码。无论是什么,64对32位不是根本原因。

在2的情况下,Google Play会为每部手机安装相同的APK。但设备本身会根据处理器选择加载哪个库(.so文件)。如果你的某个库在64位上有问题可能是问题。

在3的情况下,这是谷歌最新的博客文章试图阻止。对于新的APK,不允许发布此内容。您需要通过添加64位本机库来正确支持64位设备。如果是这种情况,您可以通过让设备在64位(可能是X86)设备上模拟32位arm来获得糟糕的UI性能。您应该切换到其他选项,我建议5.顺便说一句,这可能不是您,它可能是您依赖的第三方库。

在4的情况下,Google Play会根据处理器类型为不同的设备安装不同的APK。每个不同的APK都有不同的版本代码。具有64位处理器的设备将获得具有64位库的APK。如果您通过使用adb将32位版本代码放在64位设备上进行测试,那么您确实可能会遇到错误。但是,如果您要为不同的API构建和发布不同的APK,您就会知道它。只需使用adb安装正确的版本代码即可。

在5的情况下,Google会将不同的APK(实际上是多个不同的APK拆分)安装到不同的设备上。为了测试它,我建议使用Google Play internal test track来验证是否安装了与Google Play匹配的正确部件。

© www.soinside.com 2019 - 2024. All rights reserved.