Files
suixinkan_ios_new/Podfile
汉秋 00c3cd0a93 接入友盟统计与 U-APM,并优化宣传页打卡点标签交互。
友盟 SDK 改为隐私同意后再初始化;宣传页标签新增滑块位移动画,超过 5 个时选中项自动滚动居中。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-03 09:23:15 +08:00

110 lines
3.9 KiB
Ruby
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

platform :ios, '16.0'
target 'suixinkan' do
use_frameworks!
# 高德地图 SDK仅真机构建时链接模拟器通过 post_install 剥离(见下方说明)
pod 'AMap3DMap-NO-IDFA', '~> 11.1'
pod 'AMapSearch-NO-IDFA', '~> 9.7'
pod 'AMapLocation-NO-IDFA', '~> 2.11'
# 微信 Open SDK分享能力不调用支付 API
pod 'WechatOpenSDK-XCFramework', '~> 2.0.4'
# 友盟 SDK统计分析与应用性能监控初始化需等用户同意隐私政策后再触发
pod 'UMCommon'
pod 'UMDevice'
pod 'UMAPM'
target 'suixinkanTests' do
inherit! :search_paths
end
end
AMAP_SIMULATOR_FRAMEWORK_NAMES = %w[
AMapFoundationKit
AMapLocationKit
AMapSearchKit
MAMapKit
].freeze
def other_ldflags_without_amap(other_ldflags)
stripped = other_ldflags.dup
AMAP_SIMULATOR_FRAMEWORK_NAMES.each do |framework_name|
stripped = stripped.gsub(/ -framework "#{Regexp.escape(framework_name)}"/, '')
end
stripped
end
post_install do |installer|
# 1. 修正 aggregate xcconfig去掉 arm64 排除,模拟器单独链接(不链 AMap
%w[Pods-suixinkan Pods-suixinkanTests].each do |target_name|
support_dir = File.join(installer.sandbox.root, 'Target Support Files', target_name)
Dir.glob(File.join(support_dir, '*.xcconfig')).each do |path|
content = File.read(path)
content.gsub!("EXCLUDED_ARCHS[sdk=iphonesimulator*] = arm64\n", '')
# 模拟器剥离高德 framework但保留 CocoaPods 生成的微信、友盟和其他依赖链接参数。
# 真机条件下再补回完整链接参数,避免真机能力受影响。
if (device_ldflags = content[/^OTHER_LDFLAGS = (.*)$/, 1])
simulator_ldflags = other_ldflags_without_amap(device_ldflags)
content.gsub!(/^OTHER_LDFLAGS = .*\n/, "OTHER_LDFLAGS = #{simulator_ldflags}\n")
content.gsub!(/OTHER_LDFLAGS\[sdk=iphonesimulator\*\] = .*\n/, '')
content.gsub!(/OTHER_LDFLAGS\[sdk=iphoneos\*\] = .*\n/, '')
content << "\nOTHER_LDFLAGS[sdk=iphoneos*] = #{device_ldflags}\n"
end
File.write(path, content)
end
end
# 2. AMap pod target 标记为仅真机
installer.pods_project.targets.each do |target|
next unless target.name.start_with?('AMap')
target.build_configurations.each do |config|
config.build_settings['SUPPORTED_PLATFORMS'] = 'iphoneos'
end
end
# 3. 模拟器跳过 AMap.bundle 资源拷贝(当前 Pods 资源仅此一项)
resources_script = File.join(
installer.sandbox.root,
'Target Support Files/Pods-suixinkan/Pods-suixinkan-resources.sh'
)
if File.exist?(resources_script)
content = File.read(resources_script)
unless content.include?('SKIP_AMAP_RESOURCES_FOR_SIMULATOR')
content.sub!(
"RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt",
<<~SHELL
# SKIP_AMAP_RESOURCES_FOR_SIMULATOR
if [ "${EFFECTIVE_PLATFORM_NAME}" = "-iphonesimulator" ]; then
exit 0
fi
RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt
SHELL
)
File.write(resources_script, content)
end
end
# 4. 主工程:允许 arm64 模拟器、真机编译期注入 AMAP_ENABLED、关闭脚本沙盒CocoaPods 兼容)
installer.aggregate_targets.each do |aggregate_target|
aggregate_target.user_project.native_targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['EXCLUDED_ARCHS[sdk=iphonesimulator*]'] = ''
config.build_settings['ENABLE_USER_SCRIPT_SANDBOXING'] = 'NO'
next unless target.name == 'suixinkan'
existing = config.build_settings['SWIFT_ACTIVE_COMPILATION_CONDITIONS[sdk=iphoneos*]'] || '$(inherited)'
config.build_settings['SWIFT_ACTIVE_COMPILATION_CONDITIONS[sdk=iphoneos*]'] = "#{existing} AMAP_ENABLED" unless existing.to_s.include?('AMAP_ENABLED')
end
end
aggregate_target.user_project.save
end
end