Repository navigation
flutter build fails on pod versioning issue with firebase_storage #25592
Copy link
Copy link
Closed
Labels
c: crashStack traces logged to the consoleStack traces logged to the consolep: toolingAffects the flutter_plugin_tools packageAffects the flutter_plugin_tools packagepackageflutter/packages repository. See also p: labels.flutter/packages repository. See also p: labels.platform-iosiOS applications specificallyiOS applications specificallyt: xcode"xcodebuild" on iOS and general Xcode project management"xcodebuild" on iOS and general Xcode project managementtoolAffects the "flutter" command-line tool. See also t: labels.Affects the "flutter" command-line tool. See also t: labels.
Description
Jenkins build stopped working after we checked in ios/Podfile.lock for consistency.
Building for device (ios-release)...
Running pod install... 1.1s
CocoaPods' output:
↳
Preparing
Analyzing dependencies
Inspecting targets to integrate
Using `ARCHS` setting to build architectures of target `Pods-Runner`: (``)
Finding Podfile changes
M Flutter
- background_fetch
- camera
- cloud_firestore
- connectivity
- contacts_service
- device_info
- firebase_auth
- firebase_core
- firebase_messaging
- firebase_storage
...
Fetching external sources
-> Fetching podspec for `Flutter` from `.symlinks/flutter/ios-release`
-> Fetching podspec for `background_fetch` from `.symlinks/plugins/background_fetch/ios`
-> Fetching podspec for `camera` from `.symlinks/plugins/camera/ios`
-> Fetching podspec for `cloud_firestore` from `.symlinks/plugins/cloud_firestore/ios`
-> Fetching podspec for `connectivity` from `.symlinks/plugins/connectivity/ios`
-> Fetching podspec for `contacts_service` from `.symlinks/plugins/contacts_service/ios`
-> Fetching podspec for `device_info` from `.symlinks/plugins/device_info/ios`
-> Fetching podspec for `firebase_auth` from `.symlinks/plugins/firebase_auth/ios`
-> Fetching podspec for `firebase_core` from `.symlinks/plugins/firebase_core/ios`
-> Fetching podspec for `firebase_messaging` from `.symlinks/plugins/firebase_messaging/ios`
-> Fetching podspec for `firebase_storage` from `.symlinks/plugins/firebase_storage/ios`
...
Resolving dependencies of `Podfile`
[!] CocoaPods could not find compatible versions for pod "Firebase/Storage":
In snapshot (Podfile.lock):
Firebase/Storage (= 5.14.0)
In Podfile:
firebase_storage (from `.symlinks/plugins/firebase_storage/ios`) was resolved to 0.0.1, which depends on
Firebase/Storage
It seems like you've changed the constraints of dependency `Firebase/Storage` inside your development pod `firebase_storage`.
You should run `pod update Firebase/Storage` to apply changes you've made.
/usr/local/lib/ruby/gems/2.5.0/gems/molinillo-0.6.6/lib/molinillo/resolution.rb:328:in `raise_error_unless_state'
/usr/local/lib/ruby/gems/2.5.0/gems/molinillo-0.6.6/lib/molinillo/resolution.rb:310:in `block in unwind_for_conflict'
/usr/local/lib/ruby/gems/2.5.0/gems/molinillo-0.6.6/lib/molinillo/resolution.rb:308:in `tap'
/usr/local/lib/ruby/gems/2.5.0/gems/molinillo-0.6.6/lib/molinillo/resolution.rb:308:in `unwind_for_conflict'
/usr/local/lib/ruby/gems/2.5.0/gems/molinillo-0.6.6/lib/molinillo/resolution.rb:257:in `process_topmost_state'
/usr/local/lib/ruby/gems/2.5.0/gems/molinillo-0.6.6/lib/molinillo/resolution.rb:182:in `resolve'
/usr/local/lib/ruby/gems/2.5.0/gems/molinillo-0.6.6/lib/molinillo/resolver.rb:43:in `resolve'
/usr/local/lib/ruby/gems/2.5.0/gems/cocoapods-1.5.3/lib/cocoapods/resolver.rb:123:in `resolve'
/usr/local/lib/ruby/gems/2.5.0/gems/cocoapods-1.5.3/lib/cocoapods/installer/analyzer.rb:781:in `block in resolve_dependencies'
/usr/local/lib/ruby/gems/2.5.0/gems/cocoapods-1.5.3/lib/cocoapods/user_interface.rb:64:in `section'
/usr/local/lib/ruby/gems/2.5.0/gems/cocoapods-1.5.3/lib/cocoapods/installer/analyzer.rb:779:in `resolve_dependencies'
/usr/local/lib/ruby/gems/2.5.0/gems/cocoapods-1.5.3/lib/cocoapods/installer/analyzer.rb:88:in `analyze'
/usr/local/lib/ruby/gems/2.5.0/gems/cocoapods-1.5.3/lib/cocoapods/installer.rb:243:in `analyze'
/usr/local/lib/ruby/gems/2.5.0/gems/cocoapods-1.5.3/lib/cocoapods/installer.rb:154:in `block in resolve_dependencies'
/usr/local/lib/ruby/gems/2.5.0/gems/cocoapods-1.5.3/lib/cocoapods/user_interface.rb:64:in `section'
/usr/local/lib/ruby/gems/2.5.0/gems/cocoapods-1.5.3/lib/cocoapods/installer.rb:153:in `resolve_dependencies'
/usr/local/lib/ruby/gems/2.5.0/gems/cocoapods-1.5.3/lib/cocoapods/installer.rb:116:in `install!'
/usr/local/lib/ruby/gems/2.5.0/gems/cocoapods-1.5.3/lib/cocoapods/command/install.rb:41:in `run'
/usr/local/lib/ruby/gems/2.5.0/gems/claide-1.0.2/lib/claide/command.rb:334:in `run'
/usr/local/lib/ruby/gems/2.5.0/gems/cocoapods-1.5.3/lib/cocoapods/command.rb:52:in `run'
/usr/local/lib/ruby/gems/2.5.0/gems/cocoapods-1.5.3/bin/pod:55:in `<top (required)>'
/usr/local/bin/pod:23:in `load'
/usr/local/bin/pod:23:in `<main>'
Error running pod install
script returned exit code 1
Locally we can fix this by doing a pod update, and it works after that. But this is undesirable to do in every build in Jenkins because it will actually change the pod versions, and also it seems very cumbersome to do a pod update, then re-checkout the possibly changed Podfile.lock on every jenkins build.
I wonder if this issue is because the flutter plugins don't set a version in their podspecs?
e.g. here: https://github.com/flutter/plugins/blob/master/packages/firebase_storage/ios/firebase_storage.podspec#L19
Podfile for reference:
# Uncomment this line to define a global platform for your project
platform :ios, '9.3'
# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
ENV['COCOAPODS_DISABLE_STATS'] = 'true'
def parse_KV_file(file, separator='=')
file_abs_path = File.expand_path(file)
if !File.exists? file_abs_path
return [];
end
pods_ary = []
skip_line_start_symbols = ["#", "/"]
File.foreach(file_abs_path) { |line|
next if skip_line_start_symbols.any? { |symbol| line =~ /^\s*#{symbol}/ }
plugin = line.split(pattern=separator)
if plugin.length == 2
podname = plugin[0].strip()
path = plugin[1].strip()
podpath = File.expand_path("#{path}", file_abs_path)
pods_ary.push({:name => podname, :path => podpath});
else
puts "Invalid plugin specification: #{line}"
end
}
return pods_ary
end
target 'Runner' do
use_frameworks!
# Prepare symlinks folder. We use symlinks to avoid having Podfile.lock
# referring to absolute paths on developers' machines.
system('rm -rf .symlinks')
system('mkdir -p .symlinks/plugins')
# Flutter Pods
generated_xcode_build_settings = parse_KV_file('./Flutter/Generated.xcconfig')
if generated_xcode_build_settings.empty?
puts "Generated.xcconfig must exist. If you're running pod install manually, make sure flutter packages get is executed first."
end
generated_xcode_build_settings.map { |p|
if p[:name] == 'FLUTTER_FRAMEWORK_DIR'
symlink = File.join('.symlinks', 'flutter')
File.symlink(File.dirname(p[:path]), symlink)
pod 'Flutter', :path => File.join(symlink, File.basename(p[:path]))
end
}
# Plugin Pods
plugin_pods = parse_KV_file('../.flutter-plugins')
plugin_pods.map { |p|
symlink = File.join('.symlinks', 'plugins', p[:name])
File.symlink(p[:path], symlink)
pod p[:name], :path => File.join(symlink, 'ios')
}
end
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['ENABLE_BITCODE'] = 'NO'
end
end
endReactions are currently unavailable
Metadata
Metadata
Assignees
Labels
c: crashStack traces logged to the consoleStack traces logged to the consolep: toolingAffects the flutter_plugin_tools packageAffects the flutter_plugin_tools packagepackageflutter/packages repository. See also p: labels.flutter/packages repository. See also p: labels.platform-iosiOS applications specificallyiOS applications specificallyt: xcode"xcodebuild" on iOS and general Xcode project management"xcodebuild" on iOS and general Xcode project managementtoolAffects the "flutter" command-line tool. See also t: labels.Affects the "flutter" command-line tool. See also t: labels.
Activity
zoechi commentedon Dec 20, 2018
What do your dependencies in
pubspec.yamllook like?Are you using the same Flutter version locally and in Jenkins?
yanpingql commentedon Dec 20, 2018
Our pubspec looks like the following:
In Jenkins we are using
Flutter (Channel stable, v1.0.0, on Mac OS X 10.14.1 18B75, locale en-US)Locally we have a few versions among people, but the build works for everyone:
yanpingql commentedon Dec 20, 2018
Quick update: someone who was on
got the same issue after checking out the Podfile.lock. He also tried using stable channel and had the same issue.
pod updatetemporarily fixes it for now, but still doesn't explain why flutter build doesn't respect the Podfile.lock for versions and runs into issues with the podspec of the firebase_storage plugin.Daghis commentedon Jun 29, 2019
I've been struggling with this while trying to set up a small CI setup at home using TeamCity. One of my two Macs works fine, but the other fails similarly to yours.
I then discovered a fix. If I run
pod outdatedon the one that fails, it updates some CocoaPods dependencies:After doing this,
pod installcompleted successfully as did my build-and-deploy configuration in TeamCity.Looking at the various
podcommands, I think that simply doing apod repo updatewould do the necessary things to get things working. I'm going to add that to my CI steps and see if that keeps things working properly.github-actions commentedon Aug 14, 2021
This thread has been automatically locked since there has not been any recent activity after it was closed. If you are still experiencing a similar issue, please open a new bug, including the output of
flutter doctor -vand a minimal reproduction of the issue.