unused resourcesがapkに含まれるのかどうか確認する
概要
tools:hogehoge = とかで指定しているものもapkの中に入るのかな?
— atsumo (@atsumo) July 23, 2018
実際にはlocalのリソースではなく、ネットワーク経由で画像取得したいときなど、 レイアウト調整のときにサンプルの画像を表示したほうがわかりやすいのでtools属性にsrcに設定していた。 レイアウト調整のときのみに使用するが、実際にプロダクトでは不要なリソースがbuild時に削除されているのか気になったので調べてみた。
調査
image_003_unuse.png
をサンプルデータとして使用
下記toolsとして設定してる検索結果
実際に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 StudioのBuild > Analyze APK...
でも確かめてみた
tools属性への設定をやめたらどうなるか?
tools属性に指定していた部分を削除した
新しいapkを作成後 Build > Analyze APK...
をもう一度実行
入ってる...(二度目)
メモ
imageを参照した時点でR.java
にResId
が生成されるから、その時点でもうリソースとして考えられるってことかな?
aabビルドするとリソースをうまく端末に適したものとして提供してくれるようになるが、とわいえ今回みたいな事例だとそれに対応しないだろうということで使ってないものは消さないとなっていう結論
github.com konifarさんのunuesd_resourcesを削除するgradleも便利なので貼っておきます。