Хорошо, я возился с этой проблемой в течение 4 дней и наконец решил с помощью скрипта.
Установка
- RN 0.61.5 при обновлении с 0.59.10
- Xcode 11.3.1
- multi-scheme (Staging, Beta)
- мультиконфигурации (Staging, Beta)
- CocoaPods 1.9.3
связанные пакеты npm:
"react-native": "0.61.5",
"@react-native-firebase/app": "^8.4.6",
"@react-native-firebase/auth": "^9.3.1",
"@react-native-firebase/crashlytics": "^8.4.11",
"@react-native-firebase/database": "^7.5.12",
"@react-native-firebase/messaging": "^7.9.1",
"react-native-code-push": "6.3.0",
"react-native-config": "1.4.0"
Руководства и используемые источники:
Подфайл:
platform :ios, '9.0'
require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules'
project 'lend24app',
'Debug' => :debug,
'Release' => :release,
'Staging' => :release,
'Beta' => :release
target 'lend24app' do
use_frameworks!
$RNFirebaseAsStaticFramework = true
# Pods for lendmn
pod 'FBLazyVector', :path => "../node_modules/react-native/Libraries/FBLazyVector"
pod 'FBReactNativeSpec', :path => "../node_modules/react-native/Libraries/FBReactNativeSpec"
pod 'RCTRequired', :path => "../node_modules/react-native/Libraries/RCTRequired"
pod 'RCTTypeSafety', :path => "../node_modules/react-native/Libraries/TypeSafety"
pod 'React', :path => '../node_modules/react-native/'
pod 'React-Core', :path => '../node_modules/react-native/'
pod 'React-CoreModules', :path => '../node_modules/react-native/React/CoreModules'
pod 'React-Core/DevSupport', :path => '../node_modules/react-native/'
pod 'React-RCTActionSheet', :path => '../node_modules/react-native/Libraries/ActionSheetIOS'
pod 'React-RCTAnimation', :path => '../node_modules/react-native/Libraries/NativeAnimation'
pod 'React-RCTBlob', :path => '../node_modules/react-native/Libraries/Blob'
pod 'React-RCTImage', :path => '../node_modules/react-native/Libraries/Image'
pod 'React-RCTLinking', :path => '../node_modules/react-native/Libraries/LinkingIOS'
pod 'React-RCTNetwork', :path => '../node_modules/react-native/Libraries/Network'
pod 'React-RCTSettings', :path => '../node_modules/react-native/Libraries/Settings'
pod 'React-RCTText', :path => '../node_modules/react-native/Libraries/Text'
pod 'React-RCTVibration', :path => '../node_modules/react-native/Libraries/Vibration'
pod 'React-Core/RCTWebSocket', :path => '../node_modules/react-native/'
pod 'React-cxxreact', :path => '../node_modules/react-native/ReactCommon/cxxreact'
pod 'React-jsi', :path => '../node_modules/react-native/ReactCommon/jsi'
pod 'React-jsiexecutor', :path => '../node_modules/react-native/ReactCommon/jsiexecutor'
pod 'React-jsinspector', :path => '../node_modules/react-native/ReactCommon/jsinspector'
pod 'ReactCommon/jscallinvoker', :path => "../node_modules/react-native/ReactCommon"
pod 'ReactCommon/turbomodule/core', :path => "../node_modules/react-native/ReactCommon"
pod 'Yoga', :path => '../node_modules/react-native/ReactCommon/yoga'
pod 'DoubleConversion', :podspec => '../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec'
pod 'glog', :podspec => '../node_modules/react-native/third-party-podspecs/glog.podspec'
pod 'Folly', :podspec => '../node_modules/react-native/third-party-podspecs/Folly.podspec'
pod 'RNInputMask', :path => '../node_modules/react-native-text-input-mask/ios/InputMask'
pod 'RNVectorIcons', :path => '../node_modules/react-native-vector-icons'
permissions_path = '../node_modules/react-native-permissions/ios'
pod 'Permission-Camera', :path => "#{permissions_path}/Camera.podspec"
pod 'Permission-Contacts', :path => "#{permissions_path}/Contacts.podspec"
pod 'Permission-FaceID', :path => "#{permissions_path}/FaceID.podspec"
pod 'Permission-LocationAlways', :path => "#{permissions_path}/LocationAlways.podspec"
pod 'Permission-LocationWhenInUse', :path => "#{permissions_path}/LocationWhenInUse.podspec"
pod 'Permission-MediaLibrary', :path => "#{permissions_path}/MediaLibrary.podspec"
pod 'Permission-Notifications', :path => "#{permissions_path}/Notifications.podspec"
pod 'Permission-PhotoLibrary', :path => "#{permissions_path}/PhotoLibrary.podspec"
pod 'Permission-Reminders', :path => "#{permissions_path}/Reminders.podspec"
pod 'Permission-StoreKit', :path => "#{permissions_path}/StoreKit.podspec"
pre_install do |installer|
installer.analysis_result.specifications.each do |s|
s.swift_version = '4.0' unless s.swift_version
end
# workaround for https://github.com/CocoaPods/CocoaPods/issues/3289
Pod::Installer::Xcode::TargetValidator.send(:define_method, :verify_no_static_framework_transitive_dependencies) {}
installer.pod_targets.each do |pod|
if pod.name.eql?('RNPermissions') || pod.name.start_with?('Permission-')
def pod.build_type;
# Uncomment one line depending on your CocoaPods version
Pod::BuildType.static_library # >= 1.9
end
end
end
end
post_install do |installer|
installer.pods_project.build_configurations.each do |config|
if config.name == 'Staging' || config.name == 'Beta'
config.build_settings['CONFIGURATION_TEMP_DIR'] = '$(PROJECT_TEMP_DIR)/Release$(EFFECTIVE_PLATFORM_NAME)'
config.build_settings['CONFIGURATION_BUILD_DIR'] = '$(BUILD_DIR)/Release$(EFFECTIVE_PLATFORM_NAME)'
end
end
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
if config.name == 'Staging' || config.name == 'Beta'
config.build_settings['CONFIGURATION_TEMP_DIR'] = '$(PROJECT_TEMP_DIR)/Release$(EFFECTIVE_PLATFORM_NAME)'
config.build_settings['PODS_CONFIGURATION_BUILD_DIR'] = '${PODS_BUILD_DIR}/Release$(EFFECTIVE_PLATFORM_NAME)'
end
end
end
end
target 'lend24appTests' do
inherit! :search_paths
# Pods for testing
end
use_native_modules!
end
Эта настройка является результатом постепенного развития проекта с 2016 года, поэтому элементы и фактические конфигурации не рекомендуются, лучше начать с нуля!
Действия, которые приводят к этой проблеме, все шаги не приводят к созданию бета-архива:
- обновить rn с помощью команды обновления
- исправьте файлы, пропущенные с помощью команды, с помощью помощника по обновлению RN
- создавать конфигурации Xcode, используя вышеупомянутый руководство из Code Push
- неизвестный ...
где-то по пути я закончил с PODS_CONFIGURATION_BUILD_DIR
Настройка сборки, в которой ${PODS_BUILD_DIR}/Release$(EFFECTIVE_PLATFORM_NAME)
для бета-версии configuration
на этом этапе выполняется Beta
сборка, но архивирование завершается неудачно с source: unbound variable
всякий раз, когда я меняю PODS_CONFIGURATION_BUILD_DIR
на ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
или если я редактирую исправление Podfile
для того же изменения PODS_CONFIGURATION_BUILD_DIR
, этап сборки завершается с ошибкой
'React/RCTBridgeDelegate.h' file not found.
Копаясь в ...frameworks.sh
, становится ясно, что сборка Pods выводится в Release-iphoneos
папку, а остальная часть находится в Beta-iphoneos
из-за параметра PODS_CONFIGURATION_BUILD_DIR
или чего-то подобного, я пытался изменить значения по умолчанию, но затем сборки терпят неудачу даже до достижения этой фазы сборки [CP] Embed Pods Frameworks
в конце концов я просто переместил все с Release-iphoneos
на Beta-iphoneos
перед этим этапом, используя следующий сценарий:
+ New Run Script Phase
# Type a script or drag a script file from your workspace to insert its path.
if [[ "$CONFIGURATION" == "Debug" ]]; then
exit 0
elif [[ "$CONFIGURATION" == "Release" ]]; then
exit 0
fi
mv $BUILD_DIR/Release$EFFECTIVE_PLATFORM_NAME/* $BUILD_DIR/$CONFIGURATION$EFFECTIVE_PLATFORM_NAME/
Немного устал здесь, просто подумал, что это может помочь кому-нибудь в подобной ситуации, хотел бы я больше помогать, отзывы приветствуются.
person
ochitos
schedule
28.11.2020
${EXPANDED_CODE_SIGN_IDENTITY:-}
, к"${source:-}" ?
- person Tas   schedule 06.05.2019Products
в проекте Pods. @PaulBeusterien есть идеи? Мне отчаянно нужно, чтобы это работало для моего проекта. Будем очень признательны за любые указатели. - person Tas   schedule 06.05.2019