snapshot of https://github.com/jitsi/jitsi-meet.git @ fd1749dd28f4138aa80234fc7f311b19aaffa0e7 (2026-09-15)
This commit is contained in:
165
ios/Podfile
Normal file
165
ios/Podfile
Normal file
@@ -0,0 +1,165 @@
|
||||
# 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
|
||||
|
||||
platform :ios, '15.1'
|
||||
workspace 'jitsi-meet'
|
||||
|
||||
ENV['RCT_NEW_ARCH_ENABLED'] = '1'
|
||||
ENV['RCT_HERMES_V1_ENABLED'] = '0'
|
||||
|
||||
# Build RN deps and Core from source so we don't depend on the prebuilt RN xcframeworks.
|
||||
ENV['RCT_USE_RN_DEP'] = '0'
|
||||
ENV['RCT_USE_PREBUILT_RNCORE'] = '0'
|
||||
|
||||
# hermes-engine bakes an absolute path into HERMES_CLI_PATH, which makes the
|
||||
# Podfile.lock SPEC CHECKSUM differ on every machine. Rewrite it to a relative
|
||||
# path so the lockfile is portable (e.g. `pod install --deployment` in CI).
|
||||
module HermesCliPathRelativizer
|
||||
def store_attribute(name, value, platform_name = nil)
|
||||
if name == :user_target_xcconfig &&
|
||||
value.is_a?(Hash) &&
|
||||
value['HERMES_CLI_PATH'] &&
|
||||
self.name.to_s.start_with?('hermes-engine')
|
||||
value = value.merge(
|
||||
'HERMES_CLI_PATH' => '${REACT_NATIVE_PATH}/../hermes-compiler/hermesc/osx-bin/hermesc'
|
||||
)
|
||||
end
|
||||
super
|
||||
end
|
||||
end
|
||||
Pod::Specification.prepend(HermesCliPathRelativizer)
|
||||
|
||||
install! 'cocoapods', :deterministic_uuids => false
|
||||
|
||||
def cocoa_utilities
|
||||
pod 'CocoaLumberjack', '3.7.4'
|
||||
end
|
||||
|
||||
# Giphy is excluded from iOS autolinking to keep it out of the lite SDK,
|
||||
# but the full SDK needs its TurboModule spec
|
||||
# and we re-add it to autolinking.json so react native codegen generates it.
|
||||
def include_giphy_in_codegen!
|
||||
require 'json'
|
||||
autolinking_json = File.join(
|
||||
Pod::Config.instance.installation_root.to_s,
|
||||
'build/generated/autolinking/autolinking.json'
|
||||
)
|
||||
return unless File.exist?(autolinking_json)
|
||||
|
||||
json = JSON.parse(File.read(autolinking_json))
|
||||
giphy_root = File.expand_path('../node_modules/@giphy/react-native-sdk', __dir__)
|
||||
json['dependencies'] ||= {}
|
||||
json['dependencies']['@giphy/react-native-sdk'] = {
|
||||
'name' => '@giphy/react-native-sdk',
|
||||
'root' => giphy_root,
|
||||
'platforms' => {
|
||||
'ios' => {
|
||||
'podspecPath' => File.join(giphy_root, 'giphy-react-native-sdk.podspec'),
|
||||
'scriptPhases' => [],
|
||||
'configurations' => []
|
||||
}
|
||||
}
|
||||
}
|
||||
File.write(autolinking_json, JSON.pretty_generate(json))
|
||||
end
|
||||
|
||||
target 'JitsiMeet' do
|
||||
project 'app/app.xcodeproj'
|
||||
|
||||
pod 'Firebase/Analytics', '~> 8.0'
|
||||
pod 'Firebase/Crashlytics', '~> 8.0'
|
||||
end
|
||||
|
||||
target 'JitsiMeetSDK' do
|
||||
project 'sdk/sdk.xcodeproj'
|
||||
|
||||
# React Native and its dependencies
|
||||
#
|
||||
|
||||
config = use_native_modules!
|
||||
include_giphy_in_codegen!
|
||||
use_react_native!(
|
||||
:path => config[:reactNativePath],
|
||||
# An absolute path to your application root.
|
||||
:app_path => "#{Pod::Config.instance.installation_root}/.."
|
||||
)
|
||||
|
||||
# We use auto linking, but some dependencies are excluded from the lite build
|
||||
# (see react-native.config.js) so we add them here.
|
||||
|
||||
pod 'giphy-react-native-sdk', :path => '../node_modules/@giphy/react-native-sdk'
|
||||
pod 'RNCalendarEvents', :path => '../node_modules/react-native-calendar-events'
|
||||
pod 'RNGoogleSignin', :path => '../node_modules/@react-native-google-signin/google-signin'
|
||||
|
||||
# Native pod dependencies
|
||||
#
|
||||
|
||||
cocoa_utilities
|
||||
pod 'ObjectiveDropboxOfficial', '6.2.3'
|
||||
end
|
||||
|
||||
target 'JitsiMeetSDKLite' do
|
||||
project 'sdk/sdk.xcodeproj'
|
||||
|
||||
# This is a more lightweight target, which removes some functionality.
|
||||
# Check the react-native.config.js for the list of excluded packages.
|
||||
|
||||
# React Native and its dependencies
|
||||
#
|
||||
|
||||
config = use_native_modules!
|
||||
use_react_native!(
|
||||
:path => config[:reactNativePath],
|
||||
# An absolute path to your application root.
|
||||
:app_path => "#{Pod::Config.instance.installation_root}/.."
|
||||
)
|
||||
|
||||
# Native pod dependencies
|
||||
#
|
||||
|
||||
cocoa_utilities
|
||||
end
|
||||
|
||||
post_install do |installer|
|
||||
|
||||
react_native_post_install(
|
||||
installer,
|
||||
use_native_modules![:reactNativePath],
|
||||
:mac_catalyst_enabled => false,
|
||||
# :ccache_enabled => true
|
||||
)
|
||||
installer.pods_project.targets.each do |target|
|
||||
# https://github.com/CocoaPods/CocoaPods/issues/11402
|
||||
if target.respond_to?(:product_type) and target.product_type == "com.apple.product-type.bundle"
|
||||
target.build_configurations.each do |config|
|
||||
config.build_settings['CODE_SIGNING_ALLOWED'] = 'NO'
|
||||
end
|
||||
end
|
||||
|
||||
target.build_configurations.each do |config|
|
||||
config.build_settings['SUPPORTS_MACCATALYST'] = 'NO'
|
||||
config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '15.1'
|
||||
config.build_settings['OTHER_SWIFT_FLAGS'] = '$(inherited) -no-verify-emitted-module-interface'
|
||||
end
|
||||
end
|
||||
|
||||
# Patch SocketRocket to support TLS 1.3
|
||||
%x(patch Pods/SocketRocket/SocketRocket/SRSecurityPolicy.m -N < patches/ws-tls13.diff)
|
||||
|
||||
# GiphyUISDK.xcframework already embeds libwebp; Giphy's podspec also
|
||||
# declares libwebp as a dependency, which makes CocoaPods statically link
|
||||
# libwebp into JitsiMeetSDK as well. The two copies trigger a duplicate
|
||||
# `PodsDummy_libwebp` warning at runtime. Drop the redundant link.
|
||||
['Pods-JitsiMeetSDK', 'Pods-JitsiMeet'].each do |aggregate_name|
|
||||
Dir.glob("Pods/Target Support Files/#{aggregate_name}/*.xcconfig").each do |path|
|
||||
contents = File.read(path)
|
||||
patched = contents.gsub(/ -l"?libwebp"?/, '')
|
||||
File.write(path, patched) if patched != contents
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
Reference in New Issue
Block a user