Android App Bundle を使用すると、Play ストアからアプリをインストールするデバイスは、必要なリソースのみを受け取ります。
同時に、Google は「ShareIt」および「Files Go by Google」アプリを使用したオフライン p2p アプリ共有も進めています。https://android-developers.googleblog.com/2018/10/offline-p2p-installs-beta.html
私たちのアプリは、ldpi から xxxhdpi までの各ドローアブル dpi のリソースを持ついくつかの .png 画像を使用していますが、それでも、さまざまなリソースを必要とするデバイスにバンドル apk がオフラインで共有されているため、多くの Resources$NotFoundException クラッシュが発生し始めています。 .
解決策を検索した後、次のような Google Play 開発者からの回答しか見つかりませんでした。
長い目で見れば、ウェブサイトや P2P 共有プログラムは、そのような APK を適切に共有できるようになるのではないかと思うので、あまり長く心配することはありません。
Android アプリ バンドルは、Android アプリで Resource Not Found クラッシュを導入します
Android アプリ バンドル配布に切り替えた後、アプリが Resources$NotFoundException でクラッシュすることがある
その間、App Bundle に切り替えた後、Resources$NotFoundException クラッシュの数が徐々に増加しているため、Play Console のクラッシュ統計は「不適切な動作のしきい値」にどんどん近づいています。ユーザーの約 1% がアプリをオフラインで共有しているようです。
これを回避する唯一の回避策は、現在考えられる次のいずれかです。
- アプリの起動時に、アプリの packageManager.getInstallerPackageName が「com.android.vending」であることを確認します。これは、それが Play ストアからのものであることを意味します。そうでない場合は、Play ストアから再インストールするようにリダイレクトします。 Play ストアは、そのデバイスに正しいバンドル リソースを提供します。ただし、これはオフライン p2p アプリ共有の利点を完全に無効にします。
また
- アプリ バンドルの代わりに apk を使用するように戻します。
3 番目のオプションは、すべての画像リソースが dpi に依存しないベクター型ドローアブルであることを確認することですが、画像リソースは常にベクター型ドローアブルになるほど単純であるとは限らないため、これはあまり現実的ではありません。
Android アプリ バンドルとオフライン p2p アプリ共有でこの Resources$NotFoundException の問題を処理するためのより洗練された、または推奨される方法はありますか?