2

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 の問題を処理するためのより洗練された、または推奨される方法はありますか?

4

2 に答える 2