При установке приложения из магазина Google Play на 64-разрядное устройство Android, приложение устанавливается как 64-разрядное, если приложение поддерживает его? - PullRequest
0 голосов
/ 12 февраля 2019

Причина, по которой я спрашиваю, связана с недавним сообщением Google https://developer.android.com/distribute/best-practices/develop/64-bit относительно приложений, нуждающихся в поддержке 64-разрядных устройств.Я вполне уверен, что мое приложение поддерживает 64-битные устройства, основываясь на предложениях, упомянутых в статье.Когда я устанавливаю его из Google Play, он работает точно так, как ожидалось, однако, когда я тестирую APK локально, используя команду ADB на 64-битном оборудовании (как Google предложил в этом разделе «Тестирование вашего приложения на 64-битном оборудовании»), мойприложение имеет проблемы с пользовательским интерфейсом.Я не уверен, почему он ведет себя противоречиво.

Возможно ли, что каким-то образом 32-разрядная версия устанавливается при использовании Google Play и, следовательно, работает нормально?Я обеспокоен тем, что мое приложение может действительно иметь проблемы при истинной установке в 64-разрядной версии, поэтому любые разъяснения о несоответствиях, описанных выше, будут оценены.

Устройство, с которым я тестирую, - это Moto X Pure Edition.под управлением Android 7.0.Он имеет процессор Snapdragon 808, который использует архитектуру ARM.С другой стороны, мы не видим никакой папки '/ lib', которую предлагает проверить статья Google.Наше приложение является гибридным, построено с использованием Ionic v3.

1 Ответ

0 голосов
/ 13 февраля 2019

Не существует такой вещи, как «установка как 32-битная» или «установка как 64-битная».Я постараюсь объяснить.Это становится немного сложнее, и вы не предоставляете много деталей о вашем приложении.Есть несколько вариантов того, как вы решили создать свое приложение.

  1. У вас нет собственного кода в вашем приложении (нет .so библиотек).Он был полностью написан на Java или Kotlin, и ни одна из сторонних библиотек, которые вы используете, также не использует нативный код.В этом случае подкаталог lib/ вашего APK должен быть пустым.
  2. У вас есть собственный код в вашем приложении, но у вас есть .so файлы (библиотеки) для всех ABI .В этом случае в вашем APK вы ожидаете увидеть несколько подкаталогов под lib/ в вашем APK с именами вроде x86, armeabi-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 и позволяете Google Playвыберите способ доставки вашего приложения.

Кстати, я настоятельно рекомендую 5 в качестве опции, так как это повышает вероятность того, что произойдет что-то правильное.

Вслучай 1, 32 или 64 бит не имеет значения.Любые проблемы с пользовательским интерфейсом вызваны чем-то другим.Может быть, 64-битный телефон выделяет немного больше памяти, и ваше приложение не работает хорошо при нехватке памяти.Может быть, 64-битный телефон немного быстрее, и вы написали свой код с условиями гонки.Как бы то ни было, 64 против 32 бит не является основной причиной.

В случае 2, Google Play устанавливает один и тот же APK на каждый телефон.Но само устройство выбирает, какую библиотеку (.so файл) загрузить, основываясь на процессоре.Если одна из ваших библиотек глючит в 64-битной системе, это может быть проблемой.

В случае с 3 это то, что пытается остановить последняя запись в блоге Google.Это не будет разрешено публиковать для новых APK.Вы должны правильно поддерживать 64-битные устройства, добавляя 64-битные собственные библиотеки.Если бы это было так, вы могли бы получить плохую производительность пользовательского интерфейса, если бы устройство имитировало 32-битную руку на 64-битном (возможно, X86) устройстве.Вы должны переключиться на какой-то другой вариант, я бы порекомендовал 5. Возможно, это не вы, это может быть какая-то сторонняя библиотека, от которой вы зависите.

В случае 4, Google Play устанавливаетразные APK для разных устройств в зависимости от типа процессора.Каждый отдельный APK имеет свой код версии.Устройство с 64-битным процессором получит APK с 64-битными библиотеками.Если вы тестируете, помещая 32-битный код версии на 64-битное устройство с помощью adb, вы действительно можете получить ошибки.Однако, если бы вы создавали и публиковали разные APK для разных API, вы бы это знали.Просто установите правильный код версии с помощью adb.

. В случае 5 Google установит разные APK (фактически несколько разных APK-расщеплений) на разные устройства.Чтобы проверить его, я рекомендую использовать внутреннюю тестовую дорожку Google Play , чтобы проверить, установлены ли именно те компоненты, которые соответствуют Google Play.

...