CocoaPods + Plugins
Starting with CocoaPods 1.7 (in Beta as of time of writing), it is now possible to get some basic operations, such as pod install and pod update to run on Windows. This guide walks through the. The following guide is designed to get you up and running with Flutter and Firebase on both iOS and Android. In addition to the core setup, we will also configure optional services like Crashlytics, Performance, and App Distribution. 💡 If you run into issues, refer to official FlutterFire setup instructions. Create your Flutter App.
CocoaPods is a community project run by very few maintainers with a massive surface area to maintain. It's safe to saythat CocoaPods could never support every feature that Xcode supports, and even then the team has to say 'no' to a lot ofpotentially useful features.
Rather than let that be the end of the discussion, back in 2013 CocoaPods added support for CocoaPods Plugins.The plugin architecture allowed others to extend CocoaPods to support features that don't fit the main goal of dependencymanagement and eco-system growth.
What can CocoaPods Plugins do?
A CocoaPods Plugin can:
- Hook into the install process, both before and after
- Add new commands to
pod
- Do whatever they want, because Ruby is a very dynamic language
This means the scope of a plugin is generally related to adding features to your build process, but can really do anythingyou want. For example cocoapods-roulette
generates a new iOS appwith three random Pods. We keep a relatively curated list of all plugins, you can see them at the end of this article.
How do I install a plugin
You will want to use a Gemfile
, if you've never used a Gemfile before or want a refresher - check out our guide'Using a Gemfile'. All CocoaPods Plugins are Gems, and they are installed by first addingthem to the Gemfile
, then you need to mention that they exist inside your Podfile.
For example, to use cocoapods-repo-update - you need toamend your Gemfile
:
Then add a reference to it in your Podfile
:
Running bundle exec pod install
will then have the cocoapods-repo-update
plugin executed also.
What Plugins Exist?
There's quite a few! If you have some more to add, send us a PR to this JSON file
AppleDoc
Generates docset and documentation for a pod.
Check Latest
Checks if the latest version of a pod is up to date.
CocoaPods Acknowledgements
CocoaPods plugin that generates an acknowledgements plist to make it easy to create tools to use in apps.
CocoaPods Archive
A CocoaPods plugin that enables you to archive your Pod as a static library
CocoaPods Artifactory Plugin
Google play services for bluestacks download. Enables usage of Artifactory as an index for CocoaPods repo and as a repository for pods.
CocoaPods Blocklist
Check if a project is using a banned version of a pod. Handy for security audits.
CocoaPods Check
Displays differences between locked and installed Pods
CocoaPods Debug
A simple plugin to ease debugging CocoaPods.
CocoaPods Foundation Headers
A CocoaPods plugin for using Foundation instead of UIKit/Cocoa in generated headers
CocoaPods Generator
Add files to empty target from *.podspec, such as souce files, libraries, frameworks, resources and so on.
CocoaPods Githooks
A CocoaPods plugin that syncs git hooks between team members
CocoaPods Integrate Flutter
A plugin to integrate flutter with existing iOS application.
CocoaPods Keys
Store sensitive data in your Mac's keychain, that will be installed into your app's source code via the Pods library.
CocoaPods Links
A CocoaPods plugin to manage local development pods
CocoaPods Mangle
Mangling your dependencies symbols allows more than one copy of a dependency to exist without errors. This plugin mangles your dependencies to make this possible.
CocoaPods Mix Frameworks
Mix use_framework! targets with static targets through a surrogate Framework target.
CocoaPods Packager
Generate a framework or static library from a podspec.
CocoaPods Prune Localizations
Upon running pod install, this plugin will remove unused localizations by your project
CocoaPods Repo Update
cocoapods-repo-update is a CocoaPods plugin that checks your dependencies when you run `pod install` and updates the local specs repositories if needed.
CocoaPods Templates
CocoaPods plugin to install Xcode templates from a remote source
CocoaPods Thumbs
Use cocoapods-thumbs to check upvotes or downvotes of Podspecs from your peers based on past experiences.
CocoaPods Update If You Dare
What Plugins Exist?
There's quite a few! If you have some more to add, send us a PR to this JSON file
AppleDoc
Generates docset and documentation for a pod.
Check Latest
Checks if the latest version of a pod is up to date.
CocoaPods Acknowledgements
CocoaPods plugin that generates an acknowledgements plist to make it easy to create tools to use in apps.
CocoaPods Archive
A CocoaPods plugin that enables you to archive your Pod as a static library
CocoaPods Artifactory Plugin
Google play services for bluestacks download. Enables usage of Artifactory as an index for CocoaPods repo and as a repository for pods.
CocoaPods Blocklist
Check if a project is using a banned version of a pod. Handy for security audits.
CocoaPods Check
Displays differences between locked and installed Pods
CocoaPods Debug
A simple plugin to ease debugging CocoaPods.
CocoaPods Foundation Headers
A CocoaPods plugin for using Foundation instead of UIKit/Cocoa in generated headers
CocoaPods Generator
Add files to empty target from *.podspec, such as souce files, libraries, frameworks, resources and so on.
CocoaPods Githooks
A CocoaPods plugin that syncs git hooks between team members
CocoaPods Integrate Flutter
A plugin to integrate flutter with existing iOS application.
CocoaPods Keys
Store sensitive data in your Mac's keychain, that will be installed into your app's source code via the Pods library.
CocoaPods Links
A CocoaPods plugin to manage local development pods
CocoaPods Mangle
Mangling your dependencies symbols allows more than one copy of a dependency to exist without errors. This plugin mangles your dependencies to make this possible.
CocoaPods Mix Frameworks
Mix use_framework! targets with static targets through a surrogate Framework target.
CocoaPods Packager
Generate a framework or static library from a podspec.
CocoaPods Prune Localizations
Upon running pod install, this plugin will remove unused localizations by your project
CocoaPods Repo Update
cocoapods-repo-update is a CocoaPods plugin that checks your dependencies when you run `pod install` and updates the local specs repositories if needed.
CocoaPods Templates
CocoaPods plugin to install Xcode templates from a remote source
CocoaPods Thumbs
Use cocoapods-thumbs to check upvotes or downvotes of Podspecs from your peers based on past experiences.
CocoaPods Update If You Dare
update .. if you dare (warns users before updating all pods at once)
CocoaPods Uploader
Upload file/dir to remote storage.
CocoaPods User Defined Build Types
A CocoaPods plugin which can selectively set build type per pod (static library, dynamic framework, etc.)
Cocoapods Pod Merge
Merge pods used by your iOS project, reducing the number of dynamic frameworks your app has to load on startup
Deploy
Deploys dependencies for a CocoaPods project without needing to clone the repo (Similar to Bundler's `--deployment`).
Pod Dependencies
Shows a project's CocoaPod dependency graph.
Pod docs
Convenient access to the documentation of a Pod via cocoadocs.org.
Pod watch
Watch for Podfile changes and run pod install.
Pods Roulette
Install Flutter Mac
Builds an empty project with three random pods.
Rome
Rome makes it easy to build a list of frameworks for consumption outside of Xcode, e.g. for a Swift script.
Sorted Search
Adds a sort subcommand for pod search to sort search results by amount of stars, forks, or github activity.
git tarball
Speed up downloads of pods from public git repos by using tarballs, if possible.
repo-hg
Adds mercurial support to manage spec-repositories.
repo-svn
Adds subversion support to manage spec-repositories.
Flutter is currently on a mission to become a true 'write-once, run anywhere' technology. iOS and Android platforms are extensively supported and it's already possible to build macOS applications using Flutter.
ℹ️ This post solves a very technical issue – if you're interested in learning more about Flutter and why to use it, this article provides a higher-level overview and explains why we are building our AI-assistant with Flutter.
Building and running a macOS application with Flutter has become quite easy in the last few months. Unfortunately, the tooling around Flutter Desktop applications still lacks some essential features – but be assured that the maintainers of Flutter are already working on most of them.
Shipping a Flutter Desktop application to customers
One of the essential features currently missing is the capability to build a macOS Installer (usual a .dmg file) for distribution. By default, Flutter builds a .app file, which can be executed straight away:
Building a .dmg with Flutter
But what, if you would like to distribute an installer?
There is a great project called 'create-dmg' out there, which can be installed using Homebrew (refer to the project's README for other setup methods):
To give it a try, switch to the /build/macos/Build/Products folder after building your macOS application.
Customizing your installer
To make your installer more fancy, you can customize the volume name, volume icon, and installer background. You just need to fiddle with the icon placement and text size and you'll end up with a few command lines:
Flutter Install Windows 10
The script automatically prepares the DMG installer with the desired settings. Don't be spooked by some windows automatically appearing in the process:
Even more fancy with Retina support
Flutter Running Pod Install
By default, the background image does not support retina resolutions and might look a bit blurry. Fortunately, it's possible to use a TIFF image instead of PNGs / JPGs. Just create a @2x version of your background image with twice the resolution. On macOS you can use tiffutil to create a retina-ready background image for your installer:
There are a few more options to consider when using create-dmg. For example, you can attach your own EULA / license. Keep in mind, that this manual step (of creating a DMG installer) might be obsolete in future versions of Flutter. But for today, this enables you to get up and running with your own, distributable Flutter desktop application in no time.