Replies: 13 comments 39 replies
-
To be honest, I'm not even sure what the purpose of My advice to anyone looking to contribute or otherwise build these nugets for themselves would be to read through the commit history to see what steps were needed to update it past where Microsoft left us. All of the changes were made by hand.
Your guess is correct. Links to binary distributions like this, linker flags, and framework dependencies are all gleaned from the podspecs. To sniff out dependencies and versions, I run a simple
If dependencies haven't changed, upgrading can be a relatively simple process of just bumping version numbers in |
Beta Was this translation helpful? Give feedback.
-
I'll also say... It would be really nice to have this process automated. My experience with this project is that it hinges on a fair amount of 'tribal knowledge'. It is time-consuming to maintain and extraordinarily difficult to pick up from scratch. I suspect these are the main reasons Microsoft abandoned it, as its original maintainers have moved on and never got this project to a 'good' place where it was easier to maintain. The sister project on the Android side has more of the script automation you'd hope for (and still has its maintainer...), and Microsoft is still supporting it. So @Digifais if you'd like to have a go at contributing (maybe updating from 10.24 -> 10.25?), feel free to ask specific questions here and I'll offer any assistance I can. |
Beta Was this translation helpful? Give feedback.
-
@AdamEssenmacher I've been trying to update GoogleSignIn first, but just on trying to run the
So adding
How would I tackle this, adding it in the same way as stated above doesn't solve this. |
Beta Was this translation helpful? Give feedback.
-
Ideally, pod dependencies like this would be 1:1 for NuGet packages. For example, there really should be something like an Unfortunately, this is not the approach the original Microsoft team took with the iOS bindings for reasons I can't fathom (except for the obvious... expediency?). Instead, common Google/Firebase dependencies such as I wouldn't expect the build tasks to run correctly in the current state of this repo for GoogleSignIn--it's just not one of the projects I've brought forward from where Microsoft left it. I posted a podfile above. If your goal is to get GoogleSignIn working, your first step should be to uncomment the |
Beta Was this translation helpful? Give feedback.
-
@AdamEssenmacher Wouldn't looking at the podspec yield the same result as using the podfile you posted above? I already figured that GoogleSignIn has a dependency on FirebaseCore, but I don't understand why it would throw the error for |
Beta Was this translation helpful? Give feedback.
-
@AdamEssenmacher Looking at the podspec for GoogleSignIn 5.0.2 and the latest version 8.0.0 (but this has been since the next version after 5.0.2, being 6.0.0), the source URL has changed from a download link to the GitHub repo. Changing it in the targets file of GoogleSign to this works, but the contents of what is inside has changed (e.g. no framework anymore but just the plain source code):
Any ideas on how to go about this now? |
Beta Was this translation helpful? Give feedback.
-
A key property in the podspec is "source": {
"http": "https://dl.google.com/dl/cpdc/4d5ad0c02cd38abf/GoogleSignIn-5.0.2.tar.gz"
}, When dealing with Google's pods, seeing a tarball source is a solid indicator that the source is precompiled code (i.e. a framework). If you download the file and extract it, you can verify that this is the case. Google Pods are usually distributed this way when the source code is private. In this GoogleApisForiOSComponents project, precompiled frameworks like this are downloaded during NuGet package restore using Now, in the 8.0.0 podspec, "source": {
"git": "https://github.com/google/GoogleSignIn-iOS.git",
"tag": "8.0.0"
}, This means that the source is no longer being distributed as a pre-compiled binary, but as a git tag. On one hand, this is a good thing. The XamarinBuildDownload tool is hacky and temperamental. On the other hand, it means that there's a lot more work to do to accomplish the task at hand. Because the source has changed fundamentally, updating the There are plenty of examples of csproj/targets combos that do not use XamarinBuildDownload (such as CloudFirestore) in the There is one other major area of concern here: How does the shift from tarball to git sources impact Resources? The GoogleSignIn pod ships with UI Resources (e.g. images, resource strings). When it was distributed as a binary, all of those resources were included in a .bundle file included in the tarball along with the compiled framework. In the <BundleResource Include="$(_GoogleSignInSDKBaseFolder)Resources\GoogleSignIn.bundle\Info.plist" Visible="False">
<LogicalName>GoogleSignIn.bundle\Info.plist</LogicalName>
</BundleResource>
In summary, I think the path forward looks like:
|
Beta Was this translation helpful? Give feedback.
-
@AdamEssenmacher Thanks once again for your extensive response to my question, I'll look into this tomorrow as I was just about to go to bed. In the meantime, I've been running into the following issue: #35 on Mac (so not the long path issue) and can't seem to get this working, even when trying the suggested solution. Do you have any ideas for that? Edit: for some reason, it also keeps downloading |
Beta Was this translation helpful? Give feedback.
-
@AdamEssenmacher Upon updating the ApiDefinitions for GoogleSignIn v8.0.0, there is a new property introduced being:
This is currently throwing the last build error I have left stating that the type is missing. This particular type is originating from GTMSessionFetcher. How would I go about to fix this build error? |
Beta Was this translation helpful? Give feedback.
-
This is a typo right: Proimises vs Promises? Fixing the typo gives the following build errors though:
|
Beta Was this translation helpful? Give feedback.
-
Just a notice, as we are using the Maps SDK for iOS in our app as well, this will be another one I will be tackling right now to bring it up to date to the latest version, being 9.1.1 at the time of writing this comment. There is no dependency on Firebase libraries with this one, so I would imagine this would be an interesting one to pull in this repo, although it's not updated incremental. There seems to be some community members also interested in this looking at #31. |
Beta Was this translation helpful? Give feedback.
-
I think I'm nearly there with updating the ApiDefinitions, Enums, Structs and Extensions for Google Maps v9.1.1, however there is one build error left. I'm getting:
FeatureLayer is defined as such:
And Feature is defined as such:
Is this just a case of removing the generic type argument in the binding and managing the type at runtime to avoid the compile-time error in C#? Or do you have any other solution how I should go about this? |
Beta Was this translation helpful? Give feedback.
-
Is there any guidance on how this repository actually works in order to make contributions to update some packages?
E.g. should the
update.cake
script be used or is all the work done manually? Where are URLs such ashttps://dl.google.com/firebase/ios/analytics/cc4d75392af34c62/GoogleAppMeasurement-10.24.0.tar.gz
pulled from, I guess the podspecs but are they manually updated or automatically?Beta Was this translation helpful? Give feedback.
All reactions