問題
過去にリリースしたアプリに取り込んでいる各種ライブラリの最新化などメンテしていた際に
proguardまわりを見直していたら、突如画像が出力されなくなった。
画像1.正しく表示されている例
画像2.正しく表示されていない例
原因・解決方法
build.gradle(:app)のbuildTypesに「shrinkResources true」を追加したことが原因。
これを削除したことで問題なく画像が出力されるようになった。
分析とか
参考:https://developer.android.com/studio/build/shrink-code?hl=ja
「shrinkResources true」を追加すると
リソースの圧縮という機能が有効になるらしいのだが
プログラム的に参照されていないと判断されたリソースは削除されるらしい。
本アプリは、実行時に定義された画像ファイル名文字列を元に
リソースIDを取得して画像表示する実装となっているため
参照されていない画像として判断されてしまった模様(細かい動きはわからないけど……)
同様に別のアプリでもビルド時に「string.xml」で定義している文字列が削除されているっぽかったので
そちらもこの「shrinkResources true」が原因かも。。