Closed49

Expo 49系から51系へのバージョンアップメモ

かげかげ

あらすじ

  1. Expo 49系、Expo Router V3 で実装した 家庭用家計簿 iOSアプリがあった。
  2. Expo Goをローカルに落として、動作させていた。(iOSとしてリリースまではしてない)
  3. 5/11 にアプリバージョンアップ
  4. SDK51系じゃないとダメよと言われる

https://docs.expo.dev/workflow/upgrading-expo-sdk-walkthrough/

  1. SDK51系以外は、ダウンロードしてね。とめんどくさい運用になった。

https://expo.dev/go?sdkVersion=49&platform=ios&device=false

  1. しゃーなし、51系に上げてみた。
  2. 動かない。
かげかげ

Expo SDK50 にしてみよう

こちらを参考に

https://docs.expo.dev/workflow/upgrading-expo-sdk-walkthrough/

かげかげ

まずは、50にします

  1. pnpm install expo@50
  2. npx expo install --fix
  3. rootは以下の、iosをgitignore
かげかげ

npx expo-doctor@latest

これで、そのバージョンに必要な条件を提示してくれるみたい

➜  expo git:(One-for-All-144_3) npx expo-doctor@latest
(node:13163) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.
(Use `node --trace-deprecation ...` to show where the warning was created)
✔ Check Expo config for common issues
✔ Check package.json for common issues
✔ Check dependencies for packages that should not be installed directly
✔ Check for issues with metro config
✔ Check for common project setup issues
✔ Check npm/ yarn versions
✔ Check native tooling versions
✔ Check Expo config (app.json/ app.config.js) schema
✔ Check that native modules do not use incompatible support packages
✔ Check for legacy global CLI installed locally
✔ Check that packages match versions required by installed Expo SDK
✔ Check that native modules use compatible support package versions for installed Expo SDK

Didn't find any issues with the project!
➜

こんな感じで、チェックOKな状態に持ってきた。

かげかげ

pnpm expo start --ios してみると

TypeError: Cannot read property 'reduceRight' of undefined, js engine: hermes

urqlのところでエラー出てるみたい

かげかげ

urql の解決

  1. pnpm install urql@4.0.0
  2. createClient にexchanges プロパティを追加する
export const datasource = createClient({
  url: process.env.EXPO_PUBLIC_API_URL ?? "",
  requestPolicy: "cache-and-network",
+  exchanges: [],
});

WARN No exchange has handled operations of kind "query". Check whether you've added an exchange responsible for these operations.

かげかげ
- import { createClient } from "urql";
+ import { createClient, fetchExchange } from "urql";

export const datasource = createClient({
  url: process.env.EXPO_PUBLIC_API_URL ?? "",
  requestPolicy: "cache-and-network",
-  exchanges: [],
+  exchanges: [fetchExchange],
});
かげかげ

一旦これで、warnは消える(いいかどうかは置いておく)

かげかげ

react-native-reanimated の解決

  1. pnpm install react-native-reanimated@latest

3.11.0 にしたけれど

https://docs.swmansion.com/react-native-reanimated/docs/guides/troubleshooting/#native-part-of-reanimated-doesnt-seem-to-be-initialized

意味がよくわからない

おそらく別Libが依存しているんだろう

かげかげ

javascriptとnativeのバージョン差異ってことなので、ローカルにあるiosのファイルを削除してやり直す

rm -rf ios/Pods
rm ios/Podfile.lock

npx pod-install

かげかげ

