#ios #xcode #react-native #cocoapods
Вопрос:
Я работаю в команде, разрабатывающей собственное приложение для реагирования. В моей команде у некоторых разработчиков есть компьютеры Intel mac, а другие используют кремниевый вариант. Приложение находится только на начальной стадии, но из-за этих двух архитектур я ожидаю некоторых неудобств при обслуживании общей кодовой базы.
Я создал собственное приложение для реакции на голые кости на силиконовом Mac с npx react-native init Silicon
помощью . С помощью этого я в настоящее время получаю версию react 17.0.1 и версию react-native 0.64.2. После некоторых сбоев я могу создать и запустить приложение-скелет на симуляторе.
Я изменил Podfile
так, чтобы я прокомментировал Flipper
и добавил цикл post_install для удаления IPHONEOS_DEPLOYMENT_TARGET
из модулей, это, похоже, изначально устраняет большинство предупреждений и ошибок.
Подфайл:
require_relative '../node_modules/react-native/scripts/react_native_pods'
require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules'
platform :ios, '10.0'
target 'Silicon' do
config = use_native_modules!
use_react_native!(
:path => config[:reactNativePath],
# to enable hermes on iOS, change `false` to `true` and then install pods
:hermes_enabled => false
)
target 'SiliconTests' 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!()
post_install do |installer|
react_native_post_install(installer)
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings.delete 'IPHONEOS_DEPLOYMENT_TARGET'
end
end
end
end
Затем я запустил pod install
в ios
папку-и после этого смог создать и запустить приложение на симуляторе.
После этого я отправил код в git и вытащил его на intel mac. Запустился npm install
и pod install
внутри папки ios.
Глядя на разницу, я заметил, что установка модуля изменила EXCLUDED_ARCHS[sdk=iphonesimulator*]
значение "arm64 "
-на, чтобы иметь возможность использовать intel. Похоже, это происходит из node_modules/react-native/scripts/react_native_pods.rb
-за того, что exclude_architectures
функция изменяет исключенные арки на основе архитектуры, которую она обнаруживает.
Итак, мне интересно, есть ли способ (этап сборки?) Создать «универсальную» настройку EXCLUDED_ARCHS
, которая будет работать для обеих архитектур? В настоящее время всякий раз, когда кто-то запускается pod install
, EXCLUDED_ARCHS
конфигурации сборки обновляются в соответствии с их архитектурой. Будут ли возможны отдельные конфигурации сборки, и как их можно «привязать» к правильной архитектуре, чтобы a pod install
не записывал их?
Или это действительно проблема , если вы получите правильное значение для своей машины после pod install
, а не только увидите изменение значения в системе управления версиями?