BlueWallet/ios/Podfile
2026-03-16 21:13:23 +00:00

85 lines
3.3 KiB
Ruby

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
ENV['RCT_NEW_ARCH_ENABLED'] = '1'
min_ios_version_supported = '15.1'
node_require('react-native/scripts/react_native_pods.rb')
node_require('react-native-permissions/scripts/setup.rb')
# 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
workspace 'BlueWallet'
platform :ios, min_ios_version_supported
prepare_react_native_project!
setup_permissions(['Camera', 'Notifications'])
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
# Define a common function to configure shared settings for targets
def configure_target()
config = use_native_modules!
use_react_native!(
# Specify the path directly if use_native_modules! does not provide it
:path => config[:reactNativePath],
:app_path => "#{Pod::Config.instance.installation_root}/.."
)
pod 'react-native-bw-file-access', :path => '../blue_modules/react-native-bw-file-access'
end
target 'BlueWallet' do
configure_target()
end
post_install do |installer|
react_native_post_install(
installer,
:mac_catalyst_enabled => true,
# :ccache_enabled => true
)
# Fix RCTDeprecation module map error with Xcode 16+/26+ (required for react-native-notifications).
# The bridging header imports RCTBridgeModule.h which does
# #import <RCTDeprecation/RCTDeprecation.h>. With -fmodules, Clang treats this
# as a module import and builds a PCM, but PCH verification then fails with
# "module 'RCTDeprecation' is not defined in any loaded module map file".
# Fix: remove RCTDeprecation -fmodule-map-file from the consumer xcconfigs
# so the import resolves as a plain textual include via HEADER_SEARCH_PATHS.
# No code uses @import RCTDeprecation, so this is safe.
installer.generated_aggregate_targets.each do |aggregate_target|
aggregate_target.xcconfigs.each do |config_name, config|
xcconfig_path = aggregate_target.xcconfig_path(config_name)
content = File.read(xcconfig_path)
# Order matters: match -Xcc variant first to avoid leaving a dangling -Xcc
content.gsub!('-Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTDeprecation/RCTDeprecation.modulemap" ', '')
content.gsub!('-fmodule-map-file="${PODS_ROOT}/Headers/Public/RCTDeprecation/RCTDeprecation.modulemap" ', '')
File.write(xcconfig_path, content)
end
end
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '15.1'
if ['React-Core-AccessibilityResources'].include? target.name
config.build_settings['CODE_SIGN_STYLE'] = "Manual"
config.build_settings['CODE_SIGN_IDENTITY'] = "Apple Distribution: Bluewallet Services, S. R. L. (A7W54YZ4WU)"
config.build_settings['DEVELOPMENT_TEAM'] = "A7W54YZ4WU"
end
end
end
end