undefined method `__apply_Xcode_12_5_M1_post_install_workaround' for an instance of Pod::Podfile

Podfileでもう使われてないものがあるそうなので、メソッド呼び出しを止める

  post_install do |installer|
    react_native_post_install(
      installer,
      config[:reactNativePath],
      :mac_catalyst_enabled => false
    )
-     __apply_Xcode_12_5_M1_post_install_workaround(installer)
+ #     __apply_Xcode_12_5_M1_post_install_workaround(installer)

    # This is necessary for Xcode 14, because it signs resource bundles by default
    # when building for devices.
    installer.target_installation_results.pod_target_installation_results
      .each do |pod_name, target_installation_result|
      target_installation_result.resource_bundle_targets.each do |resource_bundle_target|
        resource_bundle_target.build_configurations.each do |config|
          config.build_settings['CODE_SIGNING_ALLOWED'] = 'NO'
        end
      end
    end
  end

かげかげ

pnpm expo run:ios
すると

› 0 error(s), and 0 warning(s)

CommandError: Failed to build iOS project. "xcodebuild" exited with error code 70.
To view more error logs, try building the app with Xcode directly, by opening /Users/ryokageyama/Documents/Develop/One-for-All/apps/expo/ios/expo.xcworkspace.

Command line invocation:
    /Applications/Xcode.app/Contents/Developer/usr/bin/xcodebuild -workspace /Users/ryokageyama/Documents/Develop/One-for-All/apps/expo/ios/expo.xcworkspace -configuration Debug -scheme expo -destination id=46761478-E213-4A18-BC90-709880D65753

User defaults from command line:
    IDEPackageSupportUseBuiltinSCM = YES



2024-05-14 12:51:13.667 xcodebuild[25079:147062] Writing error result bundle to /var/folders/3d/46r6mtnx5yn548plfsgdmzv40000gn/T/ResultBundle_2024-14-05_12-51-0013.xcresult
xcodebuild: error: Unable to find a destination matching the provided destination specifier:
                { id:46761478-E213-4A18-BC90-709880D65753 }

        Ineligible destinations for the "expo" scheme:
                { platform:iOS, id:dvtdevice-DVTiPhonePlaceholder-iphoneos:placeholder, name:Any iOS Device, error:iOS 17.4 is not installed. To use with Xcode, first download and install the platform }
Build logs written to /Users/ryokageyama/Documents/Develop/One-for-All/apps/expo/.expo/xcodebuild.log
➜  expo git:(One-for-All-144_3) 
かげかげ

デバイスのバージョンがiOS17.4になってないそうなので、xcodeのバージョンを上げる

xcodebuild -workspace /Users/ryokageyama/Documents/Develop/One-for-All/apps/expo/ios/expo.xcworkspace -configuration Debug -scheme expo -destination generic/platform=iOS

かげかげ
➜  expo git:(One-for-All-144_3) pnpm expo run:ios
env: load .env
env: export EXPO_ROUTER_IMPORT_MODE EXPO_PUBLIC_API_URL EXPO_PUBLIC_MOCK_USER_ID EXPO_PUBLIC_MOCK_GROUP_ID NEXT_PUBLIC_POINT_UNIT NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY CLERK_SECRET_KEY NEXT_PUBLIC_CLERK_AFTER_SIGN_IN_URL NEXT_PUBLIC_CLERK_AFTER_SIGN_UP_URL
(node:37416) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.
(Use `node --trace-deprecation ...` to show where the warning was created)
› Planning build
› Executing react-native Pods/hermes-engine » [CP-User] [Hermes] Replace Hermes for the right configuration, if needed
› Compiling react-native Pods/DoubleConversion » bignum-dtoa.cc
› Compiling react-native Pods/DoubleConversion » double-conversion.cc
› Compiling react-native Pods/DoubleConversion » diy-fp.cc
› Compiling react-native Pods/DoubleConversion » strtod.cc
› Compiling react-native Pods/DoubleConversion » fixed-dtoa.cc
› Compiling react-native Pods/DoubleConversion » fast-dtoa.cc
› Compiling react-native Pods/DoubleConversion » cached-powers.cc
› Compiling expo-updates-interface Pods/EXUpdatesInterface » noop-file.m
› Compiling expo-updates-interface Pods/EXUpdatesInterface » EXUpdatesInterface-dummy.m
› Compiling expo-updates Pods/ReachabilitySwift » ReachabilitySwift-dummy.m
› Compiling expo-dev-menu-interface Pods/expo-dev-menu-interface » expo-dev-menu-interface-dummy.m
› Packaging react-native Pods/React-logger » libReact-logger.a
› Packaging react-native Pods/React-Mapbuffer » libReact-Mapbuffer.a
› Compiling react-native-reanimated Pods/RNReanimated » NativeProxy.mm
› Compiling react-native-reanimated Pods/RNReanimated » NativeReanimatedModule.cpp
› Compiling react-native-reanimated Pods/RNReanimated » EventHandlerRegistry.cpp
› Compiling react-native-reanimated Pods/RNReanimated » AnimatedSensorModule.cpp
› Compiling react-native-gesture-handler Pods/RNGestureHandler » RNNativeViewHandler.mm
› Compiling react-native-gesture-handler Pods/RNGestureHandler » RNGestureHandlerModule.mm
› Compiling react-native-gesture-handler Pods/RNGestureHandler » RNGestureHandlerRootViewComponentView.mm
› Compiling react-native-gesture-handler Pods/RNGestureHandler » RNGestureHandlerButtonComponentView.mm
› Compiling react-native-gesture-handler Pods/RNGestureHandler » RNGestureHandlerManager.mm
› Compiling @react-native-community/datetimepicker Pods/RNDateTimePicker » RNDateTimePickerShadowView.m

❌  (../../node_modules/@react-native-community/datetimepicker/ios/RNDateTimePickerShadowView.m:8:41)

   6 | {
   7 |   if (self = [super init]) {
>  8 |     YGNodeSetMeasureFunc(self.yogaNode, RNDateTimePickerShadowViewMeasure);
     |                                         ^ incompatible function pointer types passing 'YGSize ' (aka 'struct YGSize (struct YGNode *, float, enum YGMeasureMode, float, enum YGMeasureMode)') to parameter of type 'YGMeasureFunc' (aka 'struct YGSize (*)(const struct YGNode *, float, enum YGMeasureMode, float, enum YGMeasureMode)') [-Wincompatible-function-pointer-types]
   9 |   }
  10 |   return self;
  11 | }

› Compiling @react-native-community/datetimepicker Pods/RNDateTimePicker » RNDateTimePickerManager.m
› Compiling @react-native-community/datetimepicker Pods/RNDateTimePicker » RNDateTimePicker.m
› Compiling @react-native-community/datetimepicker Pods/RNDateTimePicker » RNDateTimePicker-dummy.m
› Compiling @react-native-picker/picker Pods/RNCPicker » RNCPicker-dummy.m
› Packaging expo-updates-interface Pods/EXUpdatesInterface » libEXUpdatesInterface.a
› Packaging react-native Pods/DoubleConversion » libDoubleConversion.a
› Compiling @shopify/flash-list Pods/RNFlashList » RNFlashList-dummy.m
⚠️  Script has ambiguous dependencies causing it to run on every build.
   To fix, go to: Xcode » expo/expo » Build Phases » 'Bundle React Native code and images'
   Either: Uncheck "Based on dependency analysis", or select output files to trigger the script

⚠️  Script has ambiguous dependencies causing it to run on every build.
   To fix, go to: Xcode » expo/expo » Build Phases » 'Start Packager'
   Either: Uncheck "Based on dependency analysis", or select output files to trigger the script


› 1 error(s), and 2 warning(s)

CommandError: Failed to build iOS project. "xcodebuild" exited with error code 65.
➜  expo git:(One-for-All-144_3) 


かげかげ

バージョンが古かったそうなので

pnpm add @react-native-community/datetimepicker@7.6.3

かげかげ

エラー変わった

› Executing expo » Start Packager on http://localhost:8081
› Executing expo » [Expo] Configure project
› Copying   ios/expo/Supporting/Expo.plist ➜ ./Expo.plist
› Compiling expo » SplashScreen.storyboard

❌  (ios/Pods/Target Support Files/Pods-expo/ExpoModulesProvider.swift:8:8)

   6 |  */
   7 | 
>  8 | import ExpoModulesCore
     |        ^ compiling for iOS 13.0, but module 'ExpoModulesCore' has a minimum deployment target of iOS 13.4: /Users/ryokageyama/Library/Developer/Xcode/DerivedData/expo-gfwfmwrdawwxydcqhxaywmbscczw/Build/Products/Debug-iphonesimulator/ExpoModulesCore/ExpoModulesCore.swiftmodule/arm64-apple-ios-simulator.swiftmodule
   9 | import EXConstants
  10 | import EASClient
  11 | import ExpoFileSystem

› Preparing expo » Info.plist
⚠️  Script has ambiguous dependencies causing it to run on every build.
   To fix, go to: Xcode » expo/expo » Build Phases » 'Start Packager'
   Either: Uncheck "Based on dependency analysis", or select output files to trigger the script

⚠️  Script has ambiguous dependencies causing it to run on every build.
   To fix, go to: Xcode » expo/expo » Build Phases » 'Bundle React Native code and images'
   Either: Uncheck "Based on dependency analysis", or select output files to trigger the script


› 1 error(s), and 2 warning(s)

CommandError: Failed to build iOS project. "xcodebuild" exited with error code 65.
➜  expo git:(One-for-All-144_3) 

かげかげ

config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '13.4'

バージョンを変更する

かげかげ

本題 SDK51にしましょう

# /apps/expo
pnpm add expo@latest

# /
 pnpm clean && pnpm install

# /apps/expo
rm -rf ios/Pods           
rm ios/Podfile.lock
npx pod-install
[!] The following Swift pods cannot yet be integrated as static libraries:

The Swift pod `ExpoModulesCore` depends upon `React-jsinspector`, which does not define modules. To opt into those targets generating module maps (which is necessary to import them from Swift when building as static libraries), you may set `use_modular_headers!` globally in your Podfile, or specify `:modular_headers => true` for particular dependencies.
Couldn't install Pods. Updating the Pods project and trying again...
Command `pod install` failed.
└─ Cause: The following Swift pods cannot yet be integrated as static libraries:

The Swift pod `ExpoModulesCore` depends upon `React-jsinspector`, which does not define modules. To opt into those targets generating module maps (which is necessary to import them from Swift when building as static libraries), you may set `use_modular_headers!` globally in your Podfile, or specify `:modular_headers => true` for particular dependencies.

pod install --repo-update --ansi exited with non-zero code: 1
➜  expo git:(One-for-All-144_3) ✗ 
かげかげ

また、違うエラー

Updating local specs repositories

CocoaPods 1.15.0 is available.
To update use: `gem install cocoapods`

For more information, see https://blog.cocoapods.org and the CHANGELOG for this version at https://github.com/CocoaPods/CocoaPods/releases/tag/1.15.0

Analyzing dependencies
[!] Unable to find a target named `Home-Helper` in project `expo.xcodeproj`, did find `expo`.
Couldn't install Pods. Updating the Pods project and trying again...
Command `pod install` failed.
└─ Cause: Unable to find a target named `Home-Helper` in project `expo.xcodeproj`, did find `expo`.

pod install --repo-update --ansi exited with non-zero code: 1
➜  expo git:(One-for-All-144_3) ✗ 
かげかげ

違ったみたい

# ファイルの先頭に
use_modular_headers!

- target 'Home-Helper' do
+ target 'expo' do
  # Your existing pods
end
かげかげ

違ったみたい
すでに宣言していた。。。

# ファイルの先頭に
use_modular_headers!

- target 'expo' do
-   # Your existing pods
- end
かげかげ

pnpm expo run:ios

› Compiling react-native Pods/React-CoreModules » RCTWebSocketExecutor.mm

❌  (ios/Pods/Headers/Public/ExpoModulesCore/ExpoModulesCore/EXReactRootViewFactory.h:18:37)

  16 | 
  17 | NS_SWIFT_NAME(ExpoReactRootViewFactory)
> 18 | @interface EXReactRootViewFactory : RCTRootViewFactory
     |                                     ^ cannot find interface declaration for 'RCTRootViewFactory', superclass of 'EXReactRootViewFactory'
  19 | 
  20 | @property (nonatomic, weak, nullable) EXReactDelegateWrapper *reactDelegate;
  21 | 


❌  (ios/Pods/Headers/Public/ExpoModulesCore/ExpoModulesCore/EXReactRootViewFactory.h:26:40)

  24 |  */
  25 | - (instancetype)initWithReactDelegate:(nullable EXReactDelegateWrapper *)reactDelegate
> 26 |                         configuration:(RCTRootViewFactoryConfiguration *)configuration
     |                                        ^ expected a type
  27 |            turboModuleManagerDelegate:(id<RCTTurboModuleManagerDelegate>)turboModuleManagerDelegate;
  28 | 
  29 | /**


❌  (ios/Pods/Headers/Public/ExpoModulesCore/ExpoModulesCore/EXReactRootViewFactory.h:27:43)

  25 | - (instancetype)initWithReactDelegate:(nullable EXReactDelegateWrapper *)reactDelegate
  26 |                         configuration:(RCTRootViewFactoryConfiguration *)configuration
> 27 |            turboModuleManagerDelegate:(id<RCTTurboModuleManagerDelegate>)turboModuleManagerDelegate;
     |                                           ^ no type or protocol named 'RCTTurboModuleManagerDelegate'
  28 | 
  29 | /**
  30 |  Calls super `viewWithModuleName:initialProperties:launchOptions:` from `RCTRootViewFactory`.

› Compiling react-native Pods/React-CoreModules » RCTTiming.mm
› Compiling react-native Pods/React-CoreModules » RCTStatusBarManager.mm
かげかげ
 rm -rf ios/Pods             
rm ios/Podfile.lock
 npx pod-install
➜  expo git:(One-for-All-144_3) ✗ npx pod-install             
Scanning for pods...
1.14.3
> pod install

[!] Invalid `Podfile` file: uninitialized constant Pod::Podfile::FlipperConfiguration.

 #  from /Users/ryokageyama/Documents/Develop/One-for-All/apps/expo/ios/Podfile:29
 #  -------------------------------------------
 #  # ```
 >  flipper_config = FlipperConfiguration.disabled
 #  if ENV['NO_FLIPPER'] == '1' then
 #  -------------------------------------------
