plaidev / karte-react-native

KARTE SDK for React Native
Apache License 2.0
4 stars 3 forks source link

Incompatible iOS minimum deployment target between KarteCore and peer React-Native modules #63

Open shenyingyin opened 4 weeks ago

shenyingyin commented 4 weeks ago

Our project is using Karte SDK with Expo plugin and getting following error when build from Xcode due to incompatible deployment target issue.

KarteCore > iOS12.0 RNKRTCore > iOS11.0 RNKRTInAppMessaging > iOS11.0 RNKRTNotification > iOS11.0

Local workaround is manually changing deployment target one by one. But won't resolve the problem while using CI/CD.

Please kindly take a look into this.

❌  /Users/[REDACTED]/git/node_modules/@react-native-karte/core/ios/RNKRTCore/Karte.swift:17:8: compiling for iOS 11.0, but module 'KarteCore' has a minimum deployment target of iOS 12.0: /Users/[REDACTED]/Library/Developer/Xcode/DerivedData/DevRN-akdblwknnturxjevryijbpupomfd/Build/Intermediates.noindex/ArchiveIntermediates/DevRN/BuildProductsPath/Release-iphoneos/KarteCore/KarteCore.framework/Modules/KarteCore.swiftmodule/arm64-apple-ios.swiftmodule
import KarteCore
                            ^~~~~~~~~~~~~~~
