#12794·CocoaPods

RuntimeError - [Xcodeproj] Type checking error: got `Array` for attribute: Attribute `shellScript` (type: `simple`, classes: `[String]`, owner class: `PBXShellScriptBuildPhase`)

Author: yflutterCreated Apr 8, 2025Updated Jun 17, 2026

Command

/User/anonymus/.rvm/gems/ruby-3.4.2/bin/pod install --repo-update

Report

  • What did you do?
  1. added new target NotificationServiceExtension
  2. added pod 'customer_io/fcm', :path => '.symlinks/plugins/customer_io/ios' to Podfile
  3. added section to Podfile
target 'NotificationServiceExtension' do
  use_frameworks!
  use_modular_headers!
  
  pod 'customer_io_richpush/fcm', :path => '.symlinks/plugins/customer_io/ios'
end
  1. run command pod install --repo-update
  • What did you expect to happen? Successfully install all pods

  • What happened instead? RuntimeError - [Xcodeproj] Type checking error: got Array for attribute: Attribute shellScript (type: simple, classes: [String], owner class: PBXShellScriptBuildPhase)

Stack

   CocoaPods : 1.16.2
        Ruby : ruby 3.4.2 (2025-02-15 revision d2930f8e7a) +PRISM [arm64-darwin24]
    RubyGems : 3.6.7
        Host : macOS 15.3.2 (24D81)
       Xcode : 16.2 (16C5032a)
         Git : git version 2.39.5 (Apple Git-154)
Ruby lib dir : /User/anonymus/.rvm/rubies/ruby-3.4.2/lib
Repositories : trunk - CDN - https://cdn.cocoapods.org/

Plugins

cocoapods-deintegrate : 1.0.5
cocoapods-plugins     : 1.0.0
cocoapods-search      : 1.0.1
cocoapods-trunk       : 1.6.0
cocoapods-try         : 1.2.0

Podfile

ruby
# Uncomment this line to define a global platform for your project
platform :ios, '16.0'

# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
ENV['COCOAPODS_DISABLE_STATS'] = 'true'

project 'Runner', {
  'Debug' => :debug,
  'Profile' => :release,
  'Release' => :release,
}

def flutter_root
  generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__)
  unless File.exist?(generated_xcode_build_settings_path)
    raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first"
  end

  File.foreach(generated_xcode_build_settings_path) do |line|
    matches = line.match(/FLUTTER_ROOT\=(.*)/)
    return matches[1].strip if matches
  end
  raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get"
end

require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root)

flutter_ios_podfile_setup

target 'Runner' do
  use_frameworks!
  use_modular_headers!

  pod 'customer_io/fcm', :path => '.symlinks/plugins/customer_io/ios'
  
  flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
  target 'RunnerTests' do
    inherit! :search_paths
  end
end

target 'NotificationServiceExtension' do
  use_frameworks!
  use_modular_headers!
  
  pod 'customer_io_richpush/fcm', :path => '.symlinks/plugins/customer_io/ios'
end

post_install do |installer|
  installer.pods_project.targets.each do |target|
    flutter_additional_ios_build_settings(target)

    target.build_configurations.each do |config|
      config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] ||= [
        '$(inherited)',

         ## dart: PermissionGroup.calendar
               # 'PERMISSION_EVENTS=1',

               ## dart: PermissionGroup.reminders
               # 'PERMISSION_REMINDERS=1',

               ## dart: PermissionGroup.contacts
               # 'PERMISSION_CONTACTS=1',

               ## dart: PermissionGroup.camera
               'PERMISSION_CAMERA=1',

               ## dart: PermissionGroup.microphone
#                'PERMISSION_MICROPHONE=1',

               ## dart: PermissionGroup.speech
               'PERMISSION_SPEECH_RECOGNIZER=1',

               ## dart: PermissionGroup.photos
               'PERMISSION_PHOTOS=1',

               ## dart: [PermissionGroup.location, PermissionGroup.locationAlways, PermissionGroup.locationWhenInUse]
               # 'PERMISSION_LOCATION=1',

               ## dart: PermissionGroup.notification
               'PERMISSION_NOTIFICATIONS=1',

               ## dart: PermissionGroup.mediaLibrary
               # 'PERMISSION_MEDIA_LIBRARY=1',

               ## dart: PermissionGroup.sensors
               # 'PERMISSION_SENSORS=1',

               ## dart: PermissionGroup.bluetooth
               # 'PERMISSION_BLUETOOTH=1',

               ## dart: PermissionGroup.appTrackingTransparency
               # 'PERMISSION_APP_TRACKING_TRANSPARENCY=1',

               ## dart: PermissionGroup.criticalAlerts
               # 'PERMISSION_CRITICAL_ALERTS=1',
      ]
    end
  end