Couldn't install Pods. Updating the Pods project and trying again...
> pod install --repo-update

[!] Invalid `Podfile` file: uninitialized constant Pod::Podfile::FlipperConfiguration.

 #  from /Users/ryokageyama/Documents/Develop/One-for-All/apps/expo/ios/Podfile:29
 #  -------------------------------------------
 #  # ```
 >  flipper_config = FlipperConfiguration.disabled
 #  if ENV['NO_FLIPPER'] == '1' then
 #  -------------------------------------------
Couldn't install Pods. Updating the Pods project and trying again...
Command `pod install` failed.
└─ Cause: Invalid `Podfile` file: uninitialized constant Pod::Podfile::FlipperConfiguration.

 #  from /Users/ryokageyama/Documents/Develop/One-for-All/apps/expo/ios/Podfile:29
 #  -------------------------------------------
 #  # ```
 >  flipper_config = FlipperConfiguration.disabled
 #  if ENV['NO_FLIPPER'] == '1' then
 #  -------------------------------------------

pod install --repo-update --ansi exited with non-zero code: 1
➜  expo git:(One-for-All-144_3) ✗ 
かげかげ
gem install flipper --user-install

Podfileの先頭に

require 'flipper'
use_flipper!
かげかげ
sudo gem install cocoapods --user-install

