При использовании комплектов приложений Android устройства, устанавливающие приложение из Play Store, получают только те ресурсы, которые им необходимы.
В то же время Google также продвигается вперед с помощью своего совместного использования автономных p2p-приложений, используя приложения «ShareIt» и «Files Go by Google». https://android -developers.googleblog.com / 2018/10 / оффлайн-p2p-инсталлирует-beta.html
Наше приложение использует несколько изображений .png, в которых есть ресурсы для каждого drawable-dpi от ldpi до xxxhdpi, но даже в этом случае мы начали получать множество сбоев $ NotFoundException ресурсов из-за того, что пакет apk обменивался автономно с устройствами. требующие разных ресурсов.
После поиска решения я нашел только ответы от разработчика Google Play:
Я подозреваю, что в конечном итоге веб-сайты и программы обмена P2P
научиться лучше делиться такими APK, чтобы не тратить слишком много времени
беспокоиться об этом.
Пакет приложений Android представляет сбой Resource Not found в приложении Android
Приложение иногда аварийно завершает работу с ресурсами $ NotFoundException после переключения на распределение пакетов приложений для Android
В то же время наша статистика падений Play Console становится все ближе и ближе к «Порогу плохого поведения» из-за медленно растущего числа сбоев ресурсов $ NotFoundException после того, как мы переключились на Пакеты приложений. Около 1% наших пользователей делятся приложением в автономном режиме.
Единственный способ избежать этого, о котором мы можем подумать прямо сейчас, - это либо:
- После запуска приложения проверьте, что packageManager.getInstallerPackageName для приложения «com.android.vending», что означает, что оно поступило из Play Store, и перенаправьте их для повторной установки из Play Store, если это не так, что гарантирует, что Play Store предоставляет этому устройству правильные ресурсы пакета. Однако это полностью сводит на нет преимущества совместного использования автономных p2p-приложений.
OR
- Вернитесь к использованию apks вместо пакетов приложений.
Третьим вариантом может быть обеспечение того, чтобы все ресурсы изображения были независимыми от dpi векторными объектами рисования, но это не очень реалистично, поскольку ресурсы изображений не всегда достаточно просты, чтобы быть векторными объектами рисования.
Есть ли более элегантный или рекомендуемый способ решения этой проблемы ресурсов $ NotFoundException с пакетами приложений Android и совместным использованием p2p-приложений в автономном режиме, или кто-нибудь сталкивался с лучшими обходными путями, чтобы помочь предотвратить их?