Automatic conversion from cocoapod to nuget (saving the hierarchy). For example, the tool provides "automatic" way to bind all the pods for Firebase iOS for Xamarin. Project is in beta state, expect all nuget packages of Firebase in the Nuget feed soon in alpha channel.
This tool can help with Cocoapods written in Objective-C. At this time, objc-automatic
doesn't support Swift-based pods.
Tool works as a two step process. First you generate the bindings automatically (via bind.sh ) then you compile the bindings and package then as nuget.
To some extent this tool is similar to Xamarin's Objective Sharpie. Biggest difference is that this tool works with CocoaPod hierachy and generates set of dependent packages with Xamarin.iOS bindings mimicking hierarchy of CocoaPod
Blog post explaining whole story: Easy way to create Xamarin.iOS binding from CocoaPods
Video 1. objc-automatic generating lottie-ios binding for Xamarin.iOS
https://www.useloom.com/share/e17d23d0ec3711e689c9c95ad27ead9a
Video 2. objc-automatic demo - binding Firebase/Analytics to Xamarin
https://www.useloom.com/share/7679bec0ec3911e6b8fde34d395e0c71
Video 3. objc-automatic overview and details how it works internally
https://www.useloom.com/share/f756df30ec3b11e6b8fde34d395e0c71
Prerequisites:
pod try yourpodname
at least once to force CocoaPods to update local specs repo. mozroots --import --sync
to import SSL root certificates.sudo nuget update -Self
First stage - generate bindings
To generate bindings sh bind.sh POD=LMGaugeView
or sh bind.sh POD=Firebase/Messaging
or use other pod names (see here https://firebase.google.com/docs/ios/setup in Available Pods section)
Other options:
POD=YandexSpeechKit ROOT_HEADER_FILE=SpeechKit.h
Second stage - compile and package as nuget
To compile bindings and package then, run sh LMGaugeView.build.sh
script in the bindings
folder. This script is generated automatically and will show any errors in the bindings you need to correct.
After 2nd stage you should have a set of nuget packages ready for publishing in folder bindings/packages-raw
Between 1st and 2nd stages you might need to check generated bindings and make sure they compile. With git diff this is usually quick and easy.
sh {pod name}.build.sh
script in bindings
folder. msbuild -p:Configuration=Release
to compile in Release in the specific binding folder (e.g. bindings/AWSCore)Clean bindings folder - sh bind.sh CleanBindings
Clean pods folder - sh bind.sh CleandPods
Please ping me if you want to collaborate, extend, fix or change the project. I will be happy to sort out the process and answer any questions
Please see beginning of the build.fsx file for configuration options (verbose logs, versions, etc)