# /apps/expo/ios
pod install

[Privacy Manifest Aggregation] Reading .xcprivacy files to aggregate all used Required Reason APIs.
[!] An error occurred while processing the post-install hook of the Podfile.

no implicit conversion of nil into Array

/Users/ryokageyama/Documents/Develop/One-for-All/node_modules/react-native/scripts/cocoapods/privacy_manifest_utils.rb:115:in `+'
/Users/ryokageyama/Documents/Develop/One-for-All/node_modules/react-native/scripts/cocoapods/privacy_manifest_utils.rb:115:in `block (5 levels) in get_used_required_reason_apis'
/Users/ryokageyama/Documents/Develop/One-for-All/node_modules/react-native/scripts/cocoapods/privacy_manifest_utils.rb:111:in `each'
/Users/ryokageyama/Documents/Develop/One-for-All/node_modules/react-native/scripts/cocoapods/privacy_manifest_utils.rb:111:in `block (4 levels) in get_used_required_reason_apis'
/Users/ryokageyama/Documents/Develop/One-for-All/node_modules/react-native/scripts/cocoapods/privacy_manifest_utils.rb:106:in `each'
/Users/ryokageyama/Documents/Develop/One-for-All/node_modules/react-native/scripts/cocoapods/privacy_manifest_utils.rb:106:in `block (3 levels) in get_used_required_reason_apis'
/Users/ryokageyama/Documents/Develop/One-for-All/node_modules/react-native/scripts/cocoapods/privacy_manifest_utils.rb:105:in `each'
/Users/ryokageyama/Documents/Develop/One-for-All/node_modules/react-native/scripts/cocoapods/privacy_manifest_utils.rb:105:in `block (2 levels) in get_used_required_reason_apis'
/Users/ryokageyama/Documents/Develop/One-for-All/node_modules/react-native/scripts/cocoapods/privacy_manifest_utils.rb:104:in `each'
/Users/ryokageyama/Documents/Develop/One-for-All/node_modules/react-native/scripts/cocoapods/privacy_manifest_utils.rb:104:in `block in get_used_required_reason_apis'
/Users/ryokageyama/Documents/Develop/One-for-All/node_modules/react-native/scripts/cocoapods/privacy_manifest_utils.rb:102:in `each'
/Users/ryokageyama/Documents/Develop/One-for-All/node_modules/react-native/scripts/cocoapods/privacy_manifest_utils.rb:102:in `get_used_required_reason_apis'
/Users/ryokageyama/Documents/Develop/One-for-All/node_modules/react-native/scripts/cocoapods/privacy_manifest_utils.rb:18:in `add_aggregated_privacy_manifest'
/Users/ryokageyama/Documents/Develop/One-for-All/node_modules/react-native/scripts/react_native_pods.rb:301:in `react_native_post_install'
/Users/ryokageyama/Documents/Develop/One-for-All/apps/expo/ios/Podfile:67:in `block (3 levels) in from_ruby'
/opt/homebrew/Cellar/cocoapods/1.14.3_1/libexec/gems/cocoapods-core-1.14.3/lib/cocoapods-core/podfile.rb:196:in `post_install!'
/opt/homebrew/Cellar/cocoapods/1.14.3_1/libexec/gems/cocoapods-1.14.3/lib/cocoapods/installer.rb:1013:in `run_podfile_post_install_hook'
/opt/homebrew/Cellar/cocoapods/1.14.3_1/libexec/gems/cocoapods-1.14.3/lib/cocoapods/installer.rb:1001:in `block in run_podfile_post_install_hooks'
/opt/homebrew/Cellar/cocoapods/1.14.3_1/libexec/gems/cocoapods-1.14.3/lib/cocoapods/user_interface.rb:149:in `message'
/opt/homebrew/Cellar/cocoapods/1.14.3_1/libexec/gems/cocoapods-1.14.3/lib/cocoapods/installer.rb:1000:in `run_podfile_post_install_hooks'
/opt/homebrew/Cellar/cocoapods/1.14.3_1/libexec/gems/cocoapods-1.14.3/lib/cocoapods/installer.rb:337:in `block (2 levels) in create_and_save_projects'
/opt/homebrew/Cellar/cocoapods/1.14.3_1/libexec/gems/cocoapods-1.14.3/lib/cocoapods/installer/xcode/pods_project_generator/pods_project_writer.rb:61:in `write!'
/opt/homebrew/Cellar/cocoapods/1.14.3_1/libexec/gems/cocoapods-1.14.3/lib/cocoapods/installer.rb:336:in `block in create_and_save_projects'
/opt/homebrew/Cellar/cocoapods/1.14.3_1/libexec/gems/cocoapods-1.14.3/lib/cocoapods/user_interface.rb:64:in `section'
/opt/homebrew/Cellar/cocoapods/1.14.3_1/libexec/gems/cocoapods-1.14.3/lib/cocoapods/installer.rb:315:in `create_and_save_projects'
/opt/homebrew/Cellar/cocoapods/1.14.3_1/libexec/gems/cocoapods-1.14.3/lib/cocoapods/installer.rb:307:in `generate_pods_project'
/opt/homebrew/Cellar/cocoapods/1.14.3_1/libexec/gems/cocoapods-1.14.3/lib/cocoapods/installer.rb:183:in `integrate'
/opt/homebrew/Cellar/cocoapods/1.14.3_1/libexec/gems/cocoapods-1.14.3/lib/cocoapods/installer.rb:170:in `install!'
/opt/homebrew/Cellar/cocoapods/1.14.3_1/libexec/gems/cocoapods-1.14.3/lib/cocoapods/command/install.rb:52:in `run'
/opt/homebrew/Cellar/cocoapods/1.14.3_1/libexec/gems/claide-1.1.0/lib/claide/command.rb:334:in `run'
/opt/homebrew/Cellar/cocoapods/1.14.3_1/libexec/gems/cocoapods-1.14.3/lib/cocoapods/command.rb:52:in `run'
/opt/homebrew/Cellar/cocoapods/1.14.3_1/libexec/gems/cocoapods-1.14.3/bin/pod:55:in `<top (required)>'
/opt/homebrew/Cellar/cocoapods/1.14.3_1/libexec/bin/pod:25:in `load'
/opt/homebrew/Cellar/cocoapods/1.14.3_1/libexec/bin/pod:25:in `<main>'

