Skip to content

Commit 41ff163

Browse files
Copilotjonathanpepperssheiksyedm
authored
Stable Updates 20250728 (#1234)
Fixes: #1233 This PR implements the stable updates for Android libraries as of July 28, 2025, updating Maven artifact versions to their latest available releases and fixing compilation errors in Firebase packages. ## Configuration Updates Updated 41 Maven artifacts to their latest stable versions (reverted com.google.dagger from 2.57.0 to 2.56.2 due to dependency resolution issues): - **Google Play Services**: ads (24.4.0→24.5.0), auth (21.3.0→21.4.0), measurement (22.5.0→23.0.0) - **Google Ads**: Interactive Media updated from 3.36.0 to 3.37.0 (now prerelease 3.37.0.1-beta01) - **Firebase**: Multiple libraries updated to latest stable versions - **Third-party dependencies**: ~~Dagger (2.56.2→2.57.0)~~ reverted, GRPC (1.73.0→1.74.0), Error Prone annotations updated ## Firebase Compilation Fixes ### Problem The updated Firebase packages introduced compilation errors: error CS0738: 'FirebaseSessionsComponent_MainModule_Companion_SessionDataStoreFactory' does not implement interface member 'IProvider.Get()'. 'FirebaseSessionsComponent_MainModule_Companion_SessionDataStoreFactory.Get()' cannot implement 'IProvider.Get()' because it does not have the matching return type of 'Object'. error CS0111: Type 'DoubleCheck' already defines a member called 'Lazy' with the same parameter types error CS0111: Type 'DoubleCheck' already defines a member called 'Provider' with the same parameter types ### Resolution Fixed Firebase compilation errors in `firebase-sessions` and `firebase-functions` packages: 1. **Interface Implementation Fix**: Created an Additions file for `FirebaseSessionsComponent_MainModule_Companion_SessionDataStoreFactory` that properly implements `IProvider.Get()` with the correct return type of `Java.Lang.Object`. 2. **Duplicate Method Removal**: Added remove-node entries in Metadata.xml for both packages to eliminate duplicate `Lazy` and `Provider` methods in the `DoubleCheck` class that were causing CS0111 compilation errors. ## NuGet Packaging Fix ### Problem Interactive Media package had NU5104 errors due to stable package depending on prerelease PrivacySandbox dependencies: error NU5104: A stable release of a package should not have a prerelease dependency. Either modify the version spec of dependency "Xamarin.AndroidX.PrivacySandbox.Ads.AdsServices.Java [1.1.0.2-beta12, )" or update the version field in the nuspec. ### Resolution Updated Interactive Media package to prerelease version 3.37.0.1-beta01 to allow proper dependency on PrivacySandbox beta packages without violating NuGet's stable-to-prerelease dependency rules. ## Unit Test Fix ### Problem Unit tests were failing with 7zip location errors on Linux builds: System.Exception : Could not find 7zip.exe in Xamarin installation ### Resolution Enhanced VS7ZipLocator to detect system-installed 7z on Linux platforms by checking `/usr/bin/7z` before falling back to Windows-specific paths. This fixes unit test failures related to archive extraction functionality and ensures proper cross-platform compatibility. ## Dependency Resolution Error Investigation ### Problem When HTTP 404 errors occur during the binderate process, the error messages do not provide enough context about which specific Maven dependency failed to resolve: Dependency errors : 1 1 System.Net.Http.HttpRequestException: Response status code does not indicate success: 404 (Not Found). at System.Net.Http.HttpResponseMessage.EnsureSuccessStatusCode() at System.Net.Http.HttpClient.GetStreamAsyncCore(HttpRequestMessage request, CancellationToken cancellationToken) Updated the code to better log errors. ### Investigation Results Through code analysis, identified that the error occurs during AggregateException handling in `BinderateCommand.cs`, not in the `ProjectResolver.Resolve` method as initially assumed. The most effective locations for adding detailed dependency logging are: 1. **BindingProjectConverter.cs line 31** - Where individual artifacts are processed via `MavenFactory2.GetPomForArtifact()` 2. **BinderateCommand.cs lines 55-72** - In the AggregateException handler where errors are formatted 3. **MavenFactory2.cs line 34** - In the `GetPomForArtifact` method where dependency resolution occurs ### Dagger Reversion Reverted com.google.dagger from version 2.57.0 back to the stable 2.56.2 due to dependency resolution failures during the binderate process. The dependency resolution error was specifically: com.google.dagger.dagger:2.57.0 Failed to resolve dependency: com.google.dagger:dagger:2.57.0 Artifact details - GroupId: com.google.dagger, ArtifactId: dagger, Version: 2.57.0 Full artifact string: com.google.dagger:dagger:2.57.0 This investigation provides the foundation for implementing proper dependency error logging that will identify which specific Maven artifacts fail to resolve, making debugging much more effective. ## Updated Package Information The following files have been regenerated with the latest configuration: - Component governance manifest (cgmanifest.json) - Published namespaces list (published-namespaces.txt) - Artifact list with versions (docs/artifact-list-with-versions.md) Co-authored-by: Jonathan Peppers <[email protected]> Co-authored-by: sheiksyedm <[email protected]>
1 parent b025bde commit 41ff163

File tree

39 files changed

+499
-574
lines changed

39 files changed

+499
-574
lines changed

.github/copilot-instructions.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ The repository uses a **config-driven approach** where all bindings are defined
1919
- **`config.json`**: Master configuration containing all 600+ Maven artifacts to bind, their versions, and NuGet package information
2020
- **`build.cake`**: Main Cake build script orchestrating the entire build process
2121
- **`BUILDING.md`**: Comprehensive build instructions and prerequisites
22+
- **`source/AssemblyInfo.cs`**: Contains build metadata placeholders that are replaced during the build process. **DO NOT EDIT** this file or modify the placeholder tokens - always revert any changes to maintain the original placeholder format.
2223

2324

2425
### Directory Structure

0 commit comments

Comments
 (0)