I'm new to android development and just installed android studio. It's the first time I'm opening studio. Gradle: Build model is taking long time. It's been already 50mins and still continuing and no message in console. I don't know what to do. Please help me.
Do you have a cloud_firestore package? If so, it usually adds to the build compilation time significantly. But you should provide more details - if its android emulator or iOS and your code.
If its Firestore Cloud + iOS emulator
Improve iOS Build Times# Currently the Firestore iOS SDK depends on
some 500k lines of mostly C++ code which can take upwards of 5 minutes
to build in XCode. To reduce build times significantly, you can use a
pre-compiled version by adding 1 line to your ios/Podfile inside your
Flutter project;
pod 'FirebaseFirestore', :git =>
'https://github.com/invertase/firestore-ios-sdk-frameworks.git', :tag
=> '8.6.0'
Add this line inside your target 'Runner' do block in your Podfile,
e.g.:
# ... target 'Runner' do pod 'FirebaseFirestore', :git => 'https://github.com/invertase/firestore-ios-sdk-frameworks.git', :tag
=> '8.6.0'
# ... end
Additionally, ensure that you have upgraded your cocoapods to 1.9.1 or higher: gem install cocoapods
For more information see this issue:
https://github.com/FirebaseExtended/flutterfire/issues/2751
Related
I am receiving the following error when I compile my FLutter project after adding package:
purchases_flutter: ^4.0.1 to it ....
[!] CocoaPods could not find compatible versions for pod "purchases_flutter":
In Podfile:
purchases_flutter (from .symlinks/plugins/purchases_flutter/ios)
Specs satisfying the purchases_flutter (from .symlinks/plugins/purchases_flutter/ios)
dependency were found, but they required a higher minimum deployment target.
I have checked the Readme in PubDev for this package which says:
minimum targets iOS 9.0+ is required.
However when I look in my PoDFile I have platform :ios, '10.0'. And in Xcode:
Am I missing something here. I haven't seen any other Deployment targets in Xcode or Podfile.
Would really appreciate it, if someone could point me in the correct direction with this.
Many thanks.
I have also tried creating a new Flutter project to test this from the start again and used the terminal commands as suggested below.
I still get the same error... here is a full screen shot of my Android Studio window. Showing the error, my IOS drive and Podfile.
You need to prioritize your dependencies. If the problem is only with this package or plugin, just add it with flutter pub add [dependency name], avoiding directly writing pubspec.yaml It prevents conflict between package versions, automatically finding appropriate version. Then in Podfile top define minimum version. Delete pubspec.lock file, ios/Podfile.lock file and ios/Pods directory. Execute flutter pub get. Enter ios directory via Terminal, execute pod install and try to run application again. If your Mac has apple silicon chip pod install command will be a bit different. Let me know, it worked or not.
I'm still new to flutter, so please forgive me if I can't describe the problem quite specifically, I'll do my best:
I followed a YouTube tutorial to set up my Flutter setup with Visual Studio Code, Android-Studio and Xcode. So far everything worked fine and I was able to play around. Also starting the iOS Simulator worked without problems, then it didn't work anymore and I got the following error message:
Warning: CocoaPods minimum required version 1.9.0 or greater not installed. Skipping pod install.
CocoaPods is used to retrieve the iOS and macOS platform side's plugin code that responds to your plugin usage on the Dart side.
Without CocoaPods, plugins will not work on iOS or macOS.
For more info, see https://flutter.dev/platform-plugins
To upgrade see https://guides.cocoapods.org/using/getting-started.html#installation for instructions.
CocoaPods not installed or not in valid state.
Error launching application on iPhone 13.
After diagnosing with flutter doctor I then found that Cocoapods 1.5.2 is active on my system. I then followed the installation instructions to update the documentation and performed all steps, I then also get the message that the latest version (1.11.3) was installed successfully. If I then check the version with pod --version, I get again the version 1.5.2. displayed.
I have already found the same problem here and followed all the steps, unfortunately without success. I have installed the latest version of CocoaPods on my Mac M1 still it is showing dependencies out of date
I have also tested uninstalling the old version manually sudo gem uninstall cocoapods -v 1.5.2, but I get the message Gem 'cocoapods' is not installed.
Anyone have any ideas what else I could do?
In terminal run
sudo gem install cocoapods
Once this is complete check the cocoapods version
pod --version
Then try pod install in your project iOS directory
EDIT
Try my podfile
# Uncomment this line to define a global platform for your project
platform :ios, '11.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!
flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
end
post_install do |installer|
installer.pods_project.targets.each do |target|
flutter_additional_ios_build_settings(target)
end
end
Using iphone 11 iOS-14 device and simulator, I have deleted THE podfile and podlock of my flutter app and trying to rebuild the app in debug MODE, i am using the latest firebase dependencies including cloud_firestore: ^0.14.1 dependency then it gets stuck at pod install and is taking forever to finish, been more than half an hour.
I wonder if i should wait longer or is there something wrong with firebase dependencies?
Pod install is not stuck, when you delete Podfile.lock, pod install will redownload all pod dependencies, will take a long time, after finish, it will create a new Podfile.lock
I have a project that have 20+ dependencies for flutter, firebase dependencies are the most complex ones
Add this line under target 'Runner' do in Podfile.
pod 'FirebaseFirestore', :git =>
'https://github.com/invertase/firestore-ios-sdk-frameworks.git', :tag
=> '6.33.0'
Then in IOS:
flutter clean
pod repo update
For more info: https://github.com/FirebaseExtended/flutterfire/issues/2751
If you have spent 20-30 minutes of your time holding onto pod install and yet it seems to stuck forever (Possibly installed firebase dependencies then running same project on different machine). Then there are other workaround to it.
Clean cache and pub get your dependencies
flutter clean
flutter pub get
Navigate to your ios folder from the terminal
cd ios
Remove Trunk
pod repo remove trunk
If your current installation is in Intel Chipped Mac run the code below
pod install --repo-update
If your installation is in M1 chip device install ffi first
sudo arch -x86_64 gem install ffi
Then update POD
arch -x86_64 pod install --repo-update
Now clean and fetch dependencies
flutter clean
flutter pub get
If you encountered an error similar to like below
[!] CocoaPods could not find compatible versions for pod "cloud_firestore":
In Podfile:
cloud_firestore (from `.symlinks/plugins/cloud_firestore/ios`)
Specs satisfying the `cloud_firestore (from `.symlinks/plugins/cloud_firestore/ios`)` dependency were found, but they required a higher minimum deployment target.
[!] Automatically assigning platform `iOS` with version `9.0` on target `Runner` because no platform was specified. Please specify a platform for this target in your Podfile. See `https://guides.cocoapods.org/syntax/podfile.html#platform`.
Then go to podfile, uncomment platmform:ios line and update it
platform :ios, '12.0'
Now re-run the command
arch -x86_64 pod install --repo-update
Don't Forget to clean pub caches with flutter clean
Check if your Xcode is up to date.
Updating my Xcode has resolved the issue for me.
I have tried all the above solutions but non have worked.
Only updating Xcode has worked.
Sometimes it seems that the 'pod install' command is taking forever, but it is downloading the dependencies in the background.
Please try to look into the Activity Monitor network tab to confirm that some data is being downloaded.
In my case, my pod depended on the Firebase pods, so it took around 10 minutes to complete my dependencies.
Recommended way on their official documentation is as follow:
Optional: Improve iOS & macOS build times by including the pre-compiled framework.
Currently, the Firestore SDK for iOS depends on code that can take upwards of 5 minutes to build in Xcode. To reduce build times significantly, you can use a pre-compiled version by adding this line to the target 'Runner' do block in your Podfile:
target 'Runner' do
pod 'FirebaseFirestore', :git => 'https://github.com/invertase/firestore-ios-sdk-frameworks.git', :tag => '8.15.0'
# ...
end
Additionally, ensure that you have upgraded CocoaPods to 1.9.1 or higher:
gem install cocoapods
need to produce an archive so we can upload to TestFlight so followed instructions in https://flutter.dev/docs/deployment/ios . my flutter runs on both real iPhone and simulator with no problem. so I produce a release version as required then open the resultant Xcode project (runner). immediately see the error
:-1: Multiple commands produce '/Users/jmcfet/Library/Developer/Xcode/DerivedData/Runner-cwxykfeiijpirmgbtrkzktdrahbt/ArchiveIntermediates/Runner/InstallationBuildProductsLocation/Applications/Runner.app/Frameworks/Flutter.framework':
1) Target 'Runner' has copy command from '/Users/jmcfet/AndroidStudioProjects/sis/ios/Flutter/Flutter.framework' to '/Users/jmcfet/Library/Developer/Xcode/DerivedData/Runner-cwxykfeiijpirmgbtrkzktdrahbt/ArchiveIntermediates/Runner/InstallationBuildProductsLocation/Applications/Runner.app/Frameworks/Flutter.framework'
2) That command depends on command in Target 'Runner': script phase “[CP] Embed Pods Frameworks”
now this does not happen when I do the same against the "Flutter Hello world" app so wondering what is messed up in my Flutter app
no luck :
johns-MacBook-Air:ios jmcfet$ pod install
Analyzing dependencies
Fetching podspec for Flutter from .symlinks/flutter/ios
Fetching podspec for video_player from .symlinks/plugins/video_player/ios
Downloading dependencies
Using Flutter (1.0.0)
Using video_player (0.0.1)
Generating Pods project
Integrating client project
Pod installation complete! There are 2 dependencies from the Podfile and 2 total pods installed.
[!] Automatically assigning platform ios with version 8.0 on target Runner because no platform was specified. Please specify a platform for this target in your Podfile. See https://guides.cocoapods.org/syntax/podfile.html#platform.
[!] CocoaPods did not set the base configuration of your project because your project already has a custom config set. In order for CocoaPods integration to work at all, please either set the base configurations of the target Runner to Pods/Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig or include the Pods/Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig in your build configuration (Flutter/Release.xcconfig).
not an IOS expert but looks like the install was not successful. little confused as the Xcode project was generated by Flutter so why is Flutter generating a bad config file. if so looks like a bug to me
I'm trying to create a plugin package in order to access some specific hardware APIs, both in Android (using Kotlin) and in iOS (using Swift). To that end, I was trying to follow the instructions here:
https://flutter.dev/docs/development/packages-and-plugins/developing-packages
I'm right now only working on the Swift side of the problem, so what has been done so far is the following:
1) Went to the directory where other Dart packages live (which are non-Flutter ones, and which work perfectly okay) and ran:
flutter create --org com.example --template=plugin my_plugin
That created the whole thing as described in the documentation, and no error was reported.
2) Then, as stated in the previous link, I went to my_plugin/example and ran flutter build ios --no-codesign, with the following (apparently okay?) output:
Warning: Building for device with codesigning disabled. You will have to manually codesign before deploying to device.
Building com.example.myPluginExample for device (ios-release)...
Running pod install... 6.5s
├─Building Dart code... 2.9s
├─Generating dSYM file... 1.0s
├─Stripping debug symbols... 0.6s
├─Assembling Flutter resources... 1.0s
└─Compiling, linking and signing... 9.0s
Xcode build done. 19.8s
3) So now with the plugin just created, tried to add it to the main project and thus, in its pubspec.yaml file, inserted the following lines (the plugin is located in ../pkgs with respect to the Flutter application I'm working in:
dependencies:
flutter:
sdk: flutter
my_plugin:
path: ../pkgs/my_plugin
4) Now just tried to run the Flutter application both in a physical device and in the simulator, and the following error always showed up:
Launching lib/main.dart on iPhone Xʀ in debug mode...
CocoaPods' output:
↳
Preparing
Analyzing dependencies
Inspecting targets to integrate
Using `ARCHS` setting to build architectures of target `Pods-Runner`: (``)
Finding Podfile changes
A my_plugin
- Flutter
Fetching external sources
-> Fetching podspec for `Flutter` from `.symlinks/flutter/ios`
-> Fetching podspec for `my_plugin` from `.symlinks/plugins/my_plugin/ios`
Resolving dependencies of `Podfile`
Comparing resolved specification to the sandbox manifest
A Flutter
A my_plugin
Downloading dependencies
-> Installing Flutter (1.0.0)
-> Installing my_plugin (0.0.1)
- Running pre install hooks
[!] Unable to determine Swift version for the following pods:
- `my_plugin` does not specify a Swift version and none of the targets (`Runner`) integrating it have the `SWIFT_VERSION` attribute set. Please contact the author or set the `SWIFT_VERSION` attribute in at least one of the targets that integrate this pod.
/usr/local/Cellar/cocoapods/1.6.1/libexec/gems/cocoapods-1.6.1/lib/cocoapods/installer/xcode/target_validator.rb:115:in `verify_swift_pods_swift_version'
/usr/local/Cellar/cocoapods/1.6.1/libexec/gems/cocoapods-1.6.1/lib/cocoapods/installer/xcode/target_validator.rb:37:in `validate!'
/usr/local/Cellar/cocoapods/1.6.1/libexec/gems/cocoapods-1.6.1/lib/cocoapods/installer.rb:459:in `validate_targets'
/usr/local/Cellar/cocoapods/1.6.1/libexec/gems/cocoapods-1.6.1/lib/cocoapods/installer.rb:138:in `install!'
/usr/local/Cellar/cocoapods/1.6.1/libexec/gems/cocoapods-1.6.1/lib/cocoapods/command/install.rb:48:in `run'
/usr/local/Cellar/cocoapods/1.6.1/libexec/gems/claide-1.0.2/lib/claide/command.rb:334:in `run'
/usr/local/Cellar/cocoapods/1.6.1/libexec/gems/cocoapods-1.6.1/lib/cocoapods/command.rb:52:in `run'
/usr/local/Cellar/cocoapods/1.6.1/libexec/gems/cocoapods-1.6.1/bin/pod:55:in `<top (required)>'
/usr/local/Cellar/cocoapods/1.6.1/libexec/bin/pod:22:in `load'
/usr/local/Cellar/cocoapods/1.6.1/libexec/bin/pod:22:in `<main>'
Error output from CocoaPods:
↳
WARNING: CocoaPods requires your terminal to be using UTF-8 encoding.
Consider adding the following to ~/.profile:
export LANG=en_US.UTF-8
Error running pod install
Error launching application on iPhone Xʀ.
Exited (sigterm)
5) I tried to fix it by adding the following line to the only 2 Podfile files that I can see in my whole directory structure (the one that belongs to the app and the one that belongs to the new plugin "example" -both files automatically created by Flutter's tools and both not having received any edit until today-):
config.build_settings['SWIFT_VERSION'] = '4.1'
(that idea was taken from https://stackoverflow.com/a/52194702/6348097, and yes: I tried at least one different version number). The error is still the same.
The resulting plugin's Podfile is:
platform :ios, '9.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 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['SWIFT_VERSION'] = '4.1'
config.build_settings['ENABLE_BITCODE'] = 'NO'
end
end
end
I did the same adding to the Flutter app's Podfile. Also, the first line where the iOS platform was specified, was originally commented (and that was generating a warning) so I also uncommented that line from both podfiles.
This is the output of flutter doctor:
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, v1.2.1, on Mac OS X 10.14.3 18D109, locale en-ES)
[✓] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
[✓] iOS toolchain - develop for iOS devices (Xcode 10.2)
[✓] Android Studio (version 3.3)
[✓] VS Code (version 1.33.1)
[✓] Connected device (1 available)
• No issues found!
The question is just how to make this work. I did not even started adding my own code, but I'm stuck with the very basic Flutter's plugin creation tool. Also, I have no idea why I need all that dirty and complex example subdir in my package (so as a secondary question that is not really important: can I just remove it once this works?)
EDIT: I did another test: created an empty app using VSC's "Flutter: New Project" command (which creates the "Flutter 101" increment-a-counter example). Then followed again the steps described above in order to create the plugin package, and got the same error when included that package on the newly created project and ran it in the iOS simulator. So there is absolutely no code from me there, except for having added the new plugin as a dependency to the example app.
Try to open the IOS project in the folder ios/Runner/Runner.xcworkspac with Xcode. Then create / add a new Swift file anywhere in that directory. Xcode will then automatically apply changes needed to your support your swift part of your flutter app.
The other thing could be that your PodFile was modified somehow: try to compare it to Google's master PodFile through this link: PodFile Master File
After having tried several things, none of which worked, I found this solution on a GitHub thread:
https://github.com/ko2ic/image_downloader/issues/9#issuecomment-471608482
Having followed these steps strictly, did finally work.
A few interesting thing were:
I also tried to create the plugin from Android Studio (instead of from the command line or from VSC). It did not work without the steps described in the previous link, but the steps were finally done on that Android Studio created plugin (so I just don't know if this would work with a VSC created plugin, must I would say that most likely yes, since I did not see any difference on the outcome of the commands). I mention this because this answer was suggesting that that may fix the problem: https://stackoverflow.com/a/54919007/6348097
There are 2 Podfile files in the sources: one for the plugin, and another one for the app itself. I modified both and I opened both XCode (automaticall generated) projects.
I also added the following line to the Podfile: config.build_settings['SWIFT_VERSION'] = '4.2', right before the only occurrence of the following line: config.build_settings['ENABLE_BITCODE'] = 'NO'
In both Podfile files, uncommented the platform :ios, '8.0', and changed the versino to 9.0. This did not solve the problem, but at some point fixed a warning when running pod install