diff --git a/Vendor/AliyunNui/collect_nuisdk_dsym.sh b/Vendor/AliyunNui/collect_nuisdk_dsym.sh new file mode 100644 index 0000000..c8c42fb --- /dev/null +++ b/Vendor/AliyunNui/collect_nuisdk_dsym.sh @@ -0,0 +1,57 @@ +#!/bin/sh + +set -eu + +if [ -z "${SRCROOT:-}" ]; then + echo "error: SRCROOT is empty; cannot locate the Aliyun NUI framework." >&2 + exit 1 +fi + +if [ -z "${DWARF_DSYM_FOLDER_PATH:-}" ]; then + echo "error: DWARF_DSYM_FOLDER_PATH is empty; refusing to collect the Aliyun NUI dSYM." >&2 + exit 1 +fi + +FRAMEWORK_BINARY="${SRCROOT}/Vendor/AliyunNui/nuisdk.framework/nuisdk" +VENDORED_DSYM="${SRCROOT}/Vendor/AliyunNui/nuisdk.framework.dSYM" +ARCHIVE_DSYM="${DWARF_DSYM_FOLDER_PATH}/nuisdk.framework.dSYM" +ARCHIVE_DWARF="${ARCHIVE_DSYM}/Contents/Resources/DWARF/nuisdk" + +if [ ! -f "${FRAMEWORK_BINARY}" ]; then + echo "error: Aliyun NUI binary not found at ${FRAMEWORK_BINARY}" >&2 + exit 1 +fi + +mkdir -p "${DWARF_DSYM_FOLDER_PATH}" +rm -rf "${ARCHIVE_DSYM}" + +if [ -d "${VENDORED_DSYM}" ]; then + /usr/bin/rsync -a "${VENDORED_DSYM}" "${DWARF_DSYM_FOLDER_PATH}/" + echo "Using the vendored Aliyun NUI dSYM." +else + # The distributed framework contains a symbol table but no companion dSYM. + # Generate one during Archive so App Store Connect can match its Mach-O UUID. + if ! DSYMUTIL_OUTPUT="$(/usr/bin/xcrun dsymutil "${FRAMEWORK_BINARY}" -o "${ARCHIVE_DSYM}" 2>&1)"; then + echo "${DSYMUTIL_OUTPUT}" >&2 + echo "error: Failed to generate the Aliyun NUI dSYM." >&2 + exit 1 + fi + echo "Generated the Aliyun NUI dSYM from the framework's symbol table." +fi + +if [ ! -f "${ARCHIVE_DWARF}" ]; then + echo "error: Aliyun NUI dSYM has no DWARF binary at ${ARCHIVE_DWARF}" >&2 + exit 1 +fi + +FRAMEWORK_UUIDS="$(/usr/bin/xcrun dwarfdump --uuid "${FRAMEWORK_BINARY}" | /usr/bin/awk '{ print $2 }' | /usr/bin/sort)" +DSYM_UUIDS="$(/usr/bin/xcrun dwarfdump --uuid "${ARCHIVE_DWARF}" | /usr/bin/awk '{ print $2 }' | /usr/bin/sort)" + +if [ -z "${FRAMEWORK_UUIDS}" ] || [ "${FRAMEWORK_UUIDS}" != "${DSYM_UUIDS}" ]; then + echo "error: Aliyun NUI dSYM UUID mismatch." >&2 + echo "error: Framework UUIDs: ${FRAMEWORK_UUIDS:-none}" >&2 + echo "error: dSYM UUIDs: ${DSYM_UUIDS:-none}" >&2 + exit 1 +fi + +echo "Aliyun NUI dSYM UUIDs verified: ${DSYM_UUIDS}" diff --git a/suixinkan.xcodeproj/project.pbxproj b/suixinkan.xcodeproj/project.pbxproj index 127ecf6..f8fd4fb 100644 --- a/suixinkan.xcodeproj/project.pbxproj +++ b/suixinkan.xcodeproj/project.pbxproj @@ -148,6 +148,7 @@ 93FF17C22FFB84950033C304 /* Frameworks */, 93FF17C32FFB84950033C304 /* Resources */, 9A01B8E12FFB84950033C401 /* Embed Aliyun NUI SDK */, + 9A01B8E32FFB84950033C403 /* Collect Aliyun NUI dSYM */, D83AC0A37C1CDC54D21AB6C9 /* [CP] Copy Pods Resources */, A1898ED462DD0E19BAF114B0 /* [CP] Embed Pods Frameworks */, ); @@ -324,6 +325,29 @@ shellScript = "set -e\nif [ \"${PLATFORM_NAME}\" = \"iphonesimulator\" ]; then\n exit 0\nfi\nFRAMEWORK_SOURCE=\"${SRCROOT}/Vendor/AliyunNui/nuisdk.framework\"\nFRAMEWORK_DEST=\"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}\"\nmkdir -p \"${FRAMEWORK_DEST}\"\nrsync -a --delete \"${FRAMEWORK_SOURCE}\" \"${FRAMEWORK_DEST}/\"\nif [ -n \"${EXPANDED_CODE_SIGN_IDENTITY}\" ]; then\n /usr/bin/codesign --force --sign \"${EXPANDED_CODE_SIGN_IDENTITY}\" --preserve-metadata=identifier,entitlements,flags \"${FRAMEWORK_DEST}/nuisdk.framework\"\nfi\n"; showEnvVarsInLog = 0; }; + 9A01B8E32FFB84950033C403 /* Collect Aliyun NUI dSYM */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "$(SRCROOT)/Vendor/AliyunNui", + "$(SRCROOT)/Vendor/AliyunNui/collect_nuisdk_dsym.sh", + "$(SRCROOT)/Vendor/AliyunNui/nuisdk.framework/nuisdk", + ); + name = "Collect Aliyun NUI dSYM"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DWARF_DSYM_FOLDER_PATH)/nuisdk.framework.dSYM", + ); + runOnlyForDeploymentPostprocessing = 1; + shellPath = /bin/sh; + shellScript = "/bin/sh \"${SRCROOT}/Vendor/AliyunNui/collect_nuisdk_dsym.sh\"\n"; + showEnvVarsInLog = 0; + }; A1898ED462DD0E19BAF114B0 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -402,7 +426,7 @@ ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CODE_SIGN_ENTITLEMENTS = suixinkan/suixinkan.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1010401; + CURRENT_PROJECT_VERSION = 1010402; DEVELOPMENT_TEAM = 56GVN5RNVN; ENABLE_USER_SCRIPT_SANDBOXING = NO; "FRAMEWORK_SEARCH_PATHS[sdk=iphoneos*]" = ( @@ -467,7 +491,7 @@ ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CODE_SIGN_ENTITLEMENTS = suixinkan/suixinkan.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1010401; + CURRENT_PROJECT_VERSION = 1010402; DEVELOPMENT_TEAM = 56GVN5RNVN; ENABLE_USER_SCRIPT_SANDBOXING = NO; "FRAMEWORK_SEARCH_PATHS[sdk=iphoneos*]" = (