unused resourcesがapkに含まれるのかどうか確認する

概要

実際にはlocalのリソースではなく、ネットワーク経由で画像取得したいときなど、 レイアウト調整のときにサンプルの画像を表示したほうがわかりやすいのでtools属性にsrcに設定していた。 レイアウト調整のときのみに使用するが、実際にプロダクトでは不要なリソースがbuild時に削除されているのか気になったので調べてみた。

調査

image_003_unuse.pngをサンプルデータとして使用 下記toolsとして設定してる検索結果 f:id:atsumo:20180724102022p:plain

実際にapp-debug.apkをbuild -> apk をzipに変換

結果

zipの中身を確かめる

zipinfo app-debug.zip | grep unuse
-rw----     2.4 fat   191359 b- stor 80-000-00 00:00 res/drawable/image_003_unuse.png

入ってる...

Android StudioBuild > Analyze APK... でも確かめてみた 

f:id:atsumo:20180724102946p:plain

tools属性への設定をやめたらどうなるか?

tools属性に指定していた部分を削除した f:id:atsumo:20180724105808p:plain

新しいapkを作成後 Build > Analyze APK...をもう一度実行 f:id:atsumo:20180724105950p:plain

入ってる...(二度目)

メモ

imageを参照した時点でR.javaResIdが生成されるから、その時点でもうリソースとして考えられるってことかな? aabビルドするとリソースをうまく端末に適したものとして提供してくれるようになるが、とわいえ今回みたいな事例だとそれに対応しないだろうということで使ってないものは消さないとなっていう結論

github.com konifarさんのunuesd_resourcesを削除するgradleも便利なので貼っておきます。