▸ Copying Swift.h
▸ Copying EXReactDelegateWrapper+Private.h
▸ Copying TypedArray.h
▸ Copying RCTComponentData+Privates.h
▸ Copying LazyObject.h
▸ Copying JSIUtils.h
▸ Copying ExpoModulesHostObject.h
▸ Copying ExpoModulesCore.h
▸ Copying ExpoModulesCore-umbrella.h
▸ Copying EXUtilitiesInterface.h
▸ Copying EXUtilities.h
▸ Copying EXUserNotificationCenterProxyInterface.h
▸ Copying EXUnimodulesCompat.h
▸ Copying EXUIManager.h
▸ Copying EXTaskServiceInterface.h
▸ Copying EXTaskManagerInterface.h
▸ Copying EXTaskLaunchReason.h
▸ Copying EXTaskInterface.h
▸ Copying EXTaskConsumerInterface.h
▸ Copying EXSingletonModule.h
▸ Copying EXReactNativeUserNotificationCenterProxy.h
▸ Copying EXReactNativeEventEmitter.h
▸ Copying EXReactNativeAdapter.h
▸ Copying EXReactLogHandler.h
▸ Copying EXReactFontManager.h
▸ Copying EXReactDelegateWrapper.h
▸ Copying EXReactCompatibleHelpers.h
▸ Copying EXRawJavaScriptFunction.h
▸ Copying EXRCTBridgeDelegateInterceptor.h
▸ Copying EXPermissionsService.h
▸ Copying EXPermissionsMethodsDelegate.h
▸ Copying EXPermissionsInterface.h
▸ Copying EXObjectDeallocator.h
▸ Copying EXNativeModulesProxy.h
▸ Copying EXModuleRegistryProvider.h
▸ Copying EXModuleRegistryHolderReactModule.h
▸ Copying EXModuleRegistryDelegate.h
▸ Copying EXModuleRegistryConsumer.h
▸ Copying EXModuleRegistryAdapter.h
▸ Copying EXModuleRegistry.h
▸ Copying EXMagnetometerUncalibratedInterface.h
▸ Copying EXMagnetometerInterface.h
▸ Copying EXLogManager.h
▸ Copying EXLogHandler.h
▸ Copying EXLegacyExpoViewProtocol.h
▸ Copying EXLegacyAppDelegateWrapper.h
▸ Copying EXKernelService.h
▸ Copying EXJavaScriptWeakObject.h
▸ Copying EXJavaScriptValue.h
▸ Copying EXJavaScriptTypedArray.h
▸ Copying EXJavaScriptRuntime.h
▸ Copying EXJavaScriptObject.h
▸ Copying EXJavaScriptContextProvider.h
▸ Copying EXJSIUtils.h
▸ Copying EXJSIInstaller.h
▸ Copying EXJSIConversions.h
▸ Copying EXInternalModule.h
▸ Copying EXImageLoaderInterface.h
▸ Copying EXGyroscopeInterface.h
▸ Copying EXFontScalersManagerInterface.h
▸ Copying EXFontScalerInterface.h
▸ Copying EXFontProcessorInterface.h
▸ Copying EXFontManagerInterface.h
▸ Copying EXFileSystemInterface.h
▸ Copying EXFilePermissionModuleInterface.h
▸ Copying EXFaceDetectorManagerProviderInterface.h
▸ Copying EXFaceDetectorManagerInterface.h
▸ Copying EXExportedModule.h
▸ Copying EXEventEmitterService.h
▸ Copying EXEventEmitter.h
▸ Copying EXErrorCodes.h
▸ Copying EXDeviceMotionInterface.h
▸ Copying EXDefines.h
▸ Copying EXConstantsInterface.h
▸ Copying EXCameraInterface.h
▸ Copying EXBridgeModule.h
▸ Copying EXBarometerInterface.h
▸ Copying EXBarcodeScannerProviderInterface.h
▸ Copying EXBarcodeScannerInterface.h
▸ Copying EXAppLifecycleService.h
▸ Copying EXAppLifecycleListener.h
▸ Copying EXAppDelegatesLoader.h
▸ Copying EXAppDelegateWrapper.h
▸ Copying EXAppDefines.h
▸ Copying EXAccelerometerInterface.h
▸ Touching CoreModules.framework (in target 'React-CoreModules' from project 'Pods')
▸ Processing React-RCTAppDelegate-Info.plist
▸ Touching React_RCTAppDelegate.framework (in target 'React-RCTAppDelegate' from project 'Pods')
▸ Processing ExpoModulesCore-Info.plist
    Run script build phase 'Start Packager' will be run during every build because it does not specify any outputs. To address this warning, either add output dependencies to the script phase, or configure it to run in every build by unchecking "Based on dependency analysis" in the script phase. (in target 'DevRN' from project 'DevRN')
    Run script build phase 'Bundle React Native code and images' will be run during every build because it does not specify any outputs. To address this warning, either add output dependencies to the script phase, or configure it to run in every build by unchecking "Based on dependency analysis" in the script phase. (in target 'DevRN' from project 'DevRN')
    Run script build phase '[CP-User] [RNFB] Core Configuration' will be run during every build because it does not specify any outputs. To address this warning, either add output dependencies to the script phase, or configure it to run in every build by unchecking "Based on dependency analysis" in the script phase. (in target 'DevRN' from project 'DevRN')
    Run script build phase 'Create Symlinks to Header Folders' will be run during every build because it does not specify any outputs. To address this warning, either add output dependencies to the script phase, or configure it to run in every build by unchecking "Based on dependency analysis" in the script phase. (in target 'fmt' from project 'Pods')
    Run script build phase 'Create Symlinks to Header Folders' will be run during every build because it does not specify any outputs. To address this warning, either add output dependencies to the script phase, or configure it to run in every build by unchecking "Based on dependency analysis" in the script phase. (in target 'ReactCommon' from project 'Pods')
    Run script build phase 'Create Symlinks to Header Folders' will be run during every build because it does not specify any outputs. To address this warning, either add output dependencies to the script phase, or configure it to run in every build by unchecking "Based on dependency analysis" in the script phase. (in target 'React-utils' from project 'Pods')
    Run script build phase 'Create Symlinks to Header Folders' will be run during every build because it does not specify any outputs. To address this warning, either add output dependencies to the script phase, or configure it to run in every build by unchecking "Based on dependency analysis" in the script phase. (in target 'React-runtimescheduler' from project 'Pods')
    Run script build phase 'Create Symlinks to Header Folders' will be run during every build because it does not specify any outputs. To address this warning, either add output dependencies to the script phase, or configure it to run in every build by unchecking "Based on dependency analysis" in the script phase. (in target 'React-debug' from project 'Pods')
    Run script build phase 'Create Symlinks to Header Folders' will be run during every build because it does not specify any outputs. To address this warning, either add output dependencies to the script phase, or configure it to run in every build by unchecking "Based on dependency analysis" in the script phase. (in target 'React-NativeModulesApple' from project 'Pods')
    Run script build phase 'Create Symlinks to Header Folders' will be run during every build because it does not specify any outputs. To address this warning, either add output dependencies to the script phase, or configure it to run in every build by unchecking "Based on dependency analysis" in the script phase. (in target 'React-Codegen' from project 'Pods')
    Run script build phase 'Create Symlinks to Header Folders' will be run during every build because it does not specify any outputs. To address this warning, either add output dependencies to the script phase, or configure it to run in every build by unchecking "Based on dependency analysis" in the script phase. (in target 'RCT-Folly' from project 'Pods')
    Run script build phase '[CP-User] Generate app.config for prebuilt Constants.manifest' will be run during every build because it does not specify any outputs. To address this warning, either add output dependencies to the script phase, or configure it to run in every build by unchecking "Based on dependency analysis" in the script phase. (in target 'EXConstants' from project 'Pods')
