Flutter iOS Xcode build was failing - ios

My flutter app was working fine for android and for iOS the build was failing.
My pod file code was
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '14.0'
end
end
end

You can try to change your podfile code to
post_install do |installer|
installer.pods_project.targets.each do |target|
flutter_additional_ios_build_settings(target)
end
end

If my first solution doesn’t work, you can follow these steps:
Backup ios/Runner folder.
Delete the ios folder.
Create another project with same name as yours.
Paste your Runner backup in the ios folder to your new project.
Run pod install in your ios directory.
Run flutter clean the flutter run.
Hope it works.d

Related

How to set 'exclude_files' in Podfile rather than podspec

I've created a new react-native project (0.61.5) and am trying to install react-native-track-player. The default installation docs are pretty sparse but after going through the issues I was able to successfully get the app running, just in a hacky way.
The solution I needed is found in this thread. Setting s.exclude_files = ["ios/RNTrackPlayer/Vendor/AudioPlayer/Example"] in node_modules/react-native-track-player/react-native-track-player.podspec works but I don't want to add it again every time my node_modules folder gets reset.
I saw in a different thread (and ended up using this as well) that setting the swift version in the Podfile to 5 in the post_install method will set the proper version of swift for react-native-track-player to work. I thought maybe I could move the exclude_files hack from node_modules podspec file to my Podfile and solve all my problems, only it seems to not work when set there:
post_install do |installer|
installer.pods_project.targets.each do |target|
if ['react-native-track-player'].include? target.name
target.build_configurations.each do |config|
config.build_settings['SWIFT_VERSION'] = '5'
config.build_settings['EXCLUDE_FILES'] = '../node_modules/react-native-track-player/ios/RNTrackPlayer/Vendor/AudioPlayer/Example`
end
end
end
end
TLDR:
Is it possible to set exclude_files in my Podfile in the post_install call?

The iOS Simulator deployment targets is set to 7.0, but the range of supported deployment target version for this platform is 8.0 to 12.1

