@@ -9,6 +9,8 @@ CONTENTS_DIR="${APP_DIR}/Contents"
99MACOS_DIR=" ${CONTENTS_DIR} /MacOS"
1010RESOURCES_DIR=" ${CONTENTS_DIR} /Resources"
1111PLIST_TEMPLATE=" ${SCRIPT_DIR} /Info.no-xcode.plist"
12+ ICON_SOURCE_PATH=" ${REPO_ROOT} /LimePet/Resources/dewy-lime.png"
13+ ICON_OUTPUT_PATH=" ${RESOURCES_DIR} /AppIcon.icns"
1214
1315CONFIGURATION=" debug"
1416VERSION=" "
@@ -53,6 +55,31 @@ if [[ -z "${BUILD_NUMBER}" ]]; then
5355 BUILD_NUMBER=" $( /usr/libexec/PlistBuddy -c " Print :CFBundleVersion" " ${PLIST_TEMPLATE} " ) "
5456fi
5557
58+ generate_app_icon () {
59+ local source_png=" $1 "
60+ local output_icns=" $2 "
61+
62+ if [[ ! -f " ${source_png} " ]]; then
63+ echo " 未找到应用图标源文件: ${source_png} " >&2
64+ return 1
65+ fi
66+
67+ local iconset_dir
68+ iconset_dir=" $( mktemp -d " ${TMPDIR:-/ tmp} /lime-pet-iconset.XXXXXX" ) .iconset"
69+ mv " ${iconset_dir% .iconset} " " ${iconset_dir} "
70+
71+ local sizes=(16 32 128 256 512)
72+ for size in " ${sizes[@]} " ; do
73+ sips -s format png -z " ${size} " " ${size} " " ${source_png} " --out " ${iconset_dir} /icon_${size} x${size} .png" > /dev/null
74+
75+ local retina_size=$(( size * 2 ))
76+ sips -s format png -z " ${retina_size} " " ${retina_size} " " ${source_png} " --out " ${iconset_dir} /icon_${size} x${size} @2x.png" > /dev/null
77+ done
78+
79+ iconutil -c icns " ${iconset_dir} " -o " ${output_icns} "
80+ rm -rf " ${iconset_dir} "
81+ }
82+
5683BIN_DIR=" $( swift build --package-path " ${REPO_ROOT} " --configuration " ${CONFIGURATION} " --show-bin-path) "
5784find " ${BIN_DIR} " -maxdepth 1 -type d -name " *.bundle" -exec rm -rf {} + 2> /dev/null || true
5885
@@ -79,18 +106,19 @@ cp "${PLIST_TEMPLATE}" "${CONTENTS_DIR}/Info.plist"
79106/usr/libexec/PlistBuddy -c " Set :CFBundleVersion ${BUILD_NUMBER} " " ${CONTENTS_DIR} /Info.plist"
80107
81108if [[ -n " ${RESOURCE_BUNDLE_PATH} " ]]; then
82- cp -R " ${RESOURCE_BUNDLE_PATH} " " ${RESOURCES_DIR } /"
109+ cp -R " ${RESOURCE_BUNDLE_PATH} " " ${APP_DIR } /"
83110fi
84111
85112TARGET_RESOURCE_ROOT=" ${RESOURCES_DIR} "
86113if [[ -n " ${RESOURCE_BUNDLE_PATH} " ]]; then
87- TARGET_RESOURCE_ROOT=" ${RESOURCES_DIR } /$( basename " ${RESOURCE_BUNDLE_PATH} " ) "
114+ TARGET_RESOURCE_ROOT=" ${APP_DIR } /$( basename " ${RESOURCE_BUNDLE_PATH} " ) "
88115fi
89116
90117mkdir -p " ${TARGET_RESOURCE_ROOT} "
91118cp " ${REPO_ROOT} /LimePet/Resources/character-library.json" " ${TARGET_RESOURCE_ROOT} /character-library.json"
92119cp " ${REPO_ROOT} /LimePet/Resources/live2d-model-catalog.json" " ${TARGET_RESOURCE_ROOT} /live2d-model-catalog.json"
93120rsync -a " ${REPO_ROOT} /LimePet/Resources/live2d-runtime" / " ${TARGET_RESOURCE_ROOT} /live2d-runtime" /
121+ generate_app_icon " ${ICON_SOURCE_PATH} " " ${ICON_OUTPUT_PATH} "
94122
95123chmod +x " ${MACOS_DIR} /LimePet"
96124
0 commit comments