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

Cannot add AppsFlyer strict mode to the project's ios/Podfile because it's malformed #595

Open
maxoschepkov opened this issue Dec 12, 2024 · 4 comments

Comments

@maxoschepkov
Copy link

maxoschepkov commented Dec 12, 2024

Report

Plugin Version

6.15.1

On what Platform are you having the issue?

ios, expo sdk 52.0.18

What did you do?

Run npx expo prebuild

What did you expect to happen?

No errors in console.

What happened instead?

✔ Created native directories | reusing /android, /ios
✔ Updated package.json | no changes
ERROR: Cannot add AppsFlyer strict mode to the project's ios/Podfile because it's malformed. Please report this with a copy of your project Podfile.
» ios: withAppsFlyerAppDelegate: Failed to detect continueUserActivity in AppDelegate or AppsFlyer's delegate method already exists
» ios: withAppsFlyerAppDelegate: Failed to detect openURL in AppDelegate or AppsFlyer's delegate method already exists
✔ Finished prebuild

Please provide any other relevant information.

I'm not using strict mode, my plugin configuration is:

[
        "react-native-appsflyer",
        {}
]

Podfile:

require File.join(File.dirname(`node --print "require.resolve('expo/package.json')"`), "scripts/autolinking")
require File.join(File.dirname(`node --print "require.resolve('react-native/package.json')"`), "scripts/react_native_pods")

require 'json'
podfile_properties = JSON.parse(File.read(File.join(__dir__, 'Podfile.properties.json'))) rescue {}

ENV['RCT_NEW_ARCH_ENABLED'] = podfile_properties['newArchEnabled'] == 'true' ? '1' : '0'
ENV['EX_DEV_CLIENT_NETWORK_INSPECTOR'] = podfile_properties['EX_DEV_CLIENT_NETWORK_INSPECTOR']

platform :ios, podfile_properties['ios.deploymentTarget'] || '15.1'
install! 'cocoapods',
  :deterministic_uuids => false

prepare_react_native_project!

target 'ami' do
# @generated begin AppsFlyer Strict Mode - expo prebuild (DO NOT MODIFY) sync-b29372208dd0dbd1274e957795cd756926086c3a
$RNAppsFlyerStrictMode=false
# @generated end AppsFlyer Strict Mode
  use_expo_modules!

  if ENV['EXPO_USE_COMMUNITY_AUTOLINKING'] == '1'
    config_command = ['node', '-e', "process.argv=['', '', 'config'];require('@react-native-community/cli').run()"];
  else
    config_command = [
      'node',
      '--no-warnings',
      '--eval',
      'require(require.resolve(\'expo-modules-autolinking\', { paths: [require.resolve(\'expo/package.json\')] }))(process.argv.slice(1))',
      'react-native-config',
      '--json',
      '--platform',
      'ios'
    ]
  end

  config = use_native_modules!(config_command)

  use_frameworks! :linkage => podfile_properties['ios.useFrameworks'].to_sym if podfile_properties['ios.useFrameworks']
  use_frameworks! :linkage => ENV['USE_FRAMEWORKS'].to_sym if ENV['USE_FRAMEWORKS']

  use_react_native!(
    :path => config[:reactNativePath],
    :hermes_enabled => podfile_properties['expo.jsEngine'] == nil || podfile_properties['expo.jsEngine'] == 'hermes',
    # An absolute path to your application root.
    :app_path => "#{Pod::Config.instance.installation_root}/..",
    :privacy_file_aggregation_enabled => podfile_properties['apple.privacyManifestAggregationEnabled'] != 'false',
  )

  post_install do |installer|
    react_native_post_install(
      installer,
      config[:reactNativePath],
      :mac_catalyst_enabled => false,
      :ccache_enabled => podfile_properties['apple.ccacheEnabled'] == 'true',
    )

    # 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
end
@emzet93
Copy link

emzet93 commented Jan 20, 2025

Hi @maxoschepkov! Did you manage to resolve it or get any support?

@maxoschepkov
Copy link
Author

@emzet93 unfortunately no, still having this issue.

@MoritzCooks
Copy link

Same issue over here but with expo SDK v51.0.39 and react-native-appsflyer package v6.15.3

I'm also not using strict mode.

@emzet93
Copy link

emzet93 commented Jan 22, 2025

Hi @maxoschepkov @MoritzCooks, I forgot to respond.

What I figured out is that npx expo prebuild works ok, but only for the first time, when the project is clean and there is no existing ios directory. All following expo prebuilds will fail. I think appsflyer expo plugin just doesn't handle the case where its changes are already applied.

Anyway, if you are using cloud builds then it's totally fine. Otherwise just need to remove ios directory before proceeding with another prebuild.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants