I am attempting to run sample code from Esprissif for their ESPProvision library, it comes with the following podfile:
# Uncomment the next line to define a global platform for your project
platform :ios, '11.0'
target 'ESPProvisionSample' do
# Comment the next line if you don't want to use dynamic frameworks
use_frameworks!
# Pods for ESPProvisionSample
pod 'ESPProvision'
pod 'MBProgressHUD'
target 'ESPProvisionSampleTests' do
inherit! :search_paths
# Pods for testing
end
target 'ESPProvisionSampleUITests' do
# Pods for testing
end
end
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['ENABLE_BITCODE'] = 'YES'
config.build_settings['ARCHS'] = 'arm64'
end
end
end
This runs successfully when I run pod install and the pods seem to be correctly installed within the pod file structure, however when i try to build the project I get the error:
No such module 'ESPProvision'
I am new to coding in swift, but in my previous project, simply having the pod file installed was enough for the file to be able to be found anywhere within the code of the app. Do I need to explicitly call the library using its relative pwd?
I also attempted clearing the derived data and I attempted re-installing the pods, but it didn't help.
File structure for the relevant files if it helps:
- ESPProvisionSample
- Provision
- ConnectViewController.swift // this is where 'import ESPProvision' is called and not found
- Pods
- Pods
- ESPProvision
EDIT:
I've also now tried to build the ESPProvision module separately by going to Product -> Scheme -> New Scheme and selecting ESPProvision, it built successfully but when I built the main project it once again gives me the same error as above.
Also for clarity yes I am running the project using the generated .xcworkspace file
It seems maybe the framework is missing from ESPProvisionSample -> Frameworks folder, could it be that?
I'm closing this question, it was an issue with the library itself. I opened a ticket with Espressif and they updated their code https://github.com/espressif/esp-idf-provisioning-ios/issues/57
I've added a share extension to my Nativescript app, and this extension needs a Pod.
So I need to modify the Podfile of the Nativescript app to target my share extension too with the required Pod, something like this:
target :MyApp do
platform :ios, '8.0'
use_frameworks!
pod 'AFNetworking', '~> 2.0'
pod '...'
end
target :MyExtension do
use_frameworks!
pod 'AFNetworking', '~> 2.0'
end
post_install do |installer_representation|
installer_representation.pods_project.targets.each do |target|
if target.name.start_with? "Pods-MyExtension"
target.build_configurations.each do |config|
config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] ||= ['$(inherited)', 'AF_APP_EXTENSIONS=1']
end
end
end
end
The problem here is that every time I run the project, the Podfile is overwritten by Nativescript.
So, there's a way to "block" the Podfile for prevent Nativescript overrides it, or maybe a "hook" for adding custom content to the Podfile after Nativescript Podfile generation?
How can I proceed with this?
Thanks.
In order to modify the Podfile that is generated in the platforms folder at build time you can add a Podfile in the App_Resources/iOS folder.
The Podfile in the App_Resources/iOS folder will be merged with the Podfile that is generated in the platforms folder.
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
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.
I'm trying to add OCUnit tests to an existing project (in XCode 4.6.3). I followed the instructions here - http://twobitlabs.com/2011/06/adding-ocunit-to-an-existing-ios-project-with-xcode-4/ however I'm getting 78 Mach-O errors only when trying to run the tests. I can compile the main target just fine.
One thing to note I have not modified the tests yet, they are just the standard template. I'm not sure example what I'm doing wrong.
One error message
Undefined symbols for architecture i386: "_AudioComponentFindNext",
referenced from:
l651 in libNuanceSpeechAnywhere.a(libSpeechKit.a-i386-master.o)
l652 in libNuanceSpeechAnywhere.a(libSpeechKit.a-i386-master.o)
Here is a screen shot of a bunch of the errors.
After banging my head against the keyboard for a few hours, I found this solution if you're using CocoaPods:
In your podfile, add your test target as well with the necessary dependencies
workspace 'MyProject'
target 'MyProject' do
use_frameworks!
pod 'Alamofire', '~> 4.0'
pod 'RealmSwift'
end
target 'MyProjectTests' do
use_frameworks!
pod 'Alamofire', '~> 4.0'
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
Then just run pod install and everything should end up configured correctly. I recommend running pod install --verbose so you can see if there are any warnings. If you manually edited the build configuration, Pod will complain about it. Follow the recommendation and then reinstall. Works like a charm.
You have to add AudioUnit framework to your project first and then rebuild it.
This is how you add frameworks to your project.