end

Error

RuntimeError - [Xcodeproj] Type checking error: got `Array` for attribute: Attribute `shellScript` (type: `simple`, classes: `[String]`, owner class: `PBXShellScriptBuildPhase`)
/User/anonymus/.rvm/rubies/ruby-3.4.2/lib/ruby/gems/3.4.0/gems/xcodeproj-1.27.0/lib/xcodeproj/project/object_attributes.rb:139:in 'Xcodeproj::Project::Object::AbstractObjectAttribute#validate_value'
/User/anonymus/.rvm/rubies/ruby-3.4.2/lib/ruby/gems/3.4.0/gems/xcodeproj-1.27.0/lib/xcodeproj/project/object_attributes.rb:316:in 'block in Xcodeproj::Project::Object::PBXShellScriptBuildPhase#attribute'
/User/anonymus/.rvm/rubies/ruby-3.4.2/lib/ruby/gems/3.4.0/gems/xcodeproj-1.27.0/lib/xcodeproj/project/object_attributes.rb:104:in 'Xcodeproj::Project::Object::AbstractObjectAttribute#set_value'
/User/anonymus/.rvm/rubies/ruby-3.4.2/lib/ruby/gems/3.4.0/gems/xcodeproj-1.27.0/lib/xcodeproj/project/object.rb:283:in 'block in Xcodeproj::Project::Object::AbstractObject#configure_with_plist'
/User/anonymus/.rvm/rubies/ruby-3.4.2/lib/ruby/gems/3.4.0/gems/xcodeproj-1.27.0/lib/xcodeproj/project/object.rb:282:in 'Array#each'
/User/anonymus/.rvm/rubies/ruby-3.4.2/lib/ruby/gems/3.4.0/gems/xcodeproj-1.27.0/lib/xcodeproj/project/object.rb:282:in 'Xcodeproj::Project::Object::AbstractObject#configure_with_plist'
/User/anonymus/.rvm/rubies/ruby-3.4.2/lib/ruby/gems/3.4.0/gems/xcodeproj-1.27.0/lib/xcodeproj/project.rb:272:in 'Xcodeproj::Project#new_from_plist'
/User/anonymus/.rvm/rubies/ruby-3.4.2/lib/ruby/gems/3.4.0/gems/xcodeproj-1.27.0/lib/xcodeproj/project/object.rb:350:in 'Xcodeproj::Project::Object::AbstractObject#object_with_uuid'
/User/anonymus/.rvm/rubies/ruby-3.4.2/lib/ruby/gems/3.4.0/gems/xcodeproj-1.27.0/lib/xcodeproj/project/object.rb:300:in 'block (2 levels) in Xcodeproj::Project::Object::AbstractObject#configure_with_plist'
/User/anonymus/.rvm/rubies/ruby-3.4.2/lib/ruby/gems/3.4.0/gems/xcodeproj-1.27.0/lib/xcodeproj/project/object.rb:299:in 'Array#each'
/User/anonymus/.rvm/rubies/ruby-3.4.2/lib/ruby/gems/3.4.0/gems/xcodeproj-1.27.0/lib/xcodeproj/project/object.rb:299:in 'block in Xcodeproj::Project::Object::AbstractObject#configure_with_plist'
/User/anonymus/.rvm/rubies/ruby-3.4.2/lib/ruby/gems/3.4.0/gems/xcodeproj-1.27.0/lib/xcodeproj/project/object.rb:296:in 'Array#each'
/User/anonymus/.rvm/rubies/ruby-3.4.2/lib/ruby/gems/3.4.0/gems/xcodeproj-1.27.0/lib/xcodeproj/project/object.rb:296:in 'Xcodeproj::Project::Object::AbstractObject#configure_with_plist'
/User/anonymus/.rvm/rubies/ruby-3.4.2/lib/ruby/gems/3.4.0/gems/xcodeproj-1.27.0/lib/xcodeproj/project.rb:272:in 'Xcodeproj::Project#new_from_plist'
/User/anonymus/.rvm/rubies/ruby-3.4.2/lib/ruby/gems/3.4.0/gems/xcodeproj-1.27.0/lib/xcodeproj/project/object.rb:350:in 'Xcodeproj::Project::Object::AbstractObject#object_with_uuid'
/User/anonymus/.rvm/rubies/ruby-3.4.2/lib/ruby/gems/3.4.0/gems/xcodeproj-1.27.0/lib/xcodeproj/project/object.rb:290:in 'block in Xcodeproj::Project::Object::AbstractObject#configure_with_plist'
/User/anonymus/.rvm/rubies/ruby-3.4.2/lib/ruby/gems/3.4.0/gems/xcodeproj-1.27.0/lib/xcodeproj/project/object.rb:287:in 'Array#each'
/User/anonymus/.rvm/rubies/ruby-3.4.2/lib/ruby/gems/3.4.0/gems/xcodeproj-1.27.0/lib/xcodeproj/project/object.rb:287:in 'Xcodeproj::Project::Object::AbstractObject#configure_with_plist'
/User/anonymus/.rvm/rubies/ruby-3.4.2/lib/ruby/gems/3.4.0/gems/xcodeproj-1.27.0/lib/xcodeproj/project.rb:272:in 'Xcodeproj::Project#new_from_plist'
/User/anonymus/.rvm/rubies/ruby-3.4.2/lib/ruby/gems/3.4.0/gems/xcodeproj-1.27.0/lib/xcodeproj/project/object.rb:350:in 'Xcodeproj::Project::Object::AbstractObject#object_with_uuid'
/User/anonymus/.rvm/rubies/ruby-3.4.2/lib/ruby/gems/3.4.0/gems/xcodeproj-1.27.0/lib/xcodeproj/project/object.rb:300:in 'block (2 levels) in Xcodeproj::Project::Object::AbstractObject#configure_with_plist'
/User/anonymus/.rvm/rubies/ruby-3.4.2/lib/ruby/gems/3.4.0/gems/xcodeproj-1.27.0/lib/xcodeproj/project/object.rb:299:in 'Array#each'
/User/anonymus/.rvm/rubies/ruby-3.4.2/lib/ruby/gems/3.4.0/gems/xcodeproj-1.27.0/lib/xcodeproj/project/object.rb:299:in 'block in Xcodeproj::Project::Object::AbstractObject#configure_with_plist'
/User/anonymus/.rvm/rubies/ruby-3.4.2/lib/ruby/gems/3.4.0/gems/xcodeproj-1.27.0/lib/xcodeproj/project/object.rb:296:in 'Array#each'
/User/anonymus/.rvm/rubies/ruby-3.4.2/lib/ruby/gems/3.4.0/gems/xcodeproj-1.27.0/lib/xcodeproj/project/object.rb:296:in 'Xcodeproj::Project::Object::AbstractObject#configure_with_plist'
/User/anonymus/.rvm/rubies/ruby-3.4.2/lib/ruby/gems/3.4.0/gems/xcodeproj-1.27.0/lib/xcodeproj/project.rb:272:in 'Xcodeproj::Project#new_from_plist'
/User/anonymus/.rvm/rubies/ruby-3.4.2/lib/ruby/gems/3.4.0/gems/xcodeproj-1.27.0/lib/xcodeproj/project/object.rb:350:in 'Xcodeproj::Project::Object::AbstractObject#object_with_uuid'
/User/anonymus/.rvm/rubies/ruby-3.4.2/lib/ruby/gems/3.4.0/gems/xcodeproj-1.27.0/lib/xcodeproj/project/object.rb:300:in 'block (2 levels) in Xcodeproj::Project::Object::AbstractObject#configure_with_plist'
/User/anonymus/.rvm/rubies/ruby-3.4.2/lib/ruby/gems/3.4.0/gems/xcodeproj-1.27.0/lib/xcodeproj/project/object.rb:299:in 'Array#each'
/User/anonymus/.rvm/rubies/ruby-3.4.2/lib/ruby/gems/3.4.0/gems/xcodeproj-1.27.0/lib/xcodeproj/project/object.rb:299:in 'block in Xcodeproj::Project::Object::AbstractObject#configure_with_plist'
/User/anonymus/.rvm/rubies/ruby-3.4.2/lib/ruby/gems/3.4.0/gems/xcodeproj-1.27.0/lib/xcodeproj/project/object.rb:296:in 'Array#each'
/User/anonymus/.rvm/rubies/ruby-3.4.2/lib/ruby/gems/3.4.0/gems/xcodeproj-1.27.0/lib/xcodeproj/project/object.rb:296:in 'Xcodeproj::Project::Object::AbstractObject#configure_with_plist'
/User/anonymus/.rvm/rubies/ruby-3.4.2/lib/ruby/gems/3.4.0/gems/xcodeproj-1.27.0/lib/xcodeproj/project.rb:272:in 'Xcodeproj::Project#new_from_plist'
/User/anonymus/.rvm/rubies/ruby-3.4.2/lib/ruby/gems/3.4.0/gems/xcodeproj-1.27.0/lib/xcodeproj/project/object.rb:350:in 'Xcodeproj::Project::Object::AbstractObject#object_with_uuid'
/User/anonymus/.rvm/rubies/ruby-3.4.2/lib/ruby/gems/3.4.0/gems/xcodeproj-1.27.0/lib/xcodeproj/project/object.rb:290:in 'block in Xcodeproj::Project::Object::AbstractObject#configure_with_plist'
/User/anonymus/.rvm/rubies/ruby-3.4.2/lib/ruby/gems/3.4.0/gems/xcodeproj-1.27.0/lib/xcodeproj/project/object.rb:287:in 'Array#each'
/User/anonymus/.rvm/rubies/ruby-3.4.2/lib/ruby/gems/3.4.0/gems/xcodeproj-1.27.0/lib/xcodeproj/project/object.rb:287:in 'Xcodeproj::Project::Object::AbstractObject#configure_with_plist'
/User/anonymus/.rvm/rubies/ruby-3.4.2/lib/ruby/gems/3.4.0/gems/xcodeproj-1.27.0/lib/xcodeproj/project.rb:272:in 'Xcodeproj::Project#new_from_plist'
/User/anonymus/.rvm/rubies/ruby-3.4.2/lib/ruby/gems/3.4.0/gems/xcodeproj-1.27.0/lib/xcodeproj/project.rb:213:in 'Xcodeproj::Project#initialize_from_file'
/User/anonymus/.rvm/rubies/ruby-3.4.2/lib/ruby/gems/3.4.0/gems/xcodeproj-1.27.0/lib/xcodeproj/project.rb:113:in 'Xcodeproj::Project.open'
/User/anonymus/.rvm/gems/ruby-3.4.2/gems/cocoapods-1.16.2/lib/cocoapods/installer/analyzer.rb:1194:in 'block (2 levels) in Pod::Installer::Analyzer#inspect_targets_to_integrate'
/User/anonymus/.rvm/gems/ruby-3.4.2/gems/cocoapods-1.16.2/lib/cocoapods/installer/analyzer.rb:1193:in 'Hash#each'
/User/anonymus/.rvm/gems/ruby-3.4.2/gems/cocoapods-1.16.2/lib/cocoapods/installer/analyzer.rb:1193:in 'block in Pod::Installer::Analyzer#inspect_targets_to_integrate'
/User/anonymus/.rvm/gems/ruby-3.4.2/gems/cocoapods-1.16.2/lib/cocoapods/user_interface.rb:64:in 'Pod::UserInterface.section'
/User/anonymus/.rvm/gems/ruby-3.4.2/gems/cocoapods-1.16.2/lib/cocoapods/installer/analyzer.rb:1188:in 'Pod::Installer::Analyzer#inspect_targets_to_integrate'
/User/anonymus/.rvm/gems/ruby-3.4.2/gems/cocoapods-1.16.2/lib/cocoapods/installer/analyzer.rb:107:in 'Pod::Installer::Analyzer#analyze'
/User/anonymus/.rvm/gems/ruby-3.4.2/gems/cocoapods-1.16.2/lib/cocoapods/installer.rb:422:in 'Pod::Installer#analyze'
/User/anonymus/.rvm/gems/ruby-3.4.2/gems/cocoapods-1.16.2/lib/cocoapods/installer.rb:244:in 'block in Pod::Installer#resolve_dependencies'
/User/anonymus/.rvm/gems/ruby-3.4.2/gems/cocoapods-1.16.2/lib/cocoapods/user_interface.rb:64:in 'Pod::UserInterface.section'
/User/anonymus/.rvm/gems/ruby-3.4.2/gems/cocoapods-1.16.2/lib/cocoapods/installer.rb:243:in 'Pod::Installer#resolve_dependencies'
/User/anonymus/.rvm/gems/ruby-3.4.2/gems/cocoapods-1.16.2/lib/cocoapods/installer.rb:162:in 'Pod::Installer#install!'
/User/anonymus/.rvm/gems/ruby-3.4.2/gems/cocoapods-1.16.2/lib/cocoapods/command/install.rb:52:in 'Pod::Command::Install#run'
/User/anonymus/.rvm/rubies/ruby-3.4.2/lib/ruby/gems/3.4.0/gems/claide-1.1.0/lib/claide/command.rb:334:in 'CLAide::Command.run'
/User/anonymus/.rvm/gems/ruby-3.4.2/gems/cocoapods-1.16.2/lib/cocoapods/command.rb:52:in 'Pod::Command.run'
/User/anonymus/.rvm/gems/ruby-3.4.2/gems/cocoapods-1.16.2/bin/pod:55:in '<top (required)>'
/User/anonymus/.rvm/gems/ruby-3.4.2/bin/pod:25:in 'Kernel#load'
/User/anonymus/.rvm/gems/ruby-3.4.2/bin/pod:25:in '<main>'
/User/anonymus/.rvm/gems/ruby-3.4.2/bin/ruby_executable_hooks:22:in 'Kernel#eval'
/User/anonymus/.rvm/gems/ruby-3.4.2/bin/ruby_executable_hooks:22:in '<main>'