Flutter - No Pod File - Developing on Windows - ios

I'm developing a Flutter app on Windows using Android Studio. My project doesn't contain a 'podfile' in the ios folder, but I think I need to have one in order to properly handle bluetooth permissions (if this iOS setup guide for the permission_handler package is to be believed...)
Do I need a podfile in order to use bluetooth on iOS?
If so, how do I get a podfile into my project?
Thanks for any assistance!
Expected Flutter to automatically create a podfile
Tried various commands in the ios folder, such as pod init and pod install

if you do not file a pod file you can create it by,
In your terminal give the command cd ios. then
pod setup
pod init
after that, it'll create a pod file for you.
and yes you have to give permission in the pod file while using permission handler package.
e.g,
post_install do |installer|
installer.pods_project.targets.each do |target|
flutter_additional_ios_build_settings(target)
target.build_configurations.each do |config|
'PERMISSION_CAMERA=0'
config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] ||= [
'$(inherited)',
'PERMISSION_BLUETOOTH=1',
]
end
end
end

Related

Why am I getting "No such module 'ESPProvision'" Error in swift even though the pod is installed?

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

fatal error: module map file YogaKit.modulemap not found

I am trying to build an iOS app and get this error. I have the project, target, and podfile all specifying iOS deployment target of 14.2. I am using Xcode V12.2.
fatal error: module map file '/Users/USERNAME/Library/Developer/Xcode/DerivedData/APPNAME-hevjyrbzqmxstztjalctjwmbxffm/Build/Products/Debug-iphonesimulator/YogaKit/YogaKit.modulemap' not found
1 error generated.
When I navigate to that directory I do not see the YogaKit.modulemap file in there. How do I configure the build to copy it to that directory or otherwise fix this error?
I am opening the .xcworkspace project file.
I already did:
rm -rf ~/Library/Developer/Xcode/DerivedData/
pod deintegrate
pod update
This is an expo ejected bare app using react-native 0.63.3 and cocoapods v1.10.0. I'm building on a Mac Mini M1.
Any help would be greatly appreciated.
In my case, I had opened the file myapp.xcodeproj and tried to build/archive the project. I could not build because the build always failed.
This time I selected File > Open > Selected the ios directory in my project i.e. myapp>packages>myapp>ios . Then, I tried to build the app. This time it worked.
You make sure you open myapp.xcworkspace file instead of .xcodeproj.
Make sure that the iOS deployment target version is equal or higher than the version in the podfile
Pod file target
Xcode deployment target
Try set "Open using Rosetta" open your Xcode
Worked for me
Check your project AND target's 'Build Settings', search with keyword 'valid_archs', if valid_archs config item exists, make sure the value for key DEBUG is 'arm64 armv7 x86_64', in other words, make sure the value contains x86_64.
I managed to resolve the issue in my app.
I had a mismatch between the ios version in Xcode and Podfile.
Podfile
Xcode
I changed my Podfile to platform :ios, '9.0' and ran pod install again.
That did the trick.
I added
installer.pods_project.build_configurations.each do |config|
config.build_settings["EXCLUDED_ARCHS[sdk=iphonesimulator*]"] = "arm64"
end
To my Podfile in the following loop:
post_install do |installer|
end
Like:
post_install do |installer|
react_native_post_install(installer)
installer.pods_project.build_configurations.each do |config|
config.build_settings["EXCLUDED_ARCHS[sdk=iphonesimulator*]"] = "arm64"
end
end
In my case, I had to do the following, to get the Archive working with XCode 12 in React Native project,
Made sure the same Deployment Target is set correctly across project settings in Xcode and pod file
Turn off optimisation in the release mode by setting Optimisation Level to None (GCC_OPTIMIZATION_LEVEL = 0).
Delete the podfile.lock, and do a fresh pod install.
I solved using the next code in Podfile ..proyect/ios/Podfile
post_install do |installer|
react_native_post_install(installer)
__apply_Xcode_12_5_M1_post_install_workaround(installer)
#To fix issue _OBJC_CLASS_$_RCTBundleURLProvider
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
# config.build_settings["EXCLUDED_ARCHS[sdk=iphonesimulator*]"] = "arm64"
# To solve xcode 14 issue not signing some pod projects
config.build_settings['EXPANDED_CODE_SIGN_IDENTITY'] = ""
config.build_settings['CODE_SIGNING_REQUIRED'] = "NO"
config.build_settings['CODE_SIGNING_ALLOWED'] = "NO"
config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '11.0'
end
end
end

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

Using Firebase in the App and Today Extension doesn't work

I'm using Firebase in My App, I used it via pod and everything was work correctly,
Then we Add Today Extensions (2 extensions) to our app, and also we need to use Firebase in it, so I added it to podfile like this:
use_frameworks!
project ‘projectName.xcodeproj'
target ‘appName’ do
pod 'Firebase/Core'
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
end
target ‘todayExtension1_Name’ do
pod 'Firebase/Core'
end
target ‘todayExtension2_Name’ do
pod 'Firebase/Core'
end
and I create two apps for the todayExtensions, and implement the .plist files correctly and the app build successfully.
but when I try to run the app, I got this runtime exception:
dyld: Symbol not found: _OBJC_CLASS_$_GTMLogLevelFilter
Referenced from: /Users/rawanal-omari/Library/Developer/CoreSimulator/Devices/33A7DC45-EFD9-4245-8989-7C6B4194481F/data/Containers/Bundle/Application/84C060C2-A4AE-4AF3-8804-ADA8CFBCABB3/appName.app/appName
Expected in: /Users/rawanal-omari/Library/Developer/CoreSimulator/Devices/33A7DC45-EFD9-4245-8989-7C6B4194481F/data/Containers/Bundle/Application/84C060C2-A4AE-4AF3-8804-ADA8CFBCABB3/appName.app/Frameworks/GoogleToolboxForMac.framework/GoogleToolboxForMac
in /Users/rawanal-omari/Library/Developer/CoreSimulator/Devices/33A7DC45-EFD9-4245-8989-7C6B4194481F/data/Containers/Bundle/Application/84C060C2-A4AE-4AF3-8804-ADA8CFBCABB3/appName.app/appName
Did anyone face problem like this?
Not sure if targeting the extensions via pods is enough,
But the following steps are needed
Step 1. Go to your firebase console.
Step 2. Click on the project you are working on.
Step 3. Within the project, click on "Add another app"
Step 4. Select iOS and then enter the BUNDLE ID of your TODAY EXTENSION
Step 5. Complete the wizard and download the generated GoogleService-Info.plist file. Add the plist file to your Today Extension's root folder
From here you can try adding firebase via pods to your extensions.
I had the same problem. In my case I've added the 'Firebase/Performance' pod to the app target, but not to the extension target. After adding it to the extension too, I was able to run the app again.
Conclusion: add the Firebase pods you're using in your app target, to the extension target too

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