| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194 |
- # Resolve react_native_pods.rb with node to allow for hoisting
- require Pod::Executable.execute_command('node', ['-p',
- 'require.resolve(
- "react-native/scripts/react_native_pods.rb",
- {paths: [process.argv[1]]},
- )', __dir__]).strip
- require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules'
- def node_require(script)
- # Resolve script with node to allow for hoisting
- require Pod::Executable.execute_command('node', ['-p',
- "require.resolve(
- '#{script}',
- {paths: [process.argv[1]]},
- )", __dir__]).strip
- end
- node_require('react-native/scripts/react_native_pods.rb')
- node_require('react-native-permissions/scripts/setup.rb')
- platform :ios, '13.0'
- prepare_react_native_project!
- # If you are using a `react-native-flipper` your iOS build will fail when `NO_FLIPPER=1` is set.
- # because `react-native-flipper` depends on (FlipperKit,...) that will be excluded
- #
- # To fix this you can also exclude `react-native-flipper` using a `react-native.config.js`
- # ```js
- # module.exports = {
- # dependencies: {
- # ...(process.env.NO_FLIPPER ? { 'react-native-flipper': { platforms: { ios: null } } } : {}),
- # ```
- #flipper_config = ENV['NO_FLIPPER'] == "1" ? FlipperConfiguration.disabled : FlipperConfiguration.enabled
- flipper_config = FlipperConfiguration.disabled;
- linkage = ENV['USE_FRAMEWORKS']
- if linkage != nil
- Pod::UI.puts "Configuring Pod with #{linkage}ally linked Frameworks".green
- use_frameworks! :linkage => linkage.to_sym
- end
- #权限处理
- setup_permissions([
- 'AppTrackingTransparency', #访问设备的广告标识符
- # 'BluetoothPeripheral', #访问蓝牙
- # 'Calendars', #访问日历
- 'Camera', #访问相机
- # 'Contacts', #访问联系人
- # 'FaceID', #访问FaceID
- 'LocationAccuracy', #访问高精度定位
- # 'LocationAlways', #始终访问位置信息
- 'LocationWhenInUse', #在使用中访问位置信息
- # 'MediaLibrary', #使用媒体库
- # 'Microphone', #使用麦克风
- # 'Motion', #运动权限
- 'Notifications', #使用通知
- 'PhotoLibrary', #使用照片库
- 'PhotoLibraryAddOnly', #添加照片
- # 'Reminders',
- # 'SpeechRecognition',
- # 'StoreKit'
- ])
- target 'Strides' do
- config = use_native_modules!
- # Flags change depending on the env values.
- flags = get_default_flags()
- # 谷歌地图服务
- pod 'Google-Maps-iOS-Utils', :git => 'https://github.com/Simon-TechForm/google-maps-ios-utils.git', :branch => 'feat/support-apple-silicon'
- rn_maps_path = '../node_modules/react-native-maps'
- pod 'react-native-google-maps', :path => rn_maps_path
- # pod 'GoogleMaps', '3.5.0'
- # pod 'Google-Maps-iOS-Utils', '2.1.0'
- # 谷歌通知启用
- # pod 'FirebaseAuth'
- pod 'FirebaseCore'
- pod 'FirebaseAnalytics'
- pod 'FirebaseMessaging'
- # pod 'FirebaseFirestore'
- pod 'GoogleUtilities', :modular_headers => true
- use_react_native!(
- :path => config[:reactNativePath],
- # Hermes is now enabled by default. Disable by setting this flag to false.
- :hermes_enabled => flags[:hermes_enabled],
- :fabric_enabled => flags[:fabric_enabled],
- # Enables Flipper.
- #
- # Note that if you have use_frameworks! enabled, Flipper will not work and
- # you should disable the next line.
- :flipper_configuration => flipper_config,
- # An absolute path to your application root.
- :app_path => "#{Pod::Config.instance.installation_root}/.."
- )
- target 'StridesTests' do
- inherit! :complete
- # Pods for testing
- end
- # Enables Flipper.
- #
- # Note that if you have use_frameworks! enabled, Flipper will not work and
- # you should disable the next line.
- # use_flipper!()
- # use_flipper!({'Flipper' => '0.182.0', 'Flipper-Folly' => '2.6.10', 'Flipper-RSocket' => '1.3.1'})
- #post_install do |installer|
- # react_native_post_install(installer)
- #end
- #--------------------修复iOS 16.4新建RN0.64无法运行--------------------------
- # post_install do |installer|
- # react_native_post_install(installer)
- # fix_library_search_paths(installer)
- # installer.pods_project.build_configurations.each do |config|
- # config.build_settings["EXCLUDED_ARCHS[sdk=iphonesimulator*]"] = "arm64"
- # end
- #end
- post_install do |installer|
- react_native_post_install(
- installer,
- config[:reactNativePath],
- :mac_catalyst_enabled => false
- )
- fix_library_search_paths(installer)
- installer.pods_project.build_configurations.each do |config|
- config.build_settings["EXCLUDED_ARCHS[sdk=iphonesimulator*]"] = "arm64"
- config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = "16.4"
- end
- installer.pods_project.targets.each do |target|
- target.build_configurations.each do |config|
- config.build_settings["EXCLUDED_ARCHS[sdk=iphonesimulator*]"] = "arm64"
- #config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = "16.4"
- end
- end
- __apply_Xcode_12_5_M1_post_install_workaround(installer)
- # 修复iOS 18编译问题
- bitcode_strip_path = `xcrun --find bitcode_strip`.chop!
- def strip_bitcode_from_framework(bitcode_strip_path, framework_relative_path)
- framework_path = File.join(Dir.pwd, framework_relative_path)
- command = "#{bitcode_strip_path} #{framework_path} -r -o #{framework_path}"
- puts "Stripping bitcode: #{command}"
- system(command)
- end
- framework_paths = [
- #"Pods/LogRocket/LogRocket.xcframework/ios-arm64/LogRocket.framework/LogRocket",
- "Pods/hermes-engine/destroot/Library/Frameworks/macosx/hermes.framework/hermes",
- "Pods/hermes-engine/destroot/Library/Frameworks/macosx/hermes.framework/Versions/Current/hermes",
- "Pods/hermes-engine/destroot/Library/Frameworks/universal/hermes.xcframework/ios-arm64/hermes.framework/hermes",
- "Pods/hermes-engine/destroot/Library/Frameworks/universal/hermes.xcframework/ios-arm64_x86_64-maccatalyst/hermes.framework/hermes"
- ]
- framework_paths.each do |framework_relative_path|
- strip_bitcode_from_framework(bitcode_strip_path, framework_relative_path)
- end
- end
- end
- def fix_library_search_paths(installer)
- def fix_config(config)
- lib_search_paths = config.build_settings["LIBRARY_SEARCH_PATHS"]
- if lib_search_paths
- if lib_search_paths.include?("$(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)") || lib_search_paths.include?("\"$(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)\"")
- # $(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME) causes problem with Xcode 12.5 + arm64 (Apple M1)
- # since the libraries there are only built for x86_64 and i386.
- lib_search_paths.delete("$(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)")
- lib_search_paths.delete("\"$(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)\"")
- if !(lib_search_paths.include?("$(SDKROOT)/usr/lib/swift") || lib_search_paths.include?("\"$(SDKROOT)/usr/lib/swift\""))
- # however, $(SDKROOT)/usr/lib/swift is required, at least if user is not running CocoaPods 1.11
- lib_search_paths.insert(0, "$(SDKROOT)/usr/lib/swift")
- end
- end
- end
- end
- end
- # projects = installer.aggregate_targets
- # .map{ |t| t.user_project }
- # .uniq{ |p| p.path }
- # .push(installer.pods_project)
- # projects.each do |project|
- # project.build_configurations.each do |config|
- # fix_config(config)
- # end
- # project.native_targets.each do |target|
- # target.build_configurations.each do |config|
- # fix_config(config)
- # end
- # end
- # project.save()
- # end
|