Last lines of the Xcode's build log:
/Users/[REDACTED]/git/ios/Pods/Pods.xcodeproj: warning: The iOS deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 11.0, but the range of supported deployment target versions is 12.0 to 17.5.99. (in target 'PromisesObjC' from project 'Pods')
/Users/[REDACTED]/git/ios/Pods/Pods.xcodeproj: warning: The iOS deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 11.0, but the range of supported deployment target versions is 12.0 to 17.5.99. (in target 'GoogleUtilities-GoogleUtilities_Privacy' from project 'Pods')
/Users/[REDACTED]/git/ios/Pods/Pods.xcodeproj: warning: The iOS deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 11.0, but the range of supported deployment target versions is 12.0 to 17.5.99. (in target 'GoogleUtilities' from project 'Pods')
/Users/[REDACTED]/git/ios/Pods/Pods.xcodeproj: warning: The iOS deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 11.0, but the range of supported deployment target versions is 12.0 to 17.5.99. (in target 'GoogleDataTransport-GoogleDataTransport_Privacy' from project 'Pods')
/Users/[REDACTED]/git/ios/Pods/Pods.xcodeproj: warning: The iOS deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 11.0, but the range of supported deployment target versions is 12.0 to 17.5.99. (in target 'GoogleDataTransport' from project 'Pods')
/Users/[REDACTED]/git/ios/Pods/Pods.xcodeproj: warning: The iOS deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 11.0, but the range of supported deployment target versions is 12.0 to 17.5.99. (in target 'FirebaseMessaging' from project 'Pods')
/Users/[REDACTED]/git/ios/Pods/Pods.xcodeproj: warning: The iOS deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 11.0, but the range of supported deployment target versions is 12.0 to 17.5.99. (in target 'FirebaseInstallations-FirebaseInstallations_Privacy' from project 'Pods')
/Users/[REDACTED]/git/ios/Pods/Pods.xcodeproj: warning: The iOS deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 11.0, but the range of supported deployment target versions is 12.0 to 17.5.99. (in target 'FirebaseInstallations' from project 'Pods')
/Users/[REDACTED]/git/ios/Pods/Pods.xcodeproj: warning: The iOS deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 11.0, but the range of supported deployment target versions is 12.0 to 17.5.99. (in target 'FirebaseCoreInternal-FirebaseCoreInternal_Privacy' from project 'Pods')
/Users/[REDACTED]/git/ios/Pods/Pods.xcodeproj: warning: The iOS deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 11.0, but the range of supported deployment target versions is 12.0 to 17.5.99. (in target 'FirebaseCoreInternal' from project 'Pods')
/Users/[REDACTED]/git/ios/Pods/Pods.xcodeproj: warning: The iOS deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 11.0, but the range of supported deployment target versions is 12.0 to 17.5.99. (in target 'FirebaseCoreExtension' from project 'Pods')
/Users/[REDACTED]/git/ios/Pods/Pods.xcodeproj: warning: The iOS deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 11.0, but the range of supported deployment target versions is 12.0 to 17.5.99. (in target 'FirebaseCore' from project 'Pods')
warning: Run script build phase '[CP-User] Generate app.config for prebuilt Constants.manifest' will be run during every build because it does not specify any outputs. To address this warning, either add output dependencies to the script phase, or configure it to run in every build by unchecking "Based on dependency analysis" in the script phase. (in target 'EXConstants' from project 'Pods')
** ARCHIVE FAILED **
The following build commands failed:
    SwiftCompile normal arm64 /Users/[REDACTED]/git/node_modules/@react-native-karte/core/ios/RNKRTCore/Karte.swift (in target 'RNKRTCore' from project 'Pods')
    SwiftCompile normal arm64 Compiling\ Karte.swift /Users/[REDACTED]/git/node_modules/@react-native-karte/core/ios/RNKRTCore/Karte.swift (in target 'RNKRTCore' from project 'Pods')
