我问的原因与谷歌最近关于需要支持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构建。
没有“安装为32位”或“安装为64位”这样的事情。我会试着解释一下。这有点复杂,并且您没有提供有关您的应用的许多详细信息。您选择构建应用程序的方式有几种可能性。
lib/
子目录你应该是空的。lib/
下的多个子目录,其名称如x86
,armeabi-v7a
等lib/
目录只包含armeabi-v7a
作为子目录。 x86,x86-64和64位ARM都模拟32位ARM。顺便说一下,我强烈推荐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匹配的正确部件。