[!] [Codegen] warn: using experimental new codegen integration

[!] Can't merge pod_target_xcconfig for pod targets: ["expo-dev-menu", "Main", "ReactNativeCompatibles", "SafeAreaView", "Vendored"]. Singular build setting DEFINES_MODULE has different values.

[!] Can't merge pod_target_xcconfig for pod targets: ["expo-dev-menu", "Main", "ReactNativeCompatibles", "SafeAreaView", "Vendored"]. Singular build setting DEFINES_MODULE has different values.
➜  ios git:(One-for-All-144_3) 
かげかげ

Podfile をgit管理しなくなって、消してもうた。。。

expo ejct

でやり直し

かげかげ
Executing expo-router Pods/ExpoHead » Copy generated compatibility header

❌  (../../node_modules/expo-dev-menu/ios/DevMenuAppInstance.swift:55:57)

  53 |   }
  54 | 
> 55 |   override func extraModules(for bridge: RCTBridge!) -> [RCTBridgeModule]! {
     |                                                         ^ cannot override instance method result type '[any RCTBridgeModule]' with optional type '[any RCTBridgeModule]?'
  56 |     var modules: [RCTBridgeModule] = [DevMenuLoadingView.init()]
  57 |     modules.append(DevMenuRCTDevSettings.init())
  58 |     return modules


❌  (../../node_modules/expo-dev-menu/ios/DevMenuAppInstance.swift:49:34)

  47 |         packagerHost: packagerHost,
  48 |         enableDev: true,
> 49 |         enableMinification: false)
     |                                  ^ missing argument for parameter 'inlineSourceMap' in call
  50 |     }
  51 |     #endif
  52 |     return jsSourceUrl()


❌  (../../node_modules/expo-dev-menu/ios/ReactDelegateHandler/ExpoDevMenuReactDelegateHandler.swift:24:24)

  22 |   }()
  23 | 
> 24 |   public override func createRootView(reactDelegate: ExpoReactDelegate, bridge: RCTBridge, moduleName: String, initialProperties: [AnyHashable : Any]?) -> RCTRootView? {
     |                        ^ method does not override any method from its superclass
  25 |     if ExpoDevMenuReactDelegateHandler.shouldEnableAutoSetup {
  26 |       DevMenuManager.shared.currentBridge = bridge
  27 |     }

かげかげ

npm install expo-dev-menu@latest

rm -rf node_modules
rm -rf ios/Pods
npm install
cd ios && pod install

かげかげ
Generating Pods project
Setting USE_HERMES build settings
Setting REACT_NATIVE build settings
[Ccache]: Removing Ccache from CC, LD, CXX & LDPLUSPLUS build settings
Your app does not have a privacy manifest! A template has been generated containing Required Reasons API usage in the core React Native library. Please add the PrivacyInfo.xcprivacy file to your project and complete data use, tracking and any additional required reasons your app is using according to Apple's guidance: https://developer.apple.com/documentation/bundleresources/privacy_manifest_files. Then, you will need to manually add this file to your project in Xcode.
Setting CLANG_CXX_LANGUAGE_STANDARD to c++20 on /Users/ryokageyama/Documents/Develop/One-for-All/apps/expo/ios/HomeHelper.xcodeproj
Pod install took 21 [s] to run
Integrating client project
⚠️  Cannot resolve the path to "@v3/graphql" package.
expo_patch_react_imports! took 0.1051 seconds to transform files.
Pod installation complete! There are 83 dependencies from the Podfile and 84 total pods installed.

[!] [Codegen] warn: using experimental new codegen integration

[!] Can't merge pod_target_xcconfig for pod targets: ["expo-dev-menu", "Main", "ReactNativeCompatibles", "SafeAreaView", "Vendored"]. Singular build setting DEFINES_MODULE has different values.

[!] Can't merge pod_target_xcconfig for pod targets: ["expo-dev-menu", "Main", "ReactNativeCompatibles", "SafeAreaView", "Vendored"]. Singular build setting DEFINES_MODULE has different values.

[!] hermes-engine has added 1 script phase. Please inspect before executing a build. See `https://guides.cocoapods.org/syntax/podspec.html#script_phases` for more information.
➜  ios git:(One-for-All-144_3) 

かげかげ
pnpm clean
pnpm expo run:ios

❌  error: Codegen did not run properly in your project. Please reinstall cocoapods with `bundle exec pod install`.



› 1 error(s), and 0 warning(s)

CommandError: Failed to build iOS project. "xcodebuild" exited with error code 65.

かげかげ
gem install bundler --user-install
pnpm expo run:ios

❌  (../../node_modules/expo-updates/ios/EXUpdates/ReactDelegateHandler/ExpoUpdatesReactDelegateHandler.swift:47:24)

  45 |   }()
  46 | 
> 47 |   public override func createBridge(reactDelegate: ExpoReactDelegate, bridgeDelegate: RCTBridgeDelegate, launchOptions: [AnyHashable: Any]?) -> RCTBridge? {
     |                        ^ method does not override any method from its superclass
  48 |     if EXAppDefines.APP_DEBUG && !UpdatesUtils.isNativeDebuggingEnabled() {
  49 |       // In development builds with expo-dev-client, completes the auto-setup for development
  50 |       // builds with the expo-updates integration by passing a reference to DevLauncherController


❌  (../../node_modules/expo-updates/ios/EXUpdates/ReactDelegateHandler/ExpoUpdatesReactDelegateHandler.swift:75:24)

  73 |   }
  74 | 
> 75 |   public override func createRootView(reactDelegate: ExpoReactDelegate, bridge: RCTBridge, moduleName: String, initialProperties: [AnyHashable: Any]?) -> RCTRootView? {
     |                        ^ method does not override any method from its superclass
  76 |     if !shouldEnableAutoSetup {
  77 |       return nil
  78 |     }


❌  (../../node_modules/expo-updates/ios/EXUpdates/ReactDelegateHandler/ExpoUpdatesReactDelegateHandler.swift:69:27)

  67 |     controller.start()
  68 | 
> 69 |     self.bridgeDelegate = EXRCTBridgeDelegateInterceptor(bridgeDelegate: bridgeDelegate, interceptor: self)
     |                           ^ cannot find 'EXRCTBridgeDelegateInterceptor' in scope
  70 |     self.launchOptions = launchOptions
  71 | 
  72 |     return EXDeferredRCTBridge(delegate: self.bridgeDelegate!, launchOptions: self.launchOptions)


❌  (../../node_modules/expo-updates/ios/EXUpdates/Logging/UpdatesLogger.swift:14:91)

  12 |   static let EXPO_UPDATES_LOG_CATEGORY = "expo-updates"
  13 | 
> 14 |   private let logger = Logger(category: UpdatesLogger.EXPO_UPDATES_LOG_CATEGORY, options: [.logToOS, .logToFile])
     |                                                                                           ^ extra argument 'options' in call
  15 | 
  16 |   // MARK: - Public logging functions
  17 | 


❌  (../../node_modules/expo-updates/ios/EXUpdates/Logging/UpdatesLogger.swift:14:31)

  12 |   static let EXPO_UPDATES_LOG_CATEGORY = "expo-updates"
  13 | 
> 14 |   private let logger = Logger(category: UpdatesLogger.EXPO_UPDATES_LOG_CATEGORY, options: [.logToOS, .logToFile])
     |                               ^ missing argument for parameter 'subsystem' in call
  15 | 
  16 |   // MARK: - Public logging functions
  17 | 


❌  (../../node_modules/expo-updates/ios/EXUpdates/Logging/UpdatesLogger.swift:14:93)

  12 |   static let EXPO_UPDATES_LOG_CATEGORY = "expo-updates"
  13 | 
> 14 |   private let logger = Logger(category: UpdatesLogger.EXPO_UPDATES_LOG_CATEGORY, options: [.logToOS, .logToFile])
     |                                                                                             ^ reference to member 'logToOS' cannot be resolved without a contextual type
  15 | 
  16 |   // MARK: - Public logging functions
  17 | 


❌  (../../node_modules/expo-updates/ios/EXUpdates/Logging/UpdatesLogger.swift:14:103)

  12 |   static let EXPO_UPDATES_LOG_CATEGORY = "expo-updates"
  13 | 
> 14 |   private let logger = Logger(category: UpdatesLogger.EXPO_UPDATES_LOG_CATEGORY, options: [.logToOS, .logToFile])
     |                                                                                                       ^ reference to member 'logToFile' cannot be resolved without a contextual type
  15 | 
  16 |   // MARK: - Public logging functions
  17 | 


かげかげ
pnpm update expo-updates
pnpm run clean
pnpm run ios

❌  (../../node_modules/expo-dev-menu/ios/DevMenuAppInstance.swift:55:57)

  53 |   }
  54 | 
> 55 |   override func extraModules(for bridge: RCTBridge!) -> [RCTBridgeModule]! {
     |                                                         ^ cannot override instance method result type '[any RCTBridgeModule]' with optional type '[any RCTBridgeModule]?'
  56 |     var modules: [RCTBridgeModule] = [DevMenuLoadingView.init()]
  57 |     modules.append(DevMenuRCTDevSettings.init())
  58 |     return modules


❌  (../../node_modules/expo-dev-menu/ios/DevMenuAppInstance.swift:49:34)

  47 |         packagerHost: packagerHost,
  48 |         enableDev: true,
> 49 |         enableMinification: false)
     |                                  ^ missing argument for parameter 'inlineSourceMap' in call
  50 |     }
  51 |     #endif
  52 |     return jsSourceUrl()