(2 failures)
You can find the last couple of lines of Xcode's build log above, but the full log will be also available in the xcodebuild-archive.log
The log file will be stored in $BITRISE_DEPLOY_DIR, and its full path will be available in the $BITRISE_XCODEBUILD_ARCHIVE_LOG_PATH environment variable.
Failed to execute Step main logic:
  failed to archive the project:
    command failed with exit status 65 (set -o pipefail && xcodebuild "archive" "-workspace" "/Users/[REDACTED]/git/ios/DevRN.xcworkspace" "-scheme" "DevRN" "-xcconfig" "/var/folders/7l/rszmbrmd6tv4pg52z6ql_5rc0000gn/T/588579646/temp.xcconfig" "-archivePath" "/var/folders/7l/rszmbrmd6tv4pg52z6ql_5rc0000gn/T/xcodeArchive3673495915/DevRN.xcarchive" "-destination" "generic/platform=iOS" | xcpretty):
      /Users/[REDACTED]/git/node_modules/@react-native-karte/core/ios/RNKRTCore/Karte.swift:17:8: error: compiling for iOS 11.0, but module 'KarteCore' has a minimum deployment target of iOS 12.0: /Users/[REDACTED]/Library/Developer/Xcode/DerivedData/DevRN-akdblwknnturxjevryijbpupomfd/Build/Intermediates.noindex/ArchiveIntermediates/DevRN/BuildProductsPath/Release-iphoneos/KarteCore/KarteCore.framework/Modules/KarteCore.swiftmodule/arm64-apple-ios.swiftmodule
Exporting outputs...
The xcodebuild archive log path is now available in the Environment Variable: BITRISE_XCODEBUILD_ARCHIVE_LOG_PATH (value: /Users/[REDACTED]/deploy/xcodebuild-archive.log)
Failed to execute Step main logic:
  failed to archive the project:
    command failed with exit status 65 (set -o pipefail && xcodebuild "archive" "-workspace" "/Users/[REDACTED]/git/ios/DevRN.xcworkspace" "-scheme" "DevRN" "-xcconfig" "/var/folders/7l/rszmbrmd6tv4pg52z6ql_5rc0000gn/T/588579646/temp.xcconfig" "-archivePath" "/var/folders/7l/rszmbrmd6tv4pg52z6ql_5rc0000gn/T/xcodeArchive3673495915/DevRN.xcarchive" "-destination" "generic/platform=iOS" | xcpretty):
      /Users/[REDACTED]/git/node_modules/@react-native-karte/core/ios/RNKRTCore/Karte.swift:17:8: error: compiling for iOS 11.0, but module 'KarteCore' has a minimum deployment target of iOS 12.0: /Users/[REDACTED]/Library/Developer/Xcode/DerivedData/DevRN-akdblwknnturxjevryijbpupomfd/Build/Intermediates.noindex/ArchiveIntermediates/DevRN/BuildProductsPath/Release-iphoneos/KarteCore/KarteCore.framework/Modules/KarteCore.swiftmodule/arm64-apple-ios.swiftmodule
