2022-06-25

React Native: Problem with dependencies and archiving my project

I have returned to a project which I haven't worked on in a little while. I added a delete account feature and planned to release it to the apple store that day.

I ran npm install --legacy-peer-deps && cd ios && pod install. This all worked fine (my packages are a little out of date since I haven't worked in this project for a while so I had to user legacy-peer-deps instead).

Next step, I went to XCode and tried to archive my project as usual but got a build failed with the error being Undefined symbol: _swift_stdlib_isStackAllocationSafe - after some research

I found a solution on this post: Symbol(s) not found for architecture arm64 - XCode

There was a really helpful approved answer. I added the suggested code to my podfile and tried to run npm install react-native-purchases@latest as suggested. BUT, I am presented with the following error:

React Native purchase error code

At this point I'm thinking hmmm conflicting dependency let me try to install with npm install react-native-firebase/app and then this shows me the next error.

enter image description here

I try to install babel-plugin-root-import and then it shows me the first image error again and repeats. I'm a bit stuck, I just want to get this project back up and running but its a pain!

Here's my package.json for reference:

{
  "scripts": {
    "start": "react-native start",
    "android": "npx react-native run-android",
    "ios": "npx react-native run-ios --simulator='iPhone 13'",
    "start:development": "NODE_ENV=development npx react-native start",
    "start:production": "NODE_ENV=production npx react-native start"
  },
  "dependencies": {
    "@fawazahmed/react-native-read-more": "^2.2.2",
    "@invertase/react-native-apple-authentication": "^2.1.0",
    "@react-native-community/async-storage": "^1.12.1",
    "@react-native-community/blur": "^3.6.0",
    "@react-native-community/google-signin": "^5.0.0",
    "@react-native-community/masked-view": "^0.1.10",
    "@react-native-community/slider": "^3.0.3",
    "@react-native-firebase/app": "^13.0.1",
    "@react-native-firebase/auth": "^14.2.1",
    "@react-native-firebase/firestore": "^10.5.1",
    "@react-native-firebase/storage": "^13.0.1",
    "@react-navigation/bottom-tabs": "^5.11.7",
    "@react-navigation/native": "^5.9.2",
    "@react-navigation/stack": "^5.14.2",
    "expo": "~40.0.0",
    "expo-app-loading": "^1.0.1",
    "expo-apple-authentication": "~2.2.2",
    "expo-google-app-auth": "^8.1.4",
    "expo-google-sign-in": "~8.4.0",
    "expo-linear-gradient": "~8.4.0",
    "expo-notifications": "~0.8.2",
    "expo-splash-screen": "~0.8.0",
    "expo-status-bar": "~1.0.3",
    "expo-updates": "~0.4.0",
    "firebase": "^8.2.5",
    "lottie-react-native": "^4.0.2",
    "react": "16.13.1",
    "react-apple-signin-auth": "^0.0.7",
    "react-dom": "16.13.1",
    "react-native": "~0.63.4",
    "react-native-calendars": "^1.1254.0",
    "react-native-countdown-circle-timer": "^2.5.0",
    "react-native-device-info": "^8.0.7",
    "react-native-dotenv": "^3.3.1",
    "react-native-fast-image": "^8.5.11",
    "react-native-gesture-handler": "^1.9.0",
    "react-native-google-signin": "^2.1.1",
    "react-native-haptic-feedback": "^1.11.0",
    "react-native-input-scroll-view": "^1.11.0",
    "react-native-keep-awake": "^4.0.0",
    "react-native-linear-gradient": "^2.5.6",
    "react-native-parallax-header": "^1.1.4",
    "react-native-purchases": "^4.1.1",
    "react-native-reanimated": "^1.13.2",
    "react-native-responsive-screen": "^1.4.2",
    "react-native-safe-area-context": "^3.1.9",
    "react-native-screens": "^2.17.1",
    "react-native-sound": "^0.11.1",
    "react-native-svg": "12.1.0",
    "react-native-unimodules": "~0.12.0",
    "react-native-web": "~0.13.12",
    "react-navigation": "^4.4.3",
    "use-sound": "^2.0.1"
  },
  "devDependencies": {
    "@babel/core": "~7.9.0",
    "babel-jest": "~25.2.6",
    "babel-plugin-root-import": "^6.6.0",
    "eslint-import-resolver-babel-plugin-root-import": "^1.1.1",
    "jest": "~25.2.6",
    "metro-react-native-babel-preset": "^0.66.2",
    "prettier": "2.6.2",
    "react-test-renderer": "~16.13.1"
  },
  "private": true,
  "name": "Flexeee-RN",
  "version": "1.0.0"
}

PODFILE:

require_relative '../node_modules/react-native/scripts/react_native_pods'
require_relative '../node_modules/react-native-unimodules/cocoapods.rb'
require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules'

$FirebaseSDKVersion = '8.9.0'

platform :ios, '11.0'

target 'FlexeeeRN' do
  use_unimodules!
  config = use_native_modules!

  use_react_native!(:path => config["reactNativePath"])

  # Uncomment the code below to enable Flipper.
  #
  # You should not install Flipper in CI environments when creating release
  # builds, this will lead to significantly slower build times.
  #
  # Note that if you have use_frameworks! enabled, Flipper will not work.
  #
  #  use_flipper!
  #  post_install do |installer|
  #    flipper_post_install(installer)
  #  end
end

post_install do |installer|
  installer.pods_project.targets.each do |target|
   target.build_configurations.each do |config|
    config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '11.0'
   end
  end
 end

 post_install do |installer|
    react_native_post_install(installer)
    fix_library_search_paths(installer)
  end
end

def fix_library_search_paths(installer)
  def fix_config(config)
    lib_search_paths = config.build_settings["LIBRARY_SEARCH_PATHS"]
    if lib_search_paths
      if lib_search_paths.include?("$(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)") || lib_search_paths.include?("\"$(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)\"")
        # $(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME) causes problem with Xcode 12.5 + arm64 (Apple M1)
        # since the libraries there are only built for x86_64 and i386.
        lib_search_paths.delete("$(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)")
        lib_search_paths.delete("\"$(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)\"")
        if !(lib_search_paths.include?("$(SDKROOT)/usr/lib/swift") || lib_search_paths.include?("\"$(SDKROOT)/usr/lib/swift\""))
          # however, $(SDKROOT)/usr/lib/swift is required, at least if user is not running CocoaPods 1.11
          lib_search_paths.insert(0, "$(SDKROOT)/usr/lib/swift")
        end
      end
    end
  end

  projects = installer.aggregate_targets
    .map{ |t| t.user_project }
    .uniq{ |p| p.path }
    .push(installer.pods_project)

  projects.each do |project|
    project.build_configurations.each do |config|
      fix_config(config)
    end
    project.native_targets.each do |target|
      target.build_configurations.each do |config|
        fix_config(config)
      end
    end
    project.save()
  end
end

Any help is appreciated. Thanks for your time.

UPDATE: I did npm install react-native-purchases@latest --legacy-peer-deps as suggested below (seems to have worked). But now, when I run pod install it doesn't like the code I added into the Podfile and says:

[!] Invalid Podfile file: syntax error, unexpected end, expecting end-of-input.

 #  from /Users/jacksaunders/Flexeee-V2/ios/Podfile:40
 #  -------------------------------------------
 #    end
 >  end
 #  
 #  -------------------------------------------

I've double checked the code I've added and its the exact same. Unsure, what to do from here.



No comments:

Post a Comment