Strip Sparkle from App Store (Release) macOS build

Add -Wl,-dead_strip_dylibs to the Release config so the linker drops the
unused Sparkle LC_LOAD_DYLIB, and a Run Script phase that removes the
auto-embedded Sparkle.framework from the app bundle for every config
except Release-DeveloperID. Disable user script sandboxing on the Yattee
target so the rm is permitted. Release-DeveloperID keeps Sparkle linked
and embedded for the notarized Developer ID channel.
This commit is contained in:
Arkadiusz Fal
2026-04-23 05:32:42 +02:00
parent a2a4691957
commit b5bab10694

View File

@@ -192,6 +192,7 @@
372D1A242EDB163800F58F7A /* Frameworks */,
372D1A252EDB163800F58F7A /* Resources */,
37BA19BA2EE4EB7F001D7B0F /* Embed Foundation Extensions */,
37C0FEE100000000FEE100A1 /* Strip Sparkle (non-DeveloperID) */,
);
buildRules = (
);
@@ -365,6 +366,28 @@
};
/* End PBXResourcesBuildPhase section */
/* Begin PBXShellScriptBuildPhase section */
37C0FEE100000000FEE100A1 /* Strip Sparkle (non-DeveloperID) */ = {
isa = PBXShellScriptBuildPhase;
alwaysOutOfDate = 1;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
);
inputPaths = (
);
name = "Strip Sparkle (non-DeveloperID)";
outputFileListPaths = (
);
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "if [ \"${CONFIGURATION}\" != \"Release-DeveloperID\" ]; then\n FW=\"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Sparkle.framework\"\n if [ -d \"$FW\" ]; then\n echo \"Stripping Sparkle.framework (config=${CONFIGURATION})\"\n rm -rf \"$FW\"\n fi\nfi\n";
};
/* End PBXShellScriptBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
372D1A232EDB163800F58F7A /* Sources */ = {
isa = PBXSourcesBuildPhase;
@@ -549,6 +572,7 @@
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 259;
DEAD_CODE_STRIPPING = YES;
ENABLE_USER_SCRIPT_SANDBOXING = NO;
DEVELOPMENT_TEAM = 78Z5H3M6RJ;
ENABLE_APP_SANDBOX = YES;
ENABLE_HARDENED_RUNTIME = YES;
@@ -632,6 +656,7 @@
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 259;
DEAD_CODE_STRIPPING = YES;
ENABLE_USER_SCRIPT_SANDBOXING = NO;
DEVELOPMENT_TEAM = 78Z5H3M6RJ;
ENABLE_APP_SANDBOX = YES;
ENABLE_HARDENED_RUNTIME = YES;
@@ -678,6 +703,10 @@
"LD_RUNPATH_SEARCH_PATHS[sdk=macosx*]" = "@executable_path/../Frameworks";
MACOSX_DEPLOYMENT_TARGET = 15.0;
MARKETING_VERSION = 2.0.0;
"OTHER_LDFLAGS[sdk=macosx*]" = (
"$(inherited)",
"-Wl,-dead_strip_dylibs",
);
PRODUCT_BUNDLE_IDENTIFIER = stream.yattee.app;
PRODUCT_NAME = "$(TARGET_NAME)";
REGISTER_APP_GROUPS = YES;
@@ -769,6 +798,7 @@
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 259;
DEAD_CODE_STRIPPING = YES;
ENABLE_USER_SCRIPT_SANDBOXING = NO;
DEVELOPMENT_TEAM = 78Z5H3M6RJ;
ENABLE_APP_SANDBOX = YES;
ENABLE_HARDENED_RUNTIME = YES;