新增景区权限模块,集成 AMap CocoaPods 并支持模拟器

将景区选择与权限申请流程接入首页路由,集成高德 SDK 用于真机构建,并通过 Podfile post_install 钩子保证 arm64 模拟器可编译。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-06-23 10:15:26 +08:00
parent 5d4613f317
commit b61bf0d070
416 changed files with 18641 additions and 38 deletions

View File

@ -7,8 +7,10 @@
objects = {
/* Begin PBXBuildFile section */
11A5FC66EE3769DAC202A397 /* Pods_suixinkanTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EDE192531FA9E2FD908B9EC1 /* Pods_suixinkanTests.framework */; };
93DAED0B2FE8E50000B9E2B1 /* Kingfisher in Frameworks */ = {isa = PBXBuildFile; productRef = 93DAED0D2FE8E50000B9E2B1 /* Kingfisher */; };
93DAED0C2FE8E50000B9E2B1 /* AlibabaCloudOSS in Frameworks */ = {isa = PBXBuildFile; productRef = 93DAED0E2FE8E50000B9E2B1 /* AlibabaCloudOSS */; };
AE69C4E776CD531A1BB67C15 /* Pods_suixinkan.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 454D6E9EC1585878877CF5FD /* Pods_suixinkan.framework */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
@ -22,18 +24,28 @@
/* End PBXContainerItemProxy section */
/* Begin PBXFileReference section */
1CA4C6F1A8A9964E668B659A /* Pods-suixinkan.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-suixinkan.release.xcconfig"; path = "Target Support Files/Pods-suixinkan/Pods-suixinkan.release.xcconfig"; sourceTree = "<group>"; };
454D6E9EC1585878877CF5FD /* Pods_suixinkan.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_suixinkan.framework; sourceTree = BUILT_PRODUCTS_DIR; };
93946BFAF78A845957AF2518 /* Pods-suixinkan.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-suixinkan.debug.xcconfig"; path = "Target Support Files/Pods-suixinkan/Pods-suixinkan.debug.xcconfig"; sourceTree = "<group>"; };
939AC7962FE3F832004B22E4 /* suixinkan.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = suixinkan.app; sourceTree = BUILT_PRODUCTS_DIR; };
A00000012FE9000000000001 /* suixinkanTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = suixinkanTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
D763A7B62050979A1482C545 /* Pods-suixinkanTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-suixinkanTests.debug.xcconfig"; path = "Target Support Files/Pods-suixinkanTests/Pods-suixinkanTests.debug.xcconfig"; sourceTree = "<group>"; };
EB50333A77B5E2F612A2F9BC /* Pods-suixinkanTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-suixinkanTests.release.xcconfig"; path = "Target Support Files/Pods-suixinkanTests/Pods-suixinkanTests.release.xcconfig"; sourceTree = "<group>"; };
EDE192531FA9E2FD908B9EC1 /* Pods_suixinkanTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_suixinkanTests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
/* End PBXFileReference section */
/* Begin PBXFileSystemSynchronizedRootGroup section */
939AC7982FE3F832004B22E4 /* suixinkan */ = {
isa = PBXFileSystemSynchronizedRootGroup;
exceptions = (
);
path = suixinkan;
sourceTree = "<group>";
};
A00000022FE9000000000002 /* suixinkanTests */ = {
isa = PBXFileSystemSynchronizedRootGroup;
exceptions = (
);
path = suixinkanTests;
sourceTree = "<group>";
};
@ -46,6 +58,7 @@
files = (
93DAED0B2FE8E50000B9E2B1 /* Kingfisher in Frameworks */,
93DAED0C2FE8E50000B9E2B1 /* AlibabaCloudOSS in Frameworks */,
AE69C4E776CD531A1BB67C15 /* Pods_suixinkan.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -53,6 +66,7 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
11A5FC66EE3769DAC202A397 /* Pods_suixinkanTests.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -65,6 +79,8 @@
939AC7982FE3F832004B22E4 /* suixinkan */,
A00000022FE9000000000002 /* suixinkanTests */,
939AC7972FE3F832004B22E4 /* Products */,
C7EEB11765222926FB482A0E /* Pods */,
F6ABC23A28D8DF8126F325ED /* Frameworks */,
);
sourceTree = "<group>";
};
@ -77,6 +93,26 @@
name = Products;
sourceTree = "<group>";
};
C7EEB11765222926FB482A0E /* Pods */ = {
isa = PBXGroup;
children = (
93946BFAF78A845957AF2518 /* Pods-suixinkan.debug.xcconfig */,
1CA4C6F1A8A9964E668B659A /* Pods-suixinkan.release.xcconfig */,
D763A7B62050979A1482C545 /* Pods-suixinkanTests.debug.xcconfig */,
EB50333A77B5E2F612A2F9BC /* Pods-suixinkanTests.release.xcconfig */,
);
path = Pods;
sourceTree = "<group>";
};
F6ABC23A28D8DF8126F325ED /* Frameworks */ = {
isa = PBXGroup;
children = (
454D6E9EC1585878877CF5FD /* Pods_suixinkan.framework */,
EDE192531FA9E2FD908B9EC1 /* Pods_suixinkanTests.framework */,
);
name = Frameworks;
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
@ -84,9 +120,11 @@
isa = PBXNativeTarget;
buildConfigurationList = 939AC7A12FE3F832004B22E4 /* Build configuration list for PBXNativeTarget "suixinkan" */;
buildPhases = (
0E67B9CCC96BFAF644EAA277 /* [CP] Check Pods Manifest.lock */,
939AC7922FE3F832004B22E4 /* Sources */,
939AC7932FE3F832004B22E4 /* Frameworks */,
939AC7942FE3F832004B22E4 /* Resources */,
6F866A031F8EAF0CA7CF0E12 /* [CP] Copy Pods Resources */,
);
buildRules = (
);
@ -108,6 +146,7 @@
isa = PBXNativeTarget;
buildConfigurationList = A000000B2FE90000000000B /* Build configuration list for PBXNativeTarget "suixinkanTests" */;
buildPhases = (
D1E04DD46FEA7CE8622B64AF /* [CP] Check Pods Manifest.lock */,
A00000042FE9000000000004 /* Sources */,
A00000052FE9000000000005 /* Frameworks */,
A00000062FE9000000000006 /* Resources */,
@ -121,8 +160,6 @@
A00000022FE9000000000002 /* suixinkanTests */,
);
name = suixinkanTests;
packageProductDependencies = (
);
productName = suixinkanTests;
productReference = A00000012FE9000000000001 /* suixinkanTests.xctest */;
productType = "com.apple.product-type.bundle.unit-test";
@ -187,6 +224,70 @@
};
/* End PBXResourcesBuildPhase section */
/* Begin PBXShellScriptBuildPhase section */
0E67B9CCC96BFAF644EAA277 /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
);
inputPaths = (
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
"${PODS_ROOT}/Manifest.lock",
);
name = "[CP] Check Pods Manifest.lock";
outputFileListPaths = (
);
outputPaths = (
"$(DERIVED_FILE_DIR)/Pods-suixinkan-checkManifestLockResult.txt",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
showEnvVarsInLog = 0;
};
6F866A031F8EAF0CA7CF0E12 /* [CP] Copy Pods Resources */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-suixinkan/Pods-suixinkan-resources-${CONFIGURATION}-input-files.xcfilelist",
);
name = "[CP] Copy Pods Resources";
outputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-suixinkan/Pods-suixinkan-resources-${CONFIGURATION}-output-files.xcfilelist",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-suixinkan/Pods-suixinkan-resources.sh\"\n";
showEnvVarsInLog = 0;
};
D1E04DD46FEA7CE8622B64AF /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
);
inputPaths = (
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
"${PODS_ROOT}/Manifest.lock",
);
name = "[CP] Check Pods Manifest.lock";
outputFileListPaths = (
);
outputPaths = (
"$(DERIVED_FILE_DIR)/Pods-suixinkanTests-checkManifestLockResult.txt",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
showEnvVarsInLog = 0;
};
/* End PBXShellScriptBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
939AC7922FE3F832004B22E4 /* Sources */ = {
isa = PBXSourcesBuildPhase;
@ -336,6 +437,7 @@
};
939AC7A22FE3F832004B22E4 /* Debug */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 93946BFAF78A845957AF2518 /* Pods-suixinkan.debug.xcconfig */;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
@ -343,8 +445,11 @@
CURRENT_PROJECT_VERSION = 1;
DEVELOPMENT_TEAM = 56GVN5RNVN;
ENABLE_PREVIEWS = YES;
ENABLE_USER_SCRIPT_SANDBOXING = NO;
"EXCLUDED_ARCHS[sdk=iphonesimulator*]" = "";
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_KEY_NSCameraUsageDescription = "用于扫码核销订单";
INFOPLIST_KEY_NSLocationWhenInUseUsageDescription = "用于在景区选择页面展示附近景区和距离";
INFOPLIST_KEY_NSPhotoLibraryAddUsageDescription = "用于保存收款二维码到相册";
INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES;
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
@ -364,6 +469,7 @@
SUPPORTS_MACCATALYST = NO;
SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
SUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD = NO;
"SWIFT_ACTIVE_COMPILATION_CONDITIONS[sdk=iphoneos*]" = "$(inherited) AMAP_ENABLED";
SWIFT_APPROACHABLE_CONCURRENCY = YES;
SWIFT_DEFAULT_ACTOR_ISOLATION = MainActor;
SWIFT_EMIT_LOC_STRINGS = YES;
@ -375,6 +481,7 @@
};
939AC7A32FE3F832004B22E4 /* Release */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 1CA4C6F1A8A9964E668B659A /* Pods-suixinkan.release.xcconfig */;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
@ -382,8 +489,11 @@
CURRENT_PROJECT_VERSION = 1;
DEVELOPMENT_TEAM = 56GVN5RNVN;
ENABLE_PREVIEWS = YES;
ENABLE_USER_SCRIPT_SANDBOXING = NO;
"EXCLUDED_ARCHS[sdk=iphonesimulator*]" = "";
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_KEY_NSCameraUsageDescription = "用于扫码核销订单";
INFOPLIST_KEY_NSLocationWhenInUseUsageDescription = "用于在景区选择页面展示附近景区和距离";
INFOPLIST_KEY_NSPhotoLibraryAddUsageDescription = "用于保存收款二维码到相册";
INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES;
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
@ -403,6 +513,7 @@
SUPPORTS_MACCATALYST = NO;
SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
SUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD = NO;
"SWIFT_ACTIVE_COMPILATION_CONDITIONS[sdk=iphoneos*]" = "$(inherited) AMAP_ENABLED";
SWIFT_APPROACHABLE_CONCURRENCY = YES;
SWIFT_DEFAULT_ACTOR_ISOLATION = MainActor;
SWIFT_EMIT_LOC_STRINGS = YES;
@ -414,11 +525,14 @@
};
A00000092FE9000000000009 /* Debug */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = D763A7B62050979A1482C545 /* Pods-suixinkanTests.debug.xcconfig */;
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
DEVELOPMENT_TEAM = 56GVN5RNVN;
ENABLE_USER_SCRIPT_SANDBOXING = NO;
"EXCLUDED_ARCHS[sdk=iphonesimulator*]" = "";
GENERATE_INFOPLIST_FILE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 17;
LD_RUNPATH_SEARCH_PATHS = (
@ -447,11 +561,14 @@
};
A000000A2FE90000000000A /* Release */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = EB50333A77B5E2F612A2F9BC /* Pods-suixinkanTests.release.xcconfig */;
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
DEVELOPMENT_TEAM = 56GVN5RNVN;
ENABLE_USER_SCRIPT_SANDBOXING = NO;
"EXCLUDED_ARCHS[sdk=iphonesimulator*]" = "";
GENERATE_INFOPLIST_FILE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 17;
LD_RUNPATH_SEARCH_PATHS = (