1 parent
d277e901f0
commit
e9da06fab5
2 files changed
+50
-5
No files matched your search
+50
-5
@@ -20,7 +20,8 @@ BRIDGE_EXECUTABLE_NAME="LehrerApp.McpBridge" # Name der Bridge-Binary (= Assembl
|
|||||||
BUNDLE_ID="de.deinname.lehrerapp" # CFBundleIdentifier
|
BUNDLE_ID="de.deinname.lehrerapp" # CFBundleIdentifier
|
||||||
VERSION="1.0.0" # CFBundleShortVersionString
|
VERSION="1.0.0" # CFBundleShortVersionString
|
||||||
MIN_MACOS="12.0" # LSMinimumSystemVersion
|
MIN_MACOS="12.0" # LSMinimumSystemVersion
|
||||||
ICON_PNG="icon.png" # Quell-Icon (min. 512x512 oder 1024x1024)
|
ICON_COMPOSER="NewMac.icon" # App-Symbol aus Icon Composer (braucht Xcode mit actool)
|
||||||
|
ICON_PNG="icon.png" # Ersatz-Icon, falls actool fehlt (min. 512x512 oder 1024x1024)
|
||||||
RUNTIME_IDS=("osx-arm64" "osx-x64") # Architekturen, für die gebaut wird
|
RUNTIME_IDS=("osx-arm64" "osx-x64") # Architekturen, für die gebaut wird
|
||||||
UNIVERSAL_BUILD=true # true = zusätzlich Universal Binary via lipo
|
UNIVERSAL_BUILD=true # true = zusätzlich Universal Binary via lipo
|
||||||
CODESIGN_ADHOC=true # true = Ad-hoc-Signierung am Ende
|
CODESIGN_ADHOC=true # true = Ad-hoc-Signierung am Ende
|
||||||
@@ -92,8 +93,53 @@ place_binary "${BUILD_DIR}/publish" "${EXECUTABLE_NAME}"
|
|||||||
echo " -> Bridge"
|
echo " -> Bridge"
|
||||||
place_binary "${BUILD_DIR}/publish-bridge" "${BRIDGE_EXECUTABLE_NAME}"
|
place_binary "${BUILD_DIR}/publish-bridge" "${BRIDGE_EXECUTABLE_NAME}"
|
||||||
|
|
||||||
echo "=== 4/7: Icon konvertieren (.icns) ==="
|
echo "=== 4/7: App-Symbol erzeugen ==="
|
||||||
if [ -f "${ICON_PNG}" ]; then
|
ICON_KEY=""
|
||||||
|
ICON_NAME="$(basename "${ICON_COMPOSER}" .icon)"
|
||||||
|
|
||||||
|
# Übersetzt das Icon-Composer-Dokument mit actool nach Resources: Assets.car (macOS 26+, inkl.
|
||||||
|
# Dunkel-/Getönt-Varianten) plus ${ICON_NAME}.icns als Darstellung für ältere Systeme.
|
||||||
|
# actool gibt es nur im vollen Xcode - zeigt xcode-select auf die Command Line Tools, wird
|
||||||
|
# Xcode.app direkt angesprochen.
|
||||||
|
compile_composer_icon() {
|
||||||
|
[ -d "${ICON_COMPOSER}" ] || { echo " -> Kein '${ICON_COMPOSER}' gefunden."; return 1; }
|
||||||
|
|
||||||
|
local dev_dir="${DEVELOPER_DIR:-}"
|
||||||
|
if ! DEVELOPER_DIR="${dev_dir}" xcrun --find actool > /dev/null 2>&1; then
|
||||||
|
dev_dir="/Applications/Xcode.app/Contents/Developer"
|
||||||
|
local find_error
|
||||||
|
if ! find_error="$(DEVELOPER_DIR="${dev_dir}" xcrun --find actool 2>&1 > /dev/null)"; then
|
||||||
|
echo " -> actool nicht nutzbar (volles Xcode nötig, Lizenz mit 'sudo xcodebuild -license' bestätigt?):"
|
||||||
|
echo " ${find_error}"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! DEVELOPER_DIR="${dev_dir}" xcrun actool "${ICON_COMPOSER}" \
|
||||||
|
--compile "${RESOURCES_DIR}" \
|
||||||
|
--app-icon "${ICON_NAME}" \
|
||||||
|
--platform macosx \
|
||||||
|
--minimum-deployment-target "${MIN_MACOS}" \
|
||||||
|
--output-partial-info-plist "${BUILD_DIR}/icon-partial.plist" \
|
||||||
|
--output-format human-readable-text; then
|
||||||
|
echo " -> actool konnte '${ICON_COMPOSER}' nicht übersetzen."
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -f "${RESOURCES_DIR}/Assets.car" ]; then
|
||||||
|
echo " -> actool hat keine Assets.car erzeugt."
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
if compile_composer_icon; then
|
||||||
|
ICON_KEY="<key>CFBundleIconName</key><string>${ICON_NAME}</string>"
|
||||||
|
if [ -f "${RESOURCES_DIR}/${ICON_NAME}.icns" ]; then
|
||||||
|
ICON_KEY="${ICON_KEY}<key>CFBundleIconFile</key><string>${ICON_NAME}</string>"
|
||||||
|
fi
|
||||||
|
echo " -> App-Symbol aus '${ICON_COMPOSER}' erzeugt."
|
||||||
|
elif [ -f "${ICON_PNG}" ]; then
|
||||||
|
echo " -> WARNUNG: Ersatzweise wird '${ICON_PNG}' als Icon verwendet."
|
||||||
ICONSET_DIR="${BUILD_DIR}/icon.iconset"
|
ICONSET_DIR="${BUILD_DIR}/icon.iconset"
|
||||||
mkdir -p "${ICONSET_DIR}"
|
mkdir -p "${ICONSET_DIR}"
|
||||||
|
|
||||||
@@ -111,8 +157,7 @@ if [ -f "${ICON_PNG}" ]; then
|
|||||||
iconutil -c icns "${ICONSET_DIR}" -o "${RESOURCES_DIR}/icon.icns"
|
iconutil -c icns "${ICONSET_DIR}" -o "${RESOURCES_DIR}/icon.icns"
|
||||||
ICON_KEY="<key>CFBundleIconFile</key><string>icon.icns</string>"
|
ICON_KEY="<key>CFBundleIconFile</key><string>icon.icns</string>"
|
||||||
else
|
else
|
||||||
echo " -> Kein '${ICON_PNG}' gefunden, App-Bundle wird ohne Icon erstellt."
|
echo " -> WARNUNG: Kein '${ICON_PNG}' gefunden, App-Bundle wird ohne Icon erstellt."
|
||||||
ICON_KEY=""
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "=== 5/7: Info.plist schreiben ==="
|
echo "=== 5/7: Info.plist schreiben ==="
|
||||||
|
|||||||
Reference in new issue
Block a user