iOSで画像アセットの利用有無を調べる
5408 ワード
概要
iOSアプリの開発を続けているうちに、利用していない画像がプロジェクトに含まれてしまうことがあります。
無駄な画像ファイルが含まれていると、パッケージのダウンロードサイズが増えるため、定期的にチェックして削除すると良いです。
そのためのshtnkgm/AssetCatalogCheckerという画像の利用有無をチェックするためのShellScriptを作成しました。
使い方
以下のようにShellScriptをダウンロードして実行するだけです。
# ShellScriptをダウンロードします。
wget https://raw.githubusercontent.com/shtnkgm/AssetCatalogChecker/master/AssetCatalogChecker.sh
# パスを指定してShellScriptを実行します。
# sh AssetCatalogChecker.sh <path_to_project>
$ sh AssetCatalogChecker.sh ./MyApp
==> Target Directory ./MyApp
==> ❌ "dev" not found
==> ✅ "Setting" found
==> ✅ "Crop" found
==> ✅ "Camera" found
==> ✅ "Highlight" found
==> ✅ "Delete" found
==> ❌ "Rainbow" not found
==> ✅ "Sun" found
==> ✅ "Upload" found
==> ✅ "Shadow" found
==> ❌ "Circle" not found
==> ✅ "DashedCircle" found
==> ✅ "RoundedSquare" found
==> ✅ "Exposure" found
==> ✅ "Rotate" found
==> 🍺 Finished!!!
ShellScript
#!/bin/bash
echo "==> Target Directory $1"
# CarthageとPods配下は除外する
find $1 -name "*.imageset" -not -path "*/Carthage/*" -not -path "*/Pods/*" | \
sed "s/.*\///" | \
sed "s/\.imageset//" | \
while read -r name; do
# 精度と検索速度向上のため、検索対象の拡張子を限定する
grep -Er "\"$name\"|/$name\"" $1 --exclude-dir={Carthage,Pods,build,fastlane} --include='*.swift' --include='*.m' --include='*.xib' --include='*.storyboard' > /dev/null
if [ $? -eq 0 ]; then
echo "==> ✅ \"$name\" found"
else
echo "==> ❌ \"$name\" not found"
fi
done
echo "==> 🍺 Finished!!!"
仕組み
#!/bin/bash
echo "==> Target Directory $1"
# CarthageとPods配下は除外する
find $1 -name "*.imageset" -not -path "*/Carthage/*" -not -path "*/Pods/*" | \
sed "s/.*\///" | \
sed "s/\.imageset//" | \
while read -r name; do
# 精度と検索速度向上のため、検索対象の拡張子を限定する
grep -Er "\"$name\"|/$name\"" $1 --exclude-dir={Carthage,Pods,build,fastlane} --include='*.swift' --include='*.m' --include='*.xib' --include='*.storyboard' > /dev/null
if [ $? -eq 0 ]; then
echo "==> ✅ \"$name\" found"
else
echo "==> ❌ \"$name\" not found"
fi
done
echo "==> 🍺 Finished!!!"
指定したパス配下で画像アセットファイル(.imageset)を検索します。
画像アセットファイルに定義されている画像アセット名で検索し、以下の検索対象となるファイル内に画像アセット名の文字列が存在するかチェックします。
- .xib
- .storyboard
- .m
- .swift
Carthage、Pods配下は検索対象から除外されます。
namespaceが設定されている場合を考慮し、"画像アセット名"
および/画像アセット名"
でgrep検索をかけます。
注意事項
- 画像の有無の検知はあくまで目安です。
- 画像アセット名の文字列がヒットするか検索しているだけのため、実際に利用しているか、利用していないかは正しく判定できないことがあります。
- 特にプログラムで文字列を組み立てて画像アセット名を指定している場合には検知できません。
Author And Source
この問題について(iOSで画像アセットの利用有無を調べる), 我々は、より多くの情報をここで見つけました https://qiita.com/shtnkgm/items/203260607e988da5f36c著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .