Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

SkData.h not found when using use_frameworks! #652

Closed
dpyeates opened this issue Jun 30, 2022 · 55 comments · Fixed by #1400 or #1484
Closed

SkData.h not found when using use_frameworks! #652

dpyeates opened this issue Jun 30, 2022 · 55 comments · Fixed by #1400 or #1484
Labels
question Further information is requested

Comments

@dpyeates
Copy link

Adding use_frameworks! :linkage => :static to my podlike (required for RN Firebase) and I get a failed build on skia due to missing headers?

.../node_modules/@shopify/react-native-skia/cpp/skia/include/core/SkStream.h:11:10: 'include/core/SkData.h' file not found

@chrfalch
Copy link
Contributor

chrfalch commented Jul 1, 2022

Hi, @dpyeates! I'm not able to find any mention of use_frameworks! :linkage => :static in the Firebase installation examples - I'm seeing that they require enabling frameworks, but the only requirement for this should be use_frameworks!? Setting linkage to static globally like you suggest looks a bit suspect as there might be other libs not working with this switch.

@chrfalch chrfalch added the question Further information is requested label Jul 1, 2022
@dpyeates
Copy link
Author

dpyeates commented Jul 11, 2022

@chrfalch agreed, I was using it temporarily as a work around waiting for a package update.

However, even just having use_frameworks! I still get the same error?

@shopify/react-native-skia/cpp/skia/include/core/SkStream.h:11:10: 'include/core/SkData.h' file not found

@dpyeates dpyeates changed the title SkData.h not found when using use_frameworks! :linkage => :static SkData.h not found when using use_frameworks! Jul 14, 2022
@dpyeates
Copy link
Author

dpyeates commented Jul 16, 2022

Has anyone been able to get RN Skia working in conjunction with Firebase and use_frameworks?
Would you be able to share your podfile config? I've been at this a while now and have tried seemingly every option without any success.

Here is my current pod file:

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

platform :ios, '12.4'
install! 'cocoapods', :deterministic_uuids => false

target 'RNApp' do
  config = use_native_modules!
  config = use_frameworks!
  $FirebaseSDKVersion = '9.3.0'
  $RNFirebaseAsStaticFramework = true
  $RNGoogleMobileAdsAsStaticFramework = true

  use_react_native!(
    :path => config[:reactNativePath],
    :hermes_enabled => true,
    :fabric_enabled => false,
    :app_path => "#{Pod::Config.instance.installation_root}/.."
  )

  pod 'rnmapbox-maps', :path => '../node_modules/@rnmapbox/maps', :inhibit_warnings => false

  pre_install do |installer|
    $RNMapboxMaps.pre_install(installer)
  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)
    __apply_Xcode_12_5_M1_post_install_workaround(installer) if defined?(__apply_Xcode_12_5_M1_post_install_workaround)
    $RNMapboxMaps.post_install(installer)
  end
end

@dpyeates
Copy link
Author

@chrfalch could you try building using use_frameworks! and see if you get the same error please?

@laudebugs
Copy link

laudebugs commented Jul 19, 2022

Well, I got it to work with the workaround below since we also use React Native Firebase and just got started with React Native Skia:


Found this ruby package called cocoapods-user-defined-build-types that "allows to specify how each pods are built" - as the package says.

So, in our case, we have:

Note: I've included my M1 specific workarounds but if you're on an intel, I'm assuming you won't need that.

plugin 'cocoapods-user-defined-build-types'

enable_user_defined_build_types!

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

platform :ios, '11'
install! 'cocoapods', :deterministic_uuids => false

# Replace RNAppName with your app name
target 'RNAppName' do

  config = use_native_modules!

  # Flags change depending on the env values.
  flags = get_default_flags()

  # Here's the specific fix for React Native Firebase
  pod "FirebaseCoreInternal", :build_type => :dynamic_framework
  pod "FirebaseCore", :build_type => :dynamic_framework
  
  use_native_modules!

  use_react_native!(
    :path => config[:reactNativePath],
    # to enable hermes on iOS, change `false` to `true` and then install pods
    :hermes_enabled => flags[:hermes_enabled],
    :fabric_enabled => flags[:fabric_enabled],
    # An absolute path to your application root.
    :app_path => "#{Pod::Config.instance.installation_root}/.."
  )

  ## All this is M1 mac specific
  post_install do |installer|
    installer.pods_project.targets.each do |target|
      case target.name
      when 'RCT-Folly'
        target.build_configurations.each do |config|
          config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '9.0'
        end
      else
        target.build_configurations.each do |config|
          config.build_settings['IPHONEOS_DEPLOYMENT_TARGET']= '12.0'
        end
      end
    end
    react_native_post_install(installer)
      installer.pods_project.targets.each do |target|
        target.build_configurations.each do |config|
          config.build_settings["ONLY_ACTIVE_ARCH"] = "NO"
        end
    end
    installer.aggregate_targets.first.user_project.native_targets.each do |target|
      target.build_configurations.each do |config|
        config.build_settings['LIBRARY_SEARCH_PATHS'] = ['$(inherited)', '$(SDKROOT)/usr/lib/swift']
      end
    end
    __apply_Xcode_12_5_M1_post_install_workaround(installer)
  end
end

@chrfalch
Copy link
Contributor

@laudebugs Thanks for the suggestion! @dpyeates Could you test out if this works for you?

@dpyeates
Copy link
Author

I'm trying :-) Having a few problems getting that gem to work. @laudebugs which version of CocoaPods are you using? I'm using 1.11.3 on an M1 Mac and I'm getting

[!] Your Podfile requires that the plugin cocoapods-user-defined-build-types be installed. Please install it and try installation again.

The gem installs OK after adding it to my Gemfile and doing a bundle install, but the pod install doesn't seem to be finding it. Still investigating - will update ASAP.

@laudebugs
Copy link

try running gem install cocoapods-user-defined-build-types in your ios folder?

I'm trying :-) Having a few problems getting that gem to work. @laudebugs which version of CocoaPods are you using? I'm using 1.11.3 on an M1 Mac and I'm getting

[!] Your Podfile requires that the plugin cocoapods-user-defined-build-types be installed. Please install it and try installation again.

The gem installs OK after adding it to my Gemfile and doing a bundle install, but the pod install doesn't seem to be finding it. Still investigating - will update ASAP.

@dpyeates
Copy link
Author

dpyeates commented Jul 19, 2022

Hmmm, no idea why that made a difference but it did. gem seems to work OK now.
I had to add additional Firebase pod as I am using other Firebase libraries:

pod "FirebaseCoreInternal", :build_type => :dynamic_framework
pod "FirebaseCore", :build_type => :dynamic_framework
pod "FirebaseStorageInternal", :build_type => :dynamic_framework
pod "FirebaseAppCheckInterop", :build_type => :dynamic_framework
pod "FirebaseAuthInterop", :build_type => :dynamic_framework
pod "FirebaseCoreExtension", :build_type => :dynamic_framework
pod "FirebaseCrashlytics", :build_type => :dynamic_framework

However, I don't get to tell if Skia builds as Firebase modules fail to build before hand.

Screenshot 2022-07-19 at 18 06 38

@laudebugs
Copy link

laudebugs commented Jul 19, 2022

Hmmm, no idea why that made a difference but it did. gem seems to work OK now. I had to add additional Firebase pod as I am using other Firebase libraries:

pod "FirebaseCoreInternal", :build_type => :dynamic_framework
pod "FirebaseCore", :build_type => :dynamic_framework
pod "FirebaseStorageInternal", :build_type => :dynamic_framework
pod "FirebaseAppCheckInterop", :build_type => :dynamic_framework
pod "FirebaseAuthInterop", :build_type => :dynamic_framework
pod "FirebaseCoreExtension", :build_type => :dynamic_framework
pod "FirebaseCrashlytics", :build_type => :dynamic_framework

However, I don't get to tell if Skia builds as Firebase modules fail to build before hand.

Screenshot 2022-07-19 at 18 06 38

This happens even after cleaning your ios build folder and reinstalling pods?

@dpyeates
Copy link
Author

Yes. It seems there is an issue with @react-native-firebase/storage which means this isn't working quite right. If I remove @react-native-firebase/storage from my build I got one other Skia related error related to react-native bridging paths which I resolved with another workaround in the post_install before I got a successful build.

Worth noting that I also got it working without using the cocoapods-user-defined-build-types gem, by setting RNFirebaseAsStaticFramework to true and setting modular_headers => true on each Firebase library that I required.

$RNFirebaseAsStaticFramework = true
pod "[FB pod name here]", :modular_headers => true

To summarise: RNSkia doesn't build with use_frameworks! at the moment. So any dependent library you use that does require frameworks (such as Firebase) you will need to at to your pod file and set modular_headers => true.

Here is my pod file - I have FirebaseStorage excluded until I get a fix here

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

platform :ios, '12.4'
install! 'cocoapods', :deterministic_uuids => false

target 'fdeck' do
  config = use_native_modules!

  $FirebaseSDKVersion = '9.3.0'
  $RNFirebaseAsStaticFramework = true
  pod "FirebaseCore", :modular_headers => true
  pod "FirebaseCoreInternal", :modular_headers => true
  pod "FirebaseCoreExtension", :modular_headers => true
  #pod 'FirebaseStorage', :modular_headers => true
  #pod "FirebaseStorageInternal", :modular_headers => true
  pod "FirebaseAppCheckInterop", :modular_headers => true
  pod "FirebaseAuthInterop", :modular_headers => true
  pod "FirebaseCrashlytics", :modular_headers => true
  pod "GoogleUtilities", :modular_headers => true

  use_react_native!(
    :path => config[:reactNativePath],
    :hermes_enabled => true,
    :fabric_enabled => false,
    :app_path => "#{Pod::Config.instance.installation_root}/.."
  )

  pod 'rnmapbox-maps', :path => '../node_modules/@rnmapbox/maps', :inhibit_warnings => false

  pre_install do |installer|
    $RNMapboxMaps.pre_install(installer)
  end

  # Enables Flipper.
  #
  # Note that if you have use_frameworks! enabled, Flipper will not work and
  # you should disable these next few lines.
  use_flipper!()

  post_install do |installer|

  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
         config.build_settings['HEADER_SEARCH_PATHS'] ||= '$(inherited) '
         config.build_settings['HEADER_SEARCH_PATHS'] << '"$(PODS_ROOT)/Headers/Private/React-bridging/react/bridging" '
         config.build_settings['HEADER_SEARCH_PATHS'] << '"$(PODS_CONFIGURATION_BUILD_DIR)/React-bridging/react_bridging.framework/Headers" '
       end
     end

    installer.pods_project.targets.each do |target|
      target.build_configurations.each do |config|
        # This makes the iOS build much quieter.
        # In particular libevent dependency, pulled in by react core / flipper items is ridiculously noisy
        config.build_settings["GCC_WARN_INHIBIT_ALL_WARNINGS"] = "YES"
        # Another workaround needed for static framework build
        # Bitcode will not work with it, but that's okay, bitcode is deprecated
        # https://github.com/facebook/react-native/pull/34030#issuecomment-1171197734
        config.build_settings["ENABLE_BITCODE"] = "NO"
        # Required for Apple Silicon Macs
        config.build_settings["ONLY_ACTIVE_ARCH"] = "NO"
        # Required to allow react-native-skia to build (hopefully can come out with next RN patch release)
        config.build_settings['HEADER_SEARCH_PATHS'] ||= '$(inherited) '
        config.build_settings['HEADER_SEARCH_PATHS'] << '"$(PODS_ROOT)/Headers/Private/React-bridging/react/bridging" '
        config.build_settings['HEADER_SEARCH_PATHS'] << '"$(PODS_CONFIGURATION_BUILD_DIR)/React-bridging/react_bridging.framework/Headers" '
      end
    end
    # Apple Silicon builds require a library path tweak for Swift discovery or we get "symbol not found"
    installer.aggregate_targets.first.user_project.native_targets.each do |target|
      target.build_configurations.each do |config|
        config.build_settings['LIBRARY_SEARCH_PATHS'] = ['$(inherited)', '$(SDKROOT)/usr/lib/swift']
      end
    end
    __apply_Xcode_12_5_M1_post_install_workaround(installer)
    $RNMapboxMaps.post_install(installer)
  end
end

@reichhartd
Copy link

Unfortunately, these workarounds do not work for us because we need to use use_frameworks! :linkage => :static (https://github.com/idnow/de.idnow.ios/issues/119).
@chrfalch Are there any plans to make react-native-skia compatible with this build type? This is currently holding us back from integrating this library.

@chrfalch
Copy link
Contributor

Hi @reichhartd - could you look into how this can be done and what we'd need to support? A PR would be very welcome.

@reichhartd
Copy link

reichhartd commented Jul 27, 2022

Unfortunately, I have only rudimentary knowledge of cocoapods myself. I am currently reading up on the exact difference: Cocoa Touch Static Library vs. Cocoa Touch Framework

When I look at a similar issue with sentry-react-native (getsentry/sentry-react-native#2369), the problem seems to be a reference to a private cocoa SDK class.

I also have a lot to do at the moment, so I can't promise to take over the issue.

Edit: This article explain the difference better: Basic overview of static and dynamic frameworks on iOS

@reichhartd
Copy link

It works in combination with use_frameworks! linkage: :static if you remove the folder prefix from the header imports of the Skia lib.
I don't know how reasonable these contribution and a pull request would be though. Since you would have to change a large part of the lib, I would say that is rather unrealistically.

image

@imsherrill
Copy link

I'm seeing the same as @dpyeates and @reichhartd

@trymbill
Copy link

trymbill commented Aug 24, 2022

I'm also seeing this. Forced to run with use_frameworks! because of react-native-firebase (invertase/react-native-firebase#6322).

@evelant
Copy link

evelant commented Aug 29, 2022

How can we move this forward? What changes need to be made to support use_frameworks? react-native-firebase is perhaps one of the most popular libraries and it has a hard requirement on use_frameworks going forward due to the underlying upstream iOS firebase libraries. It would be a shame if nobody using firebase could use skia!

@evelant
Copy link

evelant commented Aug 29, 2022

As a very temporary workaround you can roll back to react-native-firebase version 14.11.1 and remove use_frameworks, that's the last version of rnfirebase that can build without use_frameworks.

@chrfalch
Copy link
Contributor

Would it be possible to create a small repo showing this issue (preferably as a Github repo) so that we can investigate?

@reichhartd
Copy link

The easiest way is to add the line use_frameworks! linkage: :static to the Podfile in the example project of this repository, and disable Flipper.

Otherwise, I created a repository here, for which I added the React Native TypeScript template. Only react-native-skia was installed, and just the line use_frameworks! linkage: :static was added to the Podfile.

The error appears when you try to launch the iOS app.

@guhcostan-tw
Copy link

Same here!

@enchorb
Copy link

enchorb commented Sep 17, 2022

Any updates on this issue?

@chrfalch
Copy link
Contributor

I tried adding use_frameworks! linkage: :static to a new RN 0.70.0 project and ended up with an error about Flipper not being found - so it doesn't even work with Flipper?

I found some information about Firebase now supporting static frameworks here: https://firebase.google.com/docs/ios/link-firebase-static-dynamic

@reichhartd
Copy link

reichhartd commented Sep 19, 2022

Flipper does not work with use_frameworks! as described in my comment above, and also in the Podfile of the template.
https://github.com/facebook/react-native/blob/0.70-stable/template/ios/Podfile#L20-L23

@chrfalch
Copy link
Contributor

Correct - and I think the problem lies with Firebase, could you all try to follow the link and see if there are other options linking Firebase in later versions that doesn't affect linking of all other libraries in the App?

@Sundarcj
Copy link

any update on this issue?

@reichhartd
Copy link

reichhartd commented Sep 22, 2022

This won't work for us, as we also have react-native-idnow-videoident as a hard-dependency, which also requires use_frameworks!. I created an issue in their repository a couple months ago, if it is possible to set the link type freely. Unfortunately there is no answer yet.

I don't have a strong opinion which one I prefer, I think it should be up to the user which link type to use, because otherwise there will always be conflicting libraries.

@gasolin
Copy link

gasolin commented Nov 23, 2022

for Expo/EAS user who want migrate to firebase analytics, install @react-native-firebase/app 14.12.0 works without this error

packages

"@react-native-firebase/app": "14.12.0",
"@react-native-firebase/analytics": "14.12.0",

app.config

  plugins: [
  '@react-native-firebase/app',
  ]

(no need expo-build-properties, so not conflict with react-native-skia)

@chrfalch
Copy link
Contributor

Thanks to @gasolin for providing this info! Appreciate it :)

@Lamonarch87
Copy link

Lamonarch87 commented Dec 15, 2022

For Expo/EAS users, following @hieucoi96's workaround you can build a plugin to (dangerously) modify Podfile following the template provided by Expo (Podfile):

withSkia.js

const plugins = require('expo/config-plugins');
const {
    mergeContents
} = require("@expo/config-plugins/build/utils/generateCode");
const path = require('path');
const fs = require('fs');

module.exports = function withSkia(config) {
    return plugins.withDangerousMod(config, [
        "ios",
        async (config) => {
            const filePath = path.join(
                config.modRequest.platformProjectRoot,
                "Podfile"
            );
            const contents = fs.readFileSync(filePath, "utf-8");

            const preinstallSkia = mergeContents({
                tag: "skia",
                src: contents,
                newSrc: [`pre_install do |installer|`,
                    `Pod::Installer::Xcode::TargetValidator.send(:define_method, :verify_no_static_framework_transitive_dependencies) {}`,
                    `installer.pod_targets.each do |pod|`,
                    `bt = pod.send(:build_type)`,
                    `if ['React','react-native-skia/Api','react-native-skia/Jsi','react-native-skia/RNSkia','react-native-skia/SkiaHeaders','react-native-skia/Utils','react-native-skia'].include?(pod.name)`,
                    `puts "Overriding the build_type to static_library from static_framework for #{pod.name}"`,
                    `def pod.build_type;`,
                    `Pod::BuildType.static_library`,
                    `end`,
                    `end`,
                    `end`,
                    `installer.pod_targets.each do |pod|`,
                    `bt = pod.send(:build_type)`,
                    `puts "#{pod.name} (#{bt})"`,
                    `puts "  linkage: #{bt.send(:linkage)} packaging: #{bt.send(:packaging)}"`,
                    `end`,
                    `end`].join("\n"),
                anchor: "flags = get_default_flags()",
                offset: 0,
                comment: "#",
            });

            fs.writeFileSync(filePath, preinstallSkia.contents);

            return config;
        }
    ]);
}

app.json

"plugins": [
      [
        "expo-build-properties",
        {
          "ios": {
            "useFrameworks": "static"
          }
        }
      ],
      ["PATH_TO_FILE/withSkia"]
],

"expo": "^47.0.0",
"@shopify/react-native-skia": "0.1.165",
"@react-native-firebase/app": "~15.4.0",

@evelant
Copy link

evelant commented Feb 15, 2023

@chrfalch @wcandillon Any chance of an official fix for this sometime soon?

The use_frameworks! requirement for react-native-firebase has been around for a couple major versions now. This is the only major community library remaining that I can think of that doesn't support use_frameworks! yet. I'd love to provide a proper fix pr but I have zero native iOS experience so I'm not really in a position to do that right now.

chrfalch added a commit that referenced this issue Mar 1, 2023
When using the Firebase library we are required to add `use_frameworks! :linkage => :static` to the Pod file of the consuming app. This has until now caused some issues with building Skia on iOS (a workaround exists, but it shouldn't be necessary).

The reason for the problem is that RN Skia uses subspecs with header mappings (we are trying to preserve some of the file structure to make our external Skia includes build correctly) which isn't used when use_frameworks are set. This causes XCode to not find the include files.

This commit fixes this by removing the subspec and adding header search paths for the Skia pod. Only the pod file is changed, so this will not affect Android build.

fixes #652
wcandillon added a commit that referenced this issue Mar 2, 2023
When using the Firebase library we are required to add `use_frameworks! :linkage => :static` to the Pod file of the consuming app. This has until now caused some issues with building Skia on iOS (a workaround exists, but it shouldn't be necessary).

The reason for the problem is that RN Skia uses subspecs with header mappings (we are trying to preserve some of the file structure to make our external Skia includes build correctly) which isn't used when use_frameworks are set. This causes XCode to not find the include files.

This commit fixes this by removing the subspec and adding header search paths for the Skia pod. Only the pod file is changed, so this will not affect Android build.

fixes #652

Co-authored-by: William Candillon <[email protected]>
@arihirsch
Copy link

Hey,

My team doesn't use use_frameworks and this change seems to have broken things for us.

Started getting the same error mentioned in the original post on build:
'include/core/SkData.h' file not found

Any idea why that might be? For now we've downgraded back to 175 but would like to be able to stay up to date.

Thanks!

@chrfalch
Copy link
Contributor

Did you remember to do pod install after the change? (stupid question probl.)

@arihirsch
Copy link

not a stupid question... but yes, we tried a couple times and even did a fresh install after clearing the pod cache completely. Still end up with that file not found error on iOS build.

@chrfalch
Copy link
Contributor

@arihirsch: I'm able to install in a new, blank React Native project that does not have useFramework in the pod file without any issues. I've tested this on RN 0.69 and RN 0.71 and both seems to be working as expected.

@sarulathadurai
Copy link

Hi I tried @hieucoi96 solution my build is successful but it is closing unexpectedly!This is how my podfile looks now

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

platform :ios, min_ios_version_supported
prepare_react_native_project!

# If you are using a `react-native-flipper` your iOS build will fail when `NO_FLIPPER=1` is set.
# because `react-native-flipper` depends on (FlipperKit,...) that will be excluded
#
# To fix this you can also exclude `react-native-flipper` using a `react-native.config.js`
# ```js
# module.exports = {
#   dependencies: {
#     ...(process.env.NO_FLIPPER ? { 'react-native-flipper': { platforms: { ios: null } } } : {}),
# ```
flipper_config = ENV['NO_FLIPPER'] == "1" ? FlipperConfiguration.disabled : FlipperConfiguration.enabled

linkage = ENV['USE_FRAMEWORKS']
if linkage != nil
  Pod::UI.puts "Configuring Pod with #{linkage}ally linked Frameworks".green
  use_frameworks! :linkage => linkage.to_sym
end

target 'doodly' do
  config = use_native_modules!
  use_frameworks! :linkage => :static
  $RNFirebaseAsStaticFramework = true

  # Flags change depending on the env values.
  flags = get_default_flags()

  use_react_native!(
    :path => config[:reactNativePath],
    # Hermes is now enabled by default. Disable by setting this flag to false.
    # Upcoming versions of React Native may rely on get_default_flags(), but
    # we make it explicit here to aid in the React Native upgrade process.
    :hermes_enabled => flags[:hermes_enabled],
    :fabric_enabled => flags[:fabric_enabled],
    # Enables Flipper.
    #
    # Note that if you have use_frameworks! enabled, Flipper will not work and
    # you should disable the next line.
    # :flipper_configuration => flipper_config,
    # An absolute path to your application root.
    :app_path => "#{Pod::Config.instance.installation_root}/.."
  )

  target 'doodlyTests' do
    inherit! :complete
    # Pods for testing
  end

  $static_library = [
   'React',
   'react-native-skia/Api',
   'react-native-skia/Jsi',
   'react-native-skia/RNSkia',
   'react-native-skia/SkiaHeaders',
   'react-native-skia/Utils',
   'react-native-skia',
  ]

  pre_install do |installer|
      Pod::Installer::Xcode::TargetValidator.send(:define_method, :verify_no_static_framework_transitive_dependencies) {}
      installer.pod_targets.each do |pod|
        bt = pod.send(:build_type)
        if $static_library.include?(pod.name)
          puts "Overriding the build_type to static_library from static_framework for #{pod.name}"
          def pod.build_type;
            Pod::BuildType.static_library
          end
        end
      end
      installer.pod_targets.each do |pod|
        bt = pod.send(:build_type)
        puts "#{pod.name} (#{bt})"
        puts "  linkage: #{bt.send(:linkage)} packaging: #{bt.send(:packaging)}"
      end
  end

  post_install do |installer|
    react_native_post_install(
      installer,
      # Set `mac_catalyst_enabled` to `true` in order to apply patches
      # necessary for Mac Catalyst builds
      :mac_catalyst_enabled => false
    )
    __apply_Xcode_12_5_M1_post_install_workaround(installer)
  end
end

@Jonatthu
Copy link

Jonatthu commented Mar 23, 2023

@chrfalch this is how my Podlock looks like:

I had to downgrade my skia version to 175, but it fails with 178 with this error message:
'include/core/SkData.h' file not found when building.

With this podlock works, but upgrading skia to the latest version fails

PODS:
  - boost (1.76.0)
  - DoubleConversion (1.1.6)
  - EXApplication (5.1.1):
    - ExpoModulesCore
  - EXAV (13.2.1):
    - ExpoModulesCore
    - ReactCommon/turbomodule/core
  - EXCalendar (11.1.1):
    - ExpoModulesCore
  - EXCamera (13.2.1):
    - ExpoModulesCore
  - EXConstants (14.2.1):
    - ExpoModulesCore
  - EXDocumentPicker (11.2.1):
    - ExpoModulesCore
  - EXFileSystem (15.2.2):
    - ExpoModulesCore
  - EXFont (11.1.1):
    - ExpoModulesCore
  - EXImageLoader (4.0.0):
    - ExpoModulesCore
    - React-Core
  - Expo (48.0.9):
    - ExpoModulesCore
  - ExpoBlur (12.2.2):
    - ExpoModulesCore
  - ExpoDevice (5.2.1):
    - ExpoModulesCore
  - ExpoImageManipulator (11.1.1):
    - EXImageLoader
    - ExpoModulesCore
  - ExpoImagePicker (14.1.1):
    - ExpoModulesCore
  - ExpoKeepAwake (12.0.1):
    - ExpoModulesCore
  - ExpoLinearGradient (12.1.2):
    - ExpoModulesCore
  - ExpoModulesCore (1.2.6):
    - React-Core
    - React-RCTAppDelegate
    - ReactCommon/turbomodule/core
  - ExpoSystemUI (2.2.1):
    - ExpoModulesCore
  - ExpoVideoThumbnails (7.2.1):
    - ExpoModulesCore
  - ExpoWebBrowser (12.1.1):
    - ExpoModulesCore
  - EXPrint (12.2.1):
    - ExpoModulesCore
  - EXSplashScreen (0.18.1):
    - ExpoModulesCore
    - React-Core
  - FBLazyVector (0.71.4)
  - FBReactNativeSpec (0.71.4):
    - RCT-Folly (= 2021.07.22.00)
    - RCTRequired (= 0.71.4)
    - RCTTypeSafety (= 0.71.4)
    - React-Core (= 0.71.4)
    - React-jsi (= 0.71.4)
    - ReactCommon/turbomodule/core (= 0.71.4)
  - fmt (6.2.1)
  - glog (0.3.5)
  - hermes-engine (0.71.4):
    - hermes-engine/Pre-built (= 0.71.4)
  - hermes-engine/Pre-built (0.71.4)
  - libevent (2.1.12)
  - RCT-Folly (2021.07.22.00):
    - boost
    - DoubleConversion
    - fmt (~> 6.2.1)
    - glog
    - RCT-Folly/Default (= 2021.07.22.00)
  - RCT-Folly/Default (2021.07.22.00):
    - boost
    - DoubleConversion
    - fmt (~> 6.2.1)
    - glog
  - RCT-Folly/Futures (2021.07.22.00):
    - boost
    - DoubleConversion
    - fmt (~> 6.2.1)
    - glog
    - libevent
  - RCTRequired (0.71.4)
  - RCTTypeSafety (0.71.4):
    - FBLazyVector (= 0.71.4)
    - RCTRequired (= 0.71.4)
    - React-Core (= 0.71.4)
  - React (0.71.4):
    - React-Core (= 0.71.4)
    - React-Core/DevSupport (= 0.71.4)
    - React-Core/RCTWebSocket (= 0.71.4)
    - React-RCTActionSheet (= 0.71.4)
    - React-RCTAnimation (= 0.71.4)
    - React-RCTBlob (= 0.71.4)
    - React-RCTImage (= 0.71.4)
    - React-RCTLinking (= 0.71.4)
    - React-RCTNetwork (= 0.71.4)
    - React-RCTSettings (= 0.71.4)
    - React-RCTText (= 0.71.4)
    - React-RCTVibration (= 0.71.4)
  - React-callinvoker (0.71.4)
  - React-Codegen (0.71.4):
    - FBReactNativeSpec
    - hermes-engine
    - RCT-Folly
    - RCTRequired
    - RCTTypeSafety
    - React-Core
    - React-jsi
    - React-jsiexecutor
    - ReactCommon/turbomodule/bridging
    - ReactCommon/turbomodule/core
  - React-Core (0.71.4):
    - glog
    - hermes-engine
    - RCT-Folly (= 2021.07.22.00)
    - React-Core/Default (= 0.71.4)
    - React-cxxreact (= 0.71.4)
    - React-hermes
    - React-jsi (= 0.71.4)
    - React-jsiexecutor (= 0.71.4)
    - React-perflogger (= 0.71.4)
    - Yoga
  - React-Core/CoreModulesHeaders (0.71.4):
    - glog
    - hermes-engine
    - RCT-Folly (= 2021.07.22.00)
    - React-Core/Default
    - React-cxxreact (= 0.71.4)
    - React-hermes
    - React-jsi (= 0.71.4)
    - React-jsiexecutor (= 0.71.4)
    - React-perflogger (= 0.71.4)
    - Yoga
  - React-Core/Default (0.71.4):
    - glog
    - hermes-engine
    - RCT-Folly (= 2021.07.22.00)
    - React-cxxreact (= 0.71.4)
    - React-hermes
    - React-jsi (= 0.71.4)
    - React-jsiexecutor (= 0.71.4)
    - React-perflogger (= 0.71.4)
    - Yoga
  - React-Core/DevSupport (0.71.4):
    - glog
    - hermes-engine
    - RCT-Folly (= 2021.07.22.00)
    - React-Core/Default (= 0.71.4)
    - React-Core/RCTWebSocket (= 0.71.4)
    - React-cxxreact (= 0.71.4)
    - React-hermes
    - React-jsi (= 0.71.4)
    - React-jsiexecutor (= 0.71.4)
    - React-jsinspector (= 0.71.4)
    - React-perflogger (= 0.71.4)
    - Yoga
  - React-Core/RCTActionSheetHeaders (0.71.4):
    - glog
    - hermes-engine
    - RCT-Folly (= 2021.07.22.00)
    - React-Core/Default
    - React-cxxreact (= 0.71.4)
    - React-hermes
    - React-jsi (= 0.71.4)
    - React-jsiexecutor (= 0.71.4)
    - React-perflogger (= 0.71.4)
    - Yoga
  - React-Core/RCTAnimationHeaders (0.71.4):
    - glog
    - hermes-engine
    - RCT-Folly (= 2021.07.22.00)
    - React-Core/Default
    - React-cxxreact (= 0.71.4)
    - React-hermes
    - React-jsi (= 0.71.4)
    - React-jsiexecutor (= 0.71.4)
    - React-perflogger (= 0.71.4)
    - Yoga
  - React-Core/RCTBlobHeaders (0.71.4):
    - glog
    - hermes-engine
    - RCT-Folly (= 2021.07.22.00)
    - React-Core/Default
    - React-cxxreact (= 0.71.4)
    - React-hermes
    - React-jsi (= 0.71.4)
    - React-jsiexecutor (= 0.71.4)
    - React-perflogger (= 0.71.4)
    - Yoga
  - React-Core/RCTImageHeaders (0.71.4):
    - glog
    - hermes-engine
    - RCT-Folly (= 2021.07.22.00)
    - React-Core/Default
    - React-cxxreact (= 0.71.4)
    - React-hermes
    - React-jsi (= 0.71.4)
    - React-jsiexecutor (= 0.71.4)
    - React-perflogger (= 0.71.4)
    - Yoga
  - React-Core/RCTLinkingHeaders (0.71.4):
    - glog
    - hermes-engine
    - RCT-Folly (= 2021.07.22.00)
    - React-Core/Default
    - React-cxxreact (= 0.71.4)
    - React-hermes
    - React-jsi (= 0.71.4)
    - React-jsiexecutor (= 0.71.4)
    - React-perflogger (= 0.71.4)
    - Yoga
  - React-Core/RCTNetworkHeaders (0.71.4):
    - glog
    - hermes-engine
    - RCT-Folly (= 2021.07.22.00)
    - React-Core/Default
    - React-cxxreact (= 0.71.4)
    - React-hermes
    - React-jsi (= 0.71.4)
    - React-jsiexecutor (= 0.71.4)
    - React-perflogger (= 0.71.4)
    - Yoga
  - React-Core/RCTSettingsHeaders (0.71.4):
    - glog
    - hermes-engine
    - RCT-Folly (= 2021.07.22.00)
    - React-Core/Default
    - React-cxxreact (= 0.71.4)
    - React-hermes
    - React-jsi (= 0.71.4)
    - React-jsiexecutor (= 0.71.4)
    - React-perflogger (= 0.71.4)
    - Yoga
  - React-Core/RCTTextHeaders (0.71.4):
    - glog
    - hermes-engine
    - RCT-Folly (= 2021.07.22.00)
    - React-Core/Default
    - React-cxxreact (= 0.71.4)
    - React-hermes
    - React-jsi (= 0.71.4)
    - React-jsiexecutor (= 0.71.4)
    - React-perflogger (= 0.71.4)
    - Yoga
  - React-Core/RCTVibrationHeaders (0.71.4):
    - glog
    - hermes-engine
    - RCT-Folly (= 2021.07.22.00)
    - React-Core/Default
    - React-cxxreact (= 0.71.4)
    - React-hermes
    - React-jsi (= 0.71.4)
    - React-jsiexecutor (= 0.71.4)
    - React-perflogger (= 0.71.4)
    - Yoga
  - React-Core/RCTWebSocket (0.71.4):
    - glog
    - hermes-engine
    - RCT-Folly (= 2021.07.22.00)
    - React-Core/Default (= 0.71.4)
    - React-cxxreact (= 0.71.4)
    - React-hermes
    - React-jsi (= 0.71.4)
    - React-jsiexecutor (= 0.71.4)
    - React-perflogger (= 0.71.4)
    - Yoga
  - React-CoreModules (0.71.4):
    - RCT-Folly (= 2021.07.22.00)
    - RCTTypeSafety (= 0.71.4)
    - React-Codegen (= 0.71.4)
    - React-Core/CoreModulesHeaders (= 0.71.4)
    - React-jsi (= 0.71.4)
    - React-RCTBlob
    - React-RCTImage (= 0.71.4)
    - ReactCommon/turbomodule/core (= 0.71.4)
  - React-cxxreact (0.71.4):
    - boost (= 1.76.0)
    - DoubleConversion
    - glog
    - hermes-engine
    - RCT-Folly (= 2021.07.22.00)
    - React-callinvoker (= 0.71.4)
    - React-jsi (= 0.71.4)
    - React-jsinspector (= 0.71.4)
    - React-logger (= 0.71.4)
    - React-perflogger (= 0.71.4)
    - React-runtimeexecutor (= 0.71.4)
  - React-hermes (0.71.4):
    - DoubleConversion
    - glog
    - hermes-engine
    - RCT-Folly (= 2021.07.22.00)
    - RCT-Folly/Futures (= 2021.07.22.00)
    - React-cxxreact (= 0.71.4)
    - React-jsi
    - React-jsiexecutor (= 0.71.4)
    - React-jsinspector (= 0.71.4)
    - React-perflogger (= 0.71.4)
  - React-jsi (0.71.4):
    - boost (= 1.76.0)
    - DoubleConversion
    - glog
    - hermes-engine
    - RCT-Folly (= 2021.07.22.00)
  - React-jsiexecutor (0.71.4):
    - DoubleConversion
    - glog
    - hermes-engine
    - RCT-Folly (= 2021.07.22.00)
    - React-cxxreact (= 0.71.4)
    - React-jsi (= 0.71.4)
    - React-perflogger (= 0.71.4)
  - React-jsinspector (0.71.4)
  - React-logger (0.71.4):
    - glog
  - react-native-safe-area-context (4.5.0):
    - RCT-Folly
    - RCTRequired
    - RCTTypeSafety
    - React-Core
    - ReactCommon/turbomodule/core
  - react-native-skia (0.1.175):
    - React
    - React-callinvoker
    - React-Core
    - react-native-skia/Api (= 0.1.175)
    - react-native-skia/Jsi (= 0.1.175)
    - react-native-skia/RNSkia (= 0.1.175)
    - react-native-skia/SkiaHeaders (= 0.1.175)
    - react-native-skia/Utils (= 0.1.175)
  - react-native-skia/Api (0.1.175):
    - React
    - React-callinvoker
    - React-Core
  - react-native-skia/Jsi (0.1.175):
    - React
    - React-callinvoker
    - React-Core
  - react-native-skia/RNSkia (0.1.175):
    - React
    - React-callinvoker
    - React-Core
  - react-native-skia/SkiaHeaders (0.1.175):
    - React
    - React-callinvoker
    - React-Core
  - react-native-skia/Utils (0.1.175):
    - React
    - React-callinvoker
    - React-Core
  - react-native-slider (4.4.2):
    - React-Core
  - react-native-webview (11.26.1):
    - React-Core
  - React-perflogger (0.71.4)
  - React-RCTActionSheet (0.71.4):
    - React-Core/RCTActionSheetHeaders (= 0.71.4)
  - React-RCTAnimation (0.71.4):
    - RCT-Folly (= 2021.07.22.00)
    - RCTTypeSafety (= 0.71.4)
    - React-Codegen (= 0.71.4)
    - React-Core/RCTAnimationHeaders (= 0.71.4)
    - React-jsi (= 0.71.4)
    - ReactCommon/turbomodule/core (= 0.71.4)
  - React-RCTAppDelegate (0.71.4):
    - RCT-Folly
    - RCTRequired
    - RCTTypeSafety
    - React-Core
    - ReactCommon/turbomodule/core
  - React-RCTBlob (0.71.4):
    - hermes-engine
    - RCT-Folly (= 2021.07.22.00)
    - React-Codegen (= 0.71.4)
    - React-Core/RCTBlobHeaders (= 0.71.4)
    - React-Core/RCTWebSocket (= 0.71.4)
    - React-jsi (= 0.71.4)
    - React-RCTNetwork (= 0.71.4)
    - ReactCommon/turbomodule/core (= 0.71.4)
  - React-RCTImage (0.71.4):
    - RCT-Folly (= 2021.07.22.00)
    - RCTTypeSafety (= 0.71.4)
    - React-Codegen (= 0.71.4)
    - React-Core/RCTImageHeaders (= 0.71.4)
    - React-jsi (= 0.71.4)
    - React-RCTNetwork (= 0.71.4)
    - ReactCommon/turbomodule/core (= 0.71.4)
  - React-RCTLinking (0.71.4):
    - React-Codegen (= 0.71.4)
    - React-Core/RCTLinkingHeaders (= 0.71.4)
    - React-jsi (= 0.71.4)
    - ReactCommon/turbomodule/core (= 0.71.4)
  - React-RCTNetwork (0.71.4):
    - RCT-Folly (= 2021.07.22.00)
    - RCTTypeSafety (= 0.71.4)
    - React-Codegen (= 0.71.4)
    - React-Core/RCTNetworkHeaders (= 0.71.4)
    - React-jsi (= 0.71.4)
    - ReactCommon/turbomodule/core (= 0.71.4)
  - React-RCTSettings (0.71.4):
    - RCT-Folly (= 2021.07.22.00)
    - RCTTypeSafety (= 0.71.4)
    - React-Codegen (= 0.71.4)
    - React-Core/RCTSettingsHeaders (= 0.71.4)
    - React-jsi (= 0.71.4)
    - ReactCommon/turbomodule/core (= 0.71.4)
  - React-RCTText (0.71.4):
    - React-Core/RCTTextHeaders (= 0.71.4)
  - React-RCTVibration (0.71.4):
    - RCT-Folly (= 2021.07.22.00)
    - React-Codegen (= 0.71.4)
    - React-Core/RCTVibrationHeaders (= 0.71.4)
    - React-jsi (= 0.71.4)
    - ReactCommon/turbomodule/core (= 0.71.4)
  - React-runtimeexecutor (0.71.4):
    - React-jsi (= 0.71.4)
  - ReactCommon/turbomodule/bridging (0.71.4):
    - DoubleConversion
    - glog
    - hermes-engine
    - RCT-Folly (= 2021.07.22.00)
    - React-callinvoker (= 0.71.4)
    - React-Core (= 0.71.4)
    - React-cxxreact (= 0.71.4)
    - React-jsi (= 0.71.4)
    - React-logger (= 0.71.4)
    - React-perflogger (= 0.71.4)
  - ReactCommon/turbomodule/core (0.71.4):
    - DoubleConversion
    - glog
    - hermes-engine
    - RCT-Folly (= 2021.07.22.00)
    - React-callinvoker (= 0.71.4)
    - React-Core (= 0.71.4)
    - React-cxxreact (= 0.71.4)
    - React-jsi (= 0.71.4)
    - React-logger (= 0.71.4)
    - React-perflogger (= 0.71.4)
  - RNCAsyncStorage (1.17.12):
    - React-Core
  - RNDateTimePicker (6.7.3):
    - React-Core
  - RNFlashList (1.4.2):
    - React-Core
  - RNGestureHandler (2.9.0):
    - React-Core
  - RNReactNativeHapticFeedback (2.0.2):
    - React-Core
  - RNReanimated (3.0.2):
    - DoubleConversion
    - FBLazyVector
    - FBReactNativeSpec
    - glog
    - RCT-Folly
    - RCTRequired
    - RCTTypeSafety
    - React-callinvoker
    - React-Core
    - React-Core/DevSupport
    - React-Core/RCTWebSocket
    - React-CoreModules
    - React-cxxreact
    - React-jsi
    - React-jsiexecutor
    - React-jsinspector
    - React-RCTActionSheet
    - React-RCTAnimation
    - React-RCTBlob
    - React-RCTImage
    - React-RCTLinking
    - React-RCTNetwork
    - React-RCTSettings
    - React-RCTText
    - ReactCommon/turbomodule/core
    - Yoga
  - RNScreens (3.20.0):
    - React-Core
    - React-RCTImage
  - RNSVG (13.8.0):
    - React-Core
  - Yoga (1.14.0)

DEPENDENCIES:
  - boost (from `../node_modules/react-native/third-party-podspecs/boost.podspec`)
  - DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`)
  - EXApplication (from `../../../node_modules/expo-application/ios`)
  - EXAV (from `../../../node_modules/expo-av/ios`)
  - EXCalendar (from `../../../node_modules/expo-calendar/ios`)
  - EXCamera (from `../../../node_modules/expo-camera/ios`)
  - EXConstants (from `../../../node_modules/expo-constants/ios`)
  - EXDocumentPicker (from `../../../node_modules/expo-document-picker/ios`)
  - EXFileSystem (from `../../../node_modules/expo-file-system/ios`)
  - EXFont (from `../../../node_modules/expo-font/ios`)
  - EXImageLoader (from `../../../node_modules/expo-image-loader/ios`)
  - Expo (from `../node_modules/expo`)
  - ExpoBlur (from `../../../node_modules/expo-blur/ios`)
  - ExpoDevice (from `../../../node_modules/expo-device/ios`)
  - ExpoImageManipulator (from `../../../node_modules/expo-image-manipulator/ios`)
  - ExpoImagePicker (from `../../../node_modules/expo-image-picker/ios`)
  - ExpoKeepAwake (from `../../../node_modules/expo-keep-awake/ios`)
  - ExpoLinearGradient (from `../../../node_modules/expo-linear-gradient/ios`)
  - ExpoModulesCore (from `../../../node_modules/expo-modules-core`)
  - ExpoSystemUI (from `../../../node_modules/expo-system-ui/ios`)
  - ExpoVideoThumbnails (from `../../../node_modules/expo-video-thumbnails/ios`)
  - ExpoWebBrowser (from `../../../node_modules/expo-web-browser/ios`)
  - EXPrint (from `../../../node_modules/expo-print/ios`)
  - EXSplashScreen (from `../../../node_modules/expo-splash-screen/ios`)
  - FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`)
  - FBReactNativeSpec (from `../node_modules/react-native/React/FBReactNativeSpec`)
  - glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`)
  - hermes-engine (from `../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec`)
  - libevent (~> 2.1.12)
  - RCT-Folly (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`)
  - RCTRequired (from `../node_modules/react-native/Libraries/RCTRequired`)
  - RCTTypeSafety (from `../node_modules/react-native/Libraries/TypeSafety`)
  - React (from `../node_modules/react-native/`)
  - React-callinvoker (from `../node_modules/react-native/ReactCommon/callinvoker`)
  - React-Codegen (from `build/generated/ios`)
  - React-Core (from `../node_modules/react-native/`)
  - React-Core/RCTWebSocket (from `../node_modules/react-native/`)
  - React-CoreModules (from `../node_modules/react-native/React/CoreModules`)
  - React-cxxreact (from `../node_modules/react-native/ReactCommon/cxxreact`)
  - React-hermes (from `../node_modules/react-native/ReactCommon/hermes`)
  - React-jsi (from `../node_modules/react-native/ReactCommon/jsi`)
  - React-jsiexecutor (from `../node_modules/react-native/ReactCommon/jsiexecutor`)
  - React-jsinspector (from `../node_modules/react-native/ReactCommon/jsinspector`)
  - React-logger (from `../node_modules/react-native/ReactCommon/logger`)
  - react-native-safe-area-context (from `../../../node_modules/react-native-safe-area-context`)
  - "react-native-skia (from `../../../node_modules/@shopify/react-native-skia`)"
  - "react-native-slider (from `../../../node_modules/@react-native-community/slider`)"
  - react-native-webview (from `../../../node_modules/react-native-webview`)
  - React-perflogger (from `../node_modules/react-native/ReactCommon/reactperflogger`)
  - React-RCTActionSheet (from `../node_modules/react-native/Libraries/ActionSheetIOS`)
  - React-RCTAnimation (from `../node_modules/react-native/Libraries/NativeAnimation`)
  - React-RCTAppDelegate (from `../node_modules/react-native/Libraries/AppDelegate`)
  - React-RCTBlob (from `../node_modules/react-native/Libraries/Blob`)
  - React-RCTImage (from `../node_modules/react-native/Libraries/Image`)
  - React-RCTLinking (from `../node_modules/react-native/Libraries/LinkingIOS`)
  - React-RCTNetwork (from `../node_modules/react-native/Libraries/Network`)
  - React-RCTSettings (from `../node_modules/react-native/Libraries/Settings`)
  - React-RCTText (from `../node_modules/react-native/Libraries/Text`)
  - React-RCTVibration (from `../node_modules/react-native/Libraries/Vibration`)
  - React-runtimeexecutor (from `../node_modules/react-native/ReactCommon/runtimeexecutor`)
  - ReactCommon/turbomodule/core (from `../node_modules/react-native/ReactCommon`)
  - "RNCAsyncStorage (from `../../../node_modules/@react-native-async-storage/async-storage`)"
  - "RNDateTimePicker (from `../../../node_modules/@react-native-community/datetimepicker`)"
  - "RNFlashList (from `../../../node_modules/@shopify/flash-list`)"
  - RNGestureHandler (from `../../../node_modules/react-native-gesture-handler`)
  - RNReactNativeHapticFeedback (from `../../../node_modules/react-native-haptic-feedback`)
  - RNReanimated (from `../../../node_modules/react-native-reanimated`)
  - RNScreens (from `../../../node_modules/react-native-screens`)
  - RNSVG (from `../../../node_modules/react-native-svg`)
  - Yoga (from `../node_modules/react-native/ReactCommon/yoga`)

SPEC REPOS:
  trunk:
    - fmt
    - libevent

EXTERNAL SOURCES:
  boost:
    :podspec: "../node_modules/react-native/third-party-podspecs/boost.podspec"
  DoubleConversion:
    :podspec: "../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec"
  EXApplication:
    :path: "../../../node_modules/expo-application/ios"
  EXAV:
    :path: "../../../node_modules/expo-av/ios"
  EXCalendar:
    :path: "../../../node_modules/expo-calendar/ios"
  EXCamera:
    :path: "../../../node_modules/expo-camera/ios"
  EXConstants:
    :path: "../../../node_modules/expo-constants/ios"
  EXDocumentPicker:
    :path: "../../../node_modules/expo-document-picker/ios"
  EXFileSystem:
    :path: "../../../node_modules/expo-file-system/ios"
  EXFont:
    :path: "../../../node_modules/expo-font/ios"
  EXImageLoader:
    :path: "../../../node_modules/expo-image-loader/ios"
  Expo:
    :path: "../node_modules/expo"
  ExpoBlur:
    :path: "../../../node_modules/expo-blur/ios"
  ExpoDevice:
    :path: "../../../node_modules/expo-device/ios"
  ExpoImageManipulator:
    :path: "../../../node_modules/expo-image-manipulator/ios"
  ExpoImagePicker:
    :path: "../../../node_modules/expo-image-picker/ios"
  ExpoKeepAwake:
    :path: "../../../node_modules/expo-keep-awake/ios"
  ExpoLinearGradient:
    :path: "../../../node_modules/expo-linear-gradient/ios"
  ExpoModulesCore:
    :path: "../../../node_modules/expo-modules-core"
  ExpoSystemUI:
    :path: "../../../node_modules/expo-system-ui/ios"
  ExpoVideoThumbnails:
    :path: "../../../node_modules/expo-video-thumbnails/ios"
  ExpoWebBrowser:
    :path: "../../../node_modules/expo-web-browser/ios"
  EXPrint:
    :path: "../../../node_modules/expo-print/ios"
  EXSplashScreen:
    :path: "../../../node_modules/expo-splash-screen/ios"
  FBLazyVector:
    :path: "../node_modules/react-native/Libraries/FBLazyVector"
  FBReactNativeSpec:
    :path: "../node_modules/react-native/React/FBReactNativeSpec"
  glog:
    :podspec: "../node_modules/react-native/third-party-podspecs/glog.podspec"
  hermes-engine:
    :podspec: "../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec"
  RCT-Folly:
    :podspec: "../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec"
  RCTRequired:
    :path: "../node_modules/react-native/Libraries/RCTRequired"
  RCTTypeSafety:
    :path: "../node_modules/react-native/Libraries/TypeSafety"
  React:
    :path: "../node_modules/react-native/"
  React-callinvoker:
    :path: "../node_modules/react-native/ReactCommon/callinvoker"
  React-Codegen:
    :path: build/generated/ios
  React-Core:
    :path: "../node_modules/react-native/"
  React-CoreModules:
    :path: "../node_modules/react-native/React/CoreModules"
  React-cxxreact:
    :path: "../node_modules/react-native/ReactCommon/cxxreact"
  React-hermes:
    :path: "../node_modules/react-native/ReactCommon/hermes"
  React-jsi:
    :path: "../node_modules/react-native/ReactCommon/jsi"
  React-jsiexecutor:
    :path: "../node_modules/react-native/ReactCommon/jsiexecutor"
  React-jsinspector:
    :path: "../node_modules/react-native/ReactCommon/jsinspector"
  React-logger:
    :path: "../node_modules/react-native/ReactCommon/logger"
  react-native-safe-area-context:
    :path: "../../../node_modules/react-native-safe-area-context"
  react-native-skia:
    :path: "../../../node_modules/@shopify/react-native-skia"
  react-native-slider:
    :path: "../../../node_modules/@react-native-community/slider"
  react-native-webview:
    :path: "../../../node_modules/react-native-webview"
  React-perflogger:
    :path: "../node_modules/react-native/ReactCommon/reactperflogger"
  React-RCTActionSheet:
    :path: "../node_modules/react-native/Libraries/ActionSheetIOS"
  React-RCTAnimation:
    :path: "../node_modules/react-native/Libraries/NativeAnimation"
  React-RCTAppDelegate:
    :path: "../node_modules/react-native/Libraries/AppDelegate"
  React-RCTBlob:
    :path: "../node_modules/react-native/Libraries/Blob"
  React-RCTImage:
    :path: "../node_modules/react-native/Libraries/Image"
  React-RCTLinking:
    :path: "../node_modules/react-native/Libraries/LinkingIOS"
  React-RCTNetwork:
    :path: "../node_modules/react-native/Libraries/Network"
  React-RCTSettings:
    :path: "../node_modules/react-native/Libraries/Settings"
  React-RCTText:
    :path: "../node_modules/react-native/Libraries/Text"
  React-RCTVibration:
    :path: "../node_modules/react-native/Libraries/Vibration"
  React-runtimeexecutor:
    :path: "../node_modules/react-native/ReactCommon/runtimeexecutor"
  ReactCommon:
    :path: "../node_modules/react-native/ReactCommon"
  RNCAsyncStorage:
    :path: "../../../node_modules/@react-native-async-storage/async-storage"
  RNDateTimePicker:
    :path: "../../../node_modules/@react-native-community/datetimepicker"
  RNFlashList:
    :path: "../../../node_modules/@shopify/flash-list"
  RNGestureHandler:
    :path: "../../../node_modules/react-native-gesture-handler"
  RNReactNativeHapticFeedback:
    :path: "../../../node_modules/react-native-haptic-feedback"
  RNReanimated:
    :path: "../../../node_modules/react-native-reanimated"
  RNScreens:
    :path: "../../../node_modules/react-native-screens"
  RNSVG:
    :path: "../../../node_modules/react-native-svg"
  Yoga:
    :path: "../node_modules/react-native/ReactCommon/yoga"

SPEC CHECKSUMS:
  boost: 57d2868c099736d80fcd648bf211b4431e51a558
  DoubleConversion: 5189b271737e1565bdce30deb4a08d647e3f5f54
  EXApplication: d8f53a7eee90a870a75656280e8d4b85726ea903
  EXAV: f1f69397ecdcf44cfacd4ff5d338cd1b96891e87
  EXCalendar: 7d68f53f0f3df241d3af203c94082aee93cd1c93
  EXCamera: a323a5942b5e7fc8349e17d728e91c18840ad561
  EXConstants: f348da07e21b23d2b085e270d7b74f282df1a7d9
  EXDocumentPicker: 909609253c185cc6d802f408c7eaf7a4daca793b
  EXFileSystem: 844e86ca9b5375486ecc4ef06d3838d5597d895d
  EXFont: 6ea3800df746be7233208d80fe379b8ed74f4272
  EXImageLoader: 84b65e6bd9d3345d6fbb3ab936a546c54496a64d
  Expo: 863488a600a4565698a79577117c70b170054d08
  ExpoBlur: fac3c6318fdf409dd5740afd3313b2bd52a35bac
  ExpoDevice: e0bebf68f978b3d353377ce42e73c20c0a070215
  ExpoImageManipulator: 85ab87e9641b9d83108f8d603e0418c12fc19e2d
  ExpoImagePicker: 270dea232b3a072d981dd564e2cafc63a864edb1
  ExpoKeepAwake: 69f5f627670d62318410392d03e0b5db0f85759a
  ExpoLinearGradient: 8eaab76b7f55c612ed8348c8be8c2a18a9b4529f
  ExpoModulesCore: 6e0259511f4c4341b6b8357db393624df2280828
  ExpoSystemUI: 0be5173ee2a7c01e9abc44f56d879a1eaaa16527
  ExpoVideoThumbnails: 0021303b614a89fcc5df8b59d9d37ddf14a7d4cf
  ExpoWebBrowser: 033d34c478d9986da2f1679729041423837626e0
  EXPrint: 7f4c9435f522c8efaaa945a1ace51f7c4211b0f2
  EXSplashScreen: cd7fb052dff5ba8311d5c2455ecbebffe1b7a8ca
  FBLazyVector: 446e84642979fff0ba57f3c804c2228a473aeac2
  FBReactNativeSpec: 241709e132e3bf1526c1c4f00bc5384dd39dfba9
  fmt: ff9d55029c625d3757ed641535fd4a75fedc7ce9
  glog: 04b94705f318337d7ead9e6d17c019bd9b1f6b1b
  hermes-engine: a1f157c49ea579c28b0296bda8530e980c45bdb3
  libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913
  RCT-Folly: 424b8c9a7a0b9ab2886ffe9c3b041ef628fd4fb1
  RCTRequired: 5a024fdf458fa8c0d82fc262e76f982d4dcdecdd
  RCTTypeSafety: b6c253064466411c6810b45f66bc1e43ce0c54ba
  React: 715292db5bd46989419445a5547954b25d2090f0
  React-callinvoker: 105392d1179058585b564d35b4592fe1c46d6fba
  React-Codegen: b75333b93d835afce84b73472927cccaef2c9f8c
  React-Core: 88838ed1724c64905fc6c0811d752828a92e395b
  React-CoreModules: cd238b4bb8dc8529ccc8b34ceae7267b04ce1882
  React-cxxreact: 291bfab79d8098dc5ebab98f62e6bdfe81b3955a
  React-hermes: b1e67e9a81c71745704950516f40ee804349641c
  React-jsi: c9d5b563a6af6bb57034a82c2b0d39d0a7483bdc
  React-jsiexecutor: d6b7fa9260aa3cb40afee0507e3bc1d17ecaa6f2
  React-jsinspector: 1f51e775819199d3fe9410e69ee8d4c4161c7b06
  React-logger: 0d58569ec51d30d1792c5e86a8e3b78d24b582c6
  react-native-safe-area-context: 39c2d8be3328df5d437ac1700f4f3a4f75716acc
  react-native-skia: 51f4a6586c362814f677df4ac4226f13c634bcfa
  react-native-slider: 33b8d190b59d4f67a541061bb91775d53d617d9d
  react-native-webview: 9f111dfbcfc826084d6c507f569e5e03342ee1c1
  React-perflogger: 0bb0522a12e058f6eb69d888bc16f40c16c4b907
  React-RCTActionSheet: bfd675a10f06a18728ea15d82082d48f228a213a
  React-RCTAnimation: 2fa220b2052ec75b733112aca39143d34546a941
  React-RCTAppDelegate: 8564f93c1d9274e95e3b0c746d08a87ff5a621b2
  React-RCTBlob: d0336111f46301ae8aba2e161817e451aad72dd6
  React-RCTImage: fec592c46edb7c12a9cde08780bdb4a688416c62
  React-RCTLinking: 14eccac5d2a3b34b89dbfa29e8ef6219a153fe2d
  React-RCTNetwork: 1fbce92e772e39ca3687a2ebb854501ff6226dd7
  React-RCTSettings: 1abea36c9bb16d9979df6c4b42e2ea281b4bbcc5
  React-RCTText: 15355c41561a9f43dfd23616d0a0dd40ba05ed61
  React-RCTVibration: ad17efcfb2fa8f6bfd8ac0cf48d96668b8b28e0b
  React-runtimeexecutor: 8fa50b38df6b992c76537993a2b0553d3b088004
  ReactCommon: b49a4b00ca6d181ff74b17c12b2d59ac4add0bde
  RNCAsyncStorage: 09fc8595e6d6f6d5abf16b23a56b257d9c6b7c5b
  RNDateTimePicker: 00247f26c34683c80be94207f488f6f13448586e
  RNFlashList: 7fbca4fc075484a9426f1610d648dbea2de94eb0
  RNGestureHandler: 071d7a9ad81e8b83fe7663b303d132406a7d8f39
  RNReactNativeHapticFeedback: 6d24decfa94e037c2ecc312407d2a057b7933f10
  RNReanimated: f0dd6b881808e635ef0673f89642937d6c141314
  RNScreens: 218801c16a2782546d30bd2026bb625c0302d70f
  RNSVG: c1e76b81c76cdcd34b4e1188852892dc280eb902
  Yoga: 79dd7410de6f8ad73a77c868d3d368843f0c93e0

PODFILE CHECKSUM: 21c48f8aaf79e68dee9f6916e5cb4ea03c23ffec

COCOAPODS: 1.11.3

@fdecampredon
Copy link

We have the same error on our application without use_framework, no workaround described in this issue seems to fix it.

@NiccoloCase
Copy link

I have the same problem. i tried the solutions restated above and now I have a new error: 'hermes/hermes.h' file not found

@chrfalch
Copy link
Contributor

I have the same problem. i tried the solutions restated above and now I have a new error: 'hermes/hermes.h' file not found

That's probl. not related to Skia unfortunately.

@trymbill
Copy link

trymbill commented Apr 13, 2023

Tried downgrading to 175 like recommended by Jonatthu, but still getting 'include/core/SkData.h' file not found.

After a change in version I remove all .expo and node_modules folders, run yarn, then yarn expo prebuild --clean to clean out the ios/android folders and end with yarn expo run:ios --no-build-cache. So I'm pretty sure I'm not dealing with cache or anything like that. Also tried building via EAS, same result.

Running this in a monorepo, so I thought maybe #1477 would fix it, but I tried those changes and no luck.

I've got expo-build-properties set like so:

[
  'expo-build-properties',
  {
    android: {
      compileSdkVersion: 31,
      targetSdkVersion: 31,
      minSdkVersion: 30,
      buildToolsVersion: '31.0.0',
    },
    ios: {
      deploymentTarget: '14.0',
      useFrameworks: 'static',
    },
  },
]

Not sure where to look now. Any ideas as to what I could try next?


Update: Doing what hieucoi96 suggests above still works though. Changing podfile like so makes it so that SkData.h is found. This isn't sustainable though ...

$static_library = [
   'React',
   'react-native-skia/Api',
   'react-native-skia/Jsi',
   'react-native-skia/RNSkia',
   'react-native-skia/SkiaHeaders',
   'react-native-skia/Utils',
   'react-native-skia',
  ]

pre_install do |installer|
      Pod::Installer::Xcode::TargetValidator.send(:define_method, :verify_no_static_framework_transitive_dependencies) {}
      installer.pod_targets.each do |pod|
        bt = pod.send(:build_type)
        if $static_library.include?(pod.name)
          puts "Overriding the build_type to static_library from static_framework for #{pod.name}"
          def pod.build_type;
            Pod::BuildType.static_library
          end
        end
      end
      installer.pod_targets.each do |pod|
        bt = pod.send(:build_type)
        puts "#{pod.name} (#{bt})"
        puts "  linkage: #{bt.send(:linkage)} packaging: #{bt.send(:packaging)}"
      end
  end

@chrfalch
Copy link
Contributor

Did you test with the changes from the PR in #1484? Did you run pod install after applying the changes? Just curious since those changes should be key to fix monorepo and use_frameworks-issues without any additional hacks.

wcandillon pushed a commit that referenced this issue Apr 13, 2023
Instead of hardcoding a relative path we now use the $PODS_TARGET_SRCROOT constant which should fix the issue with node_modules being located a level above in mono repos.

I've also tested this with `use_frameworks! linkage: :static` now and it seems to be working as well.

fixes #1477
fixes #652 (again?)
@trymbill
Copy link

Did you test with the changes from the PR in #1484? Did you run pod install after applying the changes? Just curious since those changes should be key to fix monorepo and use_frameworks-issues without any additional hacks.

Can confirm that updating to version 0.1.183 fixes this in my repo 🎊 Thanks for all the help!

@chrfalch
Copy link
Contributor

Awesome, @trymbill - appreciate the feedback and test!!!! :) :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
question Further information is requested
Projects
None yet