TakayukiCho commented 3 weeks ago

Hi.

Cloud you take a look at this page for troubleshooting Privacy manifest support of KARTE SDK?

If following the steps in the document doesn't work, let us know.

shenyingyin commented 3 weeks ago

@TakayukiCho

Hi.

Cloud you take a look at this page for troubleshooting Privacy manifest support of KARTE SDK?

If following the steps in the document doesn't work, let us know.

Hi. Thank you for your advise.

Here's what my Podfile and Podfile.properties.json look like.

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'] || '13.0'
install! 'cocoapods',
  :deterministic_uuids => false

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,...), which will be excluded. To fix this,
# you can also exclude `react-native-flipper` in `react-native.config.js`
#
# ```js
# module.exports = {
#   dependencies: {
#     ...(process.env.NO_FLIPPER ? { 'react-native-flipper': { platforms: { ios: null } } } : {}),
#   }
# }
# ```
flipper_config = FlipperConfiguration.disabled
if ENV['NO_FLIPPER'] == '1' then
  # Explicitly disabled through environment variables
  flipper_config = FlipperConfiguration.disabled
elsif podfile_properties.key?('ios.flipper') then
  # Configure Flipper in Podfile.properties.json
  if podfile_properties['ios.flipper'] == 'true' then
    flipper_config = FlipperConfiguration.enabled(["Debug", "Release"])
  elsif podfile_properties['ios.flipper'] != 'false' then
    flipper_config = FlipperConfiguration.enabled(["Debug", "Release"], { 'Flipper' => podfile_properties['ios.flipper'] })
  end
end

target 'DevRN' do
  use_expo_modules!
  config = use_native_modules!

  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']

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

  use_react_native!(
    :path => config[:reactNativePath],
    :hermes_enabled => podfile_properties['expo.jsEngine'] == nil || podfile_properties['expo.jsEngine'] == 'hermes',
    :fabric_enabled => flags[:fabric_enabled],
    # An absolute path to your application root.
    :app_path => "#{Pod::Config.instance.installation_root}/..",
    # Note that if you have use_frameworks! enabled, Flipper will not work if enabled
    :flipper_configuration => flipper_config
  )

  post_install do |installer|
    react_native_post_install(
      installer,
      config[:reactNativePath],
      :mac_catalyst_enabled => false
    )
    __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

  post_integrate do |installer|
    begin
      expo_patch_react_imports!(installer)
    rescue => e
      Pod::UI.warn e
    end
  end
end

Podfile.properties.json:

{
  "expo.jsEngine": "hermes",
  "EX_DEV_CLIENT_NETWORK_INSPECTOR": "true",
  "ios.deploymentTarget": "15.0",
  "ios.useFrameworks": "static"
}

I assume the deployment target is correctly configured to 15.0 according to the value of ios.deploymentTarget.

Unfortunately after trying following steps which are provided in the troubleshooting page, I can see the Minimum Deployments of RNKRTCore still sets to 11.0 from Xocde.

TakayukiCho commented 2 weeks ago

@shenyingyin

We tried to reproducte your situation, but haven't made it yet.

Could you submit the form here for reaching out with our support team?