❌  (../../node_modules/expo-dev-menu/ios/ReactDelegateHandler/ExpoDevMenuReactDelegateHandler.swift:24:24)

  22 |   }()
  23 | 
> 24 |   public override func createRootView(reactDelegate: ExpoReactDelegate, bridge: RCTBridge, moduleName: String, initialProperties: [AnyHashable : Any]?) -> RCTRootView? {
     |                        ^ method does not override any method from its superclass
  25 |     if ExpoDevMenuReactDelegateHandler.shouldEnableAutoSetup {
  26 |       DevMenuManager.shared.currentBridge = bridge
  27 |     }

かげかげ
pnpm update expo-dev-menu

pnpm run clean
pnpm run ios

❌  (../../node_modules/expo-dev-menu/ios/DevMenuAppInstance.swift:55:57)

  53 |   }
  54 | 
> 55 |   override func extraModules(for bridge: RCTBridge!) -> [RCTBridgeModule]! {
     |                                                         ^ cannot override instance method result type '[any RCTBridgeModule]' with optional type '[any RCTBridgeModule]?'
  56 |     var modules: [RCTBridgeModule] = [DevMenuLoadingView.init()]
  57 |     modules.append(DevMenuRCTDevSettings.init())
  58 |     return modules


❌  (../../node_modules/expo-dev-menu/ios/DevMenuAppInstance.swift:49:34)

  47 |         packagerHost: packagerHost,
  48 |         enableDev: true,
> 49 |         enableMinification: false)
     |                                  ^ missing argument for parameter 'inlineSourceMap' in call
  50 |     }
  51 |     #endif
  52 |     return jsSourceUrl()


❌  (../../node_modules/expo-dev-menu/ios/ReactDelegateHandler/ExpoDevMenuReactDelegateHandler.swift:24:24)

  22 |   }()
  23 | 
> 24 |   public override func createRootView(reactDelegate: ExpoReactDelegate, bridge: RCTBridge, moduleName: String, initialProperties: [AnyHashable : Any]?) -> RCTRootView? {
     |                        ^ method does not override any method from its superclass
  25 |     if ExpoDevMenuReactDelegateHandler.shouldEnableAutoSetup {
  26 |       DevMenuManager.shared.currentBridge = bridge
  27 |     }


› 3 error(s), and 0 warning(s)

CommandError: Failed to build iOS project. "xcodebuild" exited with error code 65.
 ELIFECYCLE  Command failed with exit code 1.
 WARN   Local package.json exists, but node_modules missing, did you mean to install?
➜
かげかげ
pnpm rm expo-dev-client
pnpm rm expo-dev-menu
pnpm add expo-updates@latest

うまくいったみたい

かげかげ

また、バージョンアップ

The following packages should be updated for best compatibility with the installed expo version:
  @expo/metro-config@0.17.7 - expected version: ~0.18.1
  @react-native-community/datetimepicker@7.6.3 - expected version: 8.0.1
  @shopify/flash-list@1.6.3 - expected version: 1.6.4
  expo@51.0.5 - expected version: ~51.0.6
  expo-constants@15.4.6 - expected version: ~16.0.1
  expo-linking@6.2.2 - expected version: ~6.3.1
  expo-router@3.4.10 - expected version: ~3.5.14
  expo-status-bar@1.11.1 - expected version: ~1.12.1
  expo-updates@0.25.11 - expected version: ~0.25.12
  react-native-gesture-handler@2.14.1 - expected version: ~2.16.1
  react-native-reanimated@3.6.3 - expected version: ~3.10.1
  react-native-safe-area-context@4.8.2 - expected version: 4.10.1
  react-native-screens@3.29.0 - expected version: 3.31.1
  @expo/config-plugins@7.9.2 - expected version: ~8.0.0
  @types/react@18.3.2 - expected version: ~18.2.79
  typescript@5.4.5 - expected version: ~5.3.3
Your project may not work correctly until you install the expected versions of the packages.
› Opening exp://192.168.1.58:8081 on iPhone 15 Pro

かげかげ

片っ端に上げていく

TypeScriptを5.4.5から5.3.3に下げるのは、なんか解せない。。。

かげかげ

作り直した方が早そうなので、作り直すことにした。

このスクラップは2024/05/18にクローズされました