I'm getting this below warning message in my Xcode 10.1.
The iOS Simulator deployment targets are set to 7.0, but the range of supported deployment target versions for this platform is 8.0 to 12.1.
My simulator os in 12.1
Xcode 10.1
And I updated my pod file.
My deployment target is 9.0
In my target
You can set up your podfile to automatically match the deployment target of all the podfiles to your current project deployment target like this :
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '9.0'
end
end
end
The problem is in your pod files deployment target iOS Version not in your project deployment target iOS Version, so you need to change the deployment iOS version for your pods as well to anything higher than 8.0 to do so open your project workspace and do this:
1- Click on pods.
2- Select each project and target and click on build settings.
3- Under Deployment section change the iOS Deployment Target version to anything more than 8.0
(better to try the same project version).
4- Repeat this for every other project in your pods then run the app.
see the photo for details
Instead of specifying a deployment target in pod post install, you can delete the pod deployment target for each pod, which causes the deployment target to be inherited from the Podfile.
You may need to run pod install for the effect to take place.
platform :ios, '12.0'
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings.delete 'IPHONEOS_DEPLOYMENT_TARGET'
end
end
end
Iterating over the answer from Tao-Nhan Nguyen, accounting the original value set for every pod, adjusting it only if it's not greater than 8.0... Add the following to the Podfile:
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
if Gem::Version.new('8.0') > Gem::Version.new(config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'])
config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '8.0'
end
end
end
end
If anyone came here from react native issue, just delete the /build folder and type react-native run ios
We can apply the project deployment target to all pods target.
Resolved by adding this code block below to end of your Podfile:
post_install do |installer|
fix_deployment_target(installer)
end
def fix_deployment_target(installer)
return if !installer
project = installer.pods_project
project_deployment_target = project.build_configurations.first.build_settings['IPHONEOS_DEPLOYMENT_TARGET']
puts "Make sure all pods deployment target is #{project_deployment_target.green}"
project.targets.each do |target|
puts " #{target.name}".blue
target.build_configurations.each do |config|
old_target = config.build_settings['IPHONEOS_DEPLOYMENT_TARGET']
new_target = project_deployment_target
next if old_target == new_target
puts " #{config.name}: #{old_target.yellow} -> #{new_target.green}"
config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = new_target
end
end
end
Results log:
Try these steps:
Delete your Podfile.lock
Delete your Podfile
Build Project
Add initialization code from firebase
cd /ios
pod install
run Project
This was what worked for me.
This solution worked for me for Flutter. open {your_project_root_folder}/ios/Podfile and replace the post_install block with this
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.delete 'IPHONEOS_DEPLOYMENT_TARGET'
end
end
end
For Swift
If you are using CocoaPods with Xcode 12, then you have probably seen this error:
The iOS Simulator deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 8.0, but the range of supported deployment target versions is 9.0 to 14.
This is happening because support for iOS 8 has been dropped, but the minimum deployment target for the pod is iOS 8.
Until this is fixed, you can add the following to your Podfile:
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings.delete 'IPHONEOS_DEPLOYMENT_TARGET'
end
end
end
This will remove the deployment target from all the pods in your project and allows them to inherit the project/workspace deployment target that has been specified at the top of Podfile.
For React Native
Delete the ./project-root/ios/build folder and type react-native run ios
For Cordova
<preference name="deployment-target" value="8.0" />
If your are come from react-native and facing this error just do this
Open Podfile(your project > ios>Podfile)
comment flipper functions in podfile as below
#use_flipper!
#post_install do |installer|
#flipper_post_install(installer)
#end
In terminal inside IOS folder enter this command pod install
yep, that is it hope it works to you
if anybody is experiencing is issue while updating to the latest react native, try updating your pod file with
use_flipper!
post_install do |installer|
flipper_post_install(installer)
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings.delete 'IPHONEOS_DEPLOYMENT_TARGET'
end
end
end
All you need to do is just uncomment the following line
# platform :ios, '8.0'
OR
# platform :ios, '9.0'
etc...
and then open iOS folder in the terminal and pass those commands:
% pod repo update
% pod install
I solved this problem, I changed build system to Legacy Build System from New Build System
In Xcode v10+, select File > Project Settings
In previous Xcode, select File > Workspace Settings
Change Build System to Legacy Build System from New Build System --> Click Done.
Simple fix that worked for me in Flutter:
Delete Podfile and Podfile.lock
Run app: This will create a new Podfile. This will probably still fail with an error.
In the new Podfile, uncomment and change the 2nd line to platform :ios, '12.0' (or other min version you want to target)
Run app again, now without errors
For Flutter use this
platform :ios, '10.0'
post_install do |installer|
installer.pods_project.targets.each do |target|
flutter_additional_ios_build_settings(target)
end
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings.delete 'IPHONEOS_DEPLOYMENT_TARGET'
end
end
end
Worked for me:
rm ios/Podfile
flutter pub upgrade
flutter pub get
cd ios && pod update
flutter clean && flutter run
sudo arch -x86_64 gem install ffi
arch -x86_64 pod install
most of the above did not work for me. If you dig around you will see that you aren't supposed to run pod install by hand. What worked for me was making sure my physical device was registered with xcode.
open xcode workspace for ios. select your device (connected via usb most likely) and click Run. This will prompt you to let xcode register your device.
xcode build will most likely fail which is ok - see next steps
Quit Xcode!
cd ios
rm -fR Podfile Podfile.lock Pods
in android studio choose the device in question and c
for cordova developers having this issue
try to set
<preference name="deployment-target" value="8.0" />
in config.xml
This is how I solved this issue with Firebase 10.1 and Xcode 14.1:
Open Xcode
Select Product > Analyze to get all the IPHONEOS_DEPLOYMENT_TARGET warnings
Open Terminal, in your project directory:
pod cache clean --all && pod deintegrate && pod install --repo-update
Check the Xcode again. All the warning should be gone and a single warning from Xcode should be there: "Update to recommended settings"
Click on Perform Changes button
Restart Xcode
There is a detailed discussion about this at the Firebase project repository.
first change the deployment to your choose : like '11.0'
and add this step in the last of your pod file
end
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '11.0'
end
end
end
If anyone is getting this problem in 2021 after updating XCode to v13, here's a fix that worked for me:
https://github.com/facebook/react-native/issues/31733#issuecomment-924016466
However, this may not work for all react-native versions, it worked on v0.64 for me.
I used Xcode to create the dummy swift file so I automatically got a request for "Bridging Header"
Hopefully, this would be resolved in a future release.
I had the same issue building my React Native project
cocoapods version update worked for me (upgraded from 1.8.4 to 1.11.2)
Xcode > Runner > Info deployment Target > IOS Deployment Target: 11
.
open terminal :
pod cache clean --all
.
pod update
(flutter)In my case I accidentally imported dart.js so if it was working a moment ago and it just stopped on reload or new restart check your imports
For flutter this is what I'm using inside <project_root>/ios/Podfile
post_install do |installer|
installer.pods_project.targets.each do |target|
flutter_additional_ios_build_settings(target)
end
installer.pods_project.build_configurations.each do |config|
config.build_settings["EXCLUDED_ARCHS"] = "armv7"
config.build_settings.delete 'IPHONEOS_DEPLOYMENT_TARGET'
end
end
delete pods folder and podfile.lock,increase deployment target in podfile as well as xcode
This is a known issue on M1 MacBooks. Run flutter upgrade and that should fix it.
Currently working on
M1 Mackbook 12.0.0
Flutter 2.10.0
Dart 2.16.0

How to update swift 2.3 project to latest swift 4

I am having too many cocoapods installed. It shows too many compile time errors. How to solve this?
I am new to swift so looking for help.
Thanks
Choose auto upgrade after opening the project in Xcode 9.
In Podfile refer to the framework built in swift 4. Add below script in your Podfile and do a pod install, which will set the swift version of all pod targets to 4.
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['SWIFT_VERSION'] = '4'
end
end
end
Hope this helps in proceeding in upgrading the application to swift4

Pod is built for newer version of

After changing both the deployment target of my project and targets from IOS 10.3 to 9.0 I am receiving the following errors. What am I doing wrong?
edit: These errors only show up when running my code in release not debug
Paste this at the end of your podfile
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '9.0'
end
end
end
First try cleaning the project (shift+command+K). This likely won’t help but is always worth a try.
If/when cleaning does not work, check that the desired iOS version is in podfile, and then navigate to the project directory in Terminal and run pod update.

Realm installation XCode 8.1

I struggle with integrating Realm in my project.
Actually, I'm following guidelines from official documentation, though that doesn't help me.
While I'm trying to import RealmSwift I got "No such module".
import RealmSwift
In framework Realm.framework is red.
Here is my Podfile
# Uncomment this line to define a global platform for your project
# platform :ios, '9.0'
target 'RealmTest' do
# Comment this line if you're not using Swift and don't want to use dynamic frameworks
use_frameworks!
# Pods for RealmTest
pod 'RealmSwift'
target 'RealmTestTests' do
inherit! :search_paths
# Pods for testing
end
target 'RealmTestUITests' do
inherit! :search_paths
end
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['SWIFT_VERSION'] = '2.3' # or '3.0'
# Pods for testing
end
end
end
end
I had some issues getting it installed as well. This may not be the answer but after working through these, my project is building:
Here's my PodFile which is similar
# Uncomment the next line to define a global platform for your project
# platform :ios, '9.0'
target 'RealmTest' do
use_frameworks!
# Pods for RealmTest
pod ‘RealmSwift’
end
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['SWIFT_VERSION'] = '3.0'
end
end
end
I had to update CocoaPods
$ sudo gem install cocoapods
then install Realm again, quit Xcode then
pod install
from there use the
.xcworkspace
file generated by CocoaPods to open the project.
And the last item was to manually add two files to the Linked Frameworks and Libraries section.
Open your project via the .xcworkspace, select your project in the left column. Then select General on the right and scroll down the Linked Frameworks and Libraries and add these two files
Realm.framework
RealmSwift.framework
That last step seems unnecessary but we could not get the build to work until we did that step.
Oh!
Actually the problem was in Swift Compiler - Version
Who would have similar problem, try to go to Build Settings - Swift Compiler - Version - Use Legacy Swift Language Version - Switch it to "No"

Resources