From d80329c97c37cf843b0b0a5ab3ed5cfc10c8842a Mon Sep 17 00:00:00 2001 From: Redth Date: Wed, 1 Jun 2016 12:33:26 -0400 Subject: [PATCH 001/178] Bump versions and ready build scripts for update --- GpsConsts.cs | 11 +- build.cake | 309 +++++++++++++++++++++++++++++++++++---------------- 2 files changed, 222 insertions(+), 98 deletions(-) diff --git a/GpsConsts.cs b/GpsConsts.cs index ac66c77d6..4e587a6f3 100644 --- a/GpsConsts.cs +++ b/GpsConsts.cs @@ -3,6 +3,13 @@ // https://dl-ssl.google.com/android/repository/addon.xml static class __GpsConsts { - public const string Url = "https://dl-ssl.google.com/android/repository/google_m2repository_r24.zip"; - public const string Version = "8.4.0"; + public const string Url = "https://dl-ssl.google.com/android/repository/google_m2repository_r27.zip"; + public const string Version = "9.0.1"; + public const string WearVersion = "1.4.0"; +} + +static class __FbConsts +{ + public const string Url = __GpsConsts.Url; + public const string Version = __GpsConsts.Version; } \ No newline at end of file diff --git a/build.cake b/build.cake index 87d5fe9c8..28565797c 100644 --- a/build.cake +++ b/build.cake @@ -1,36 +1,108 @@ #tool nuget:?package=ILRepack&version=2.0.10 -#tool nuget:?package=XamarinComponent&version=1.1.0.29 +#tool nuget:?package=XamarinComponent +#tool nuget:?package=Cake.MonoApiTools -#addin nuget:?package=Cake.XCode&version=1.0.4.0 -#addin nuget:?package=Cake.Xamarin&version=1.3.0.1 -#addin nuget:?package=Cake.Xamarin.Build&version=1.0.11.0 -#addin nuget:?package=Cake.FileHelpers&version=1.0.3.2 +#addin nuget:?package=Cake.XCode +#addin nuget:?package=Cake.Xamarin +#addin nuget:?package=Cake.Xamarin.Build +#addin nuget:?package=Cake.FileHelpers +#addin nuget:?package=Cake.MonoApiTools -var TARGET = Argument ("t", Argument ("target", "Default")); +// To find new URL: https://dl-ssl.google.com/android/repository/addon.xml and search for google_play_services_*.zip +var DOCS_URL = "https://dl-ssl.google.com/android/repository/google_play_services_9080000_r30.zip"; +var M2_REPOSITORY = "https://dl-ssl.google.com/android/repository/google_m2repository_r27.zip"; + +var PLAY_COMPONENT_VERSION = "30.0.1.0"; +var PLAY_NUGET_VERSION = "30.0.1-beta1"; +var PLAY_AAR_VERSION = "9.0.1"; -var COMPONENT_VERSION = "29.0.0.2"; -var NUGET_VERSION = "29.0.0.2"; -var COMPONENT_WEAR_VERSION = "1.3.0.4"; -var NUGET_WEAR_VERSION = "1.3.0.4"; -var AAR_VERSION = "8.4.0"; -var WEARABLE_SUPPORT_VERSION = "1.3.0"; +var WEAR_COMPONENT_VERSION = "1.4.0.0"; +var WEAR_NUGET_VERSION = "1.4.0.0-alpha1"; +var WEAR_AAR_VERSION = PLAY_AAR_VERSION; + +var WEARABLE_SUPPORT_VERSION = "1.4.0"; var WEARABLE_VERSION = "1.0.0"; -var M2_REPOSITORY = "https://dl-ssl.google.com/android/repository/google_m2repository_r24.zip"; -// https://dl-ssl.google.com/android/repository/addon.xml to find url -var DOCS_URL = "https://dl-ssl.google.com/android/repository/google_play_services_8487000_r29.zip"; +var FIREBASE_COMPONENT_VERSION = PLAY_COMPONENT_VERSION; +var FIREBASE_NUGET_VERSION = PLAY_NUGET_VERSION; +var FIREBASE_AAR_VERSION = PLAY_AAR_VERSION; -var AAR_DIRS = new [] { - "play-services", "play-services-all-wear", "play-services-base", "play-services-basement", "play-services-ads", "play-services-analytics", "play-services-appindexing", - "play-services-appinvite", "play-services-appstate", "play-services-cast", "play-services-drive", "play-services-fitness", "play-services-games", - "play-services-gcm", "play-services-identity", "play-services-location", "play-services-maps", "play-services-measurement", "play-services-nearby", "play-services-panorama", - "play-services-plus", "play-services-safetynet", "play-services-vision", "play-services-wallet", "play-services-wearable", "play-services-auth" +var TARGET = Argument ("t", Argument ("target", "Default")); + +var AAR_INFOS = new [] { + new AarInfo ("play-services-auth", "android/gms/play-services-auth", PLAY_AAR_VERSION, PLAY_NUGET_VERSION, PLAY_COMPONENT_VERSION), + new AarInfo ("play-services-auth-base", "android/gms/play-services-auth-base", PLAY_AAR_VERSION, PLAY_NUGET_VERSION, PLAY_COMPONENT_VERSION), + new AarInfo ("play-services-base", "android/gms/play-services-base", PLAY_AAR_VERSION, PLAY_NUGET_VERSION, PLAY_COMPONENT_VERSION), + new AarInfo ("play-services-basement", "android/gms/play-services-basement", PLAY_AAR_VERSION, PLAY_NUGET_VERSION, PLAY_COMPONENT_VERSION), + new AarInfo ("play-services-ads", "android/gms/play-services-ads", PLAY_AAR_VERSION, PLAY_NUGET_VERSION, PLAY_COMPONENT_VERSION), + new AarInfo ("play-services-ads-lite", "android/gms/play-services-ads-lite", PLAY_AAR_VERSION, PLAY_NUGET_VERSION, PLAY_COMPONENT_VERSION), + new AarInfo ("play-services-analytics", "android/gms/play-services-analytics", PLAY_AAR_VERSION, PLAY_NUGET_VERSION, PLAY_COMPONENT_VERSION), + new AarInfo ("play-services-analytics-impl", "android/gms/play-services-analytics-impl", PLAY_AAR_VERSION, PLAY_NUGET_VERSION, PLAY_COMPONENT_VERSION), + new AarInfo ("play-services-appindexing", "android/gms/play-services-appindexing", PLAY_AAR_VERSION, PLAY_NUGET_VERSION, PLAY_COMPONENT_VERSION), + new AarInfo ("play-services-appinvite", "android/gms/play-services-appinvite", PLAY_AAR_VERSION, PLAY_NUGET_VERSION, PLAY_COMPONENT_VERSION), + new AarInfo ("play-services-cast", "android/gms/play-services-cast", PLAY_AAR_VERSION, PLAY_NUGET_VERSION, PLAY_COMPONENT_VERSION), + new AarInfo ("play-services-drive", "android/gms/play-services-drive", PLAY_AAR_VERSION, PLAY_NUGET_VERSION, PLAY_COMPONENT_VERSION), + new AarInfo ("play-services-fitness", "android/gms/play-services-fitness", PLAY_AAR_VERSION, PLAY_NUGET_VERSION, PLAY_COMPONENT_VERSION), + new AarInfo ("play-services-games", "android/gms/play-services-games", PLAY_AAR_VERSION, PLAY_NUGET_VERSION, PLAY_COMPONENT_VERSION), + new AarInfo ("play-services-gcm", "android/gms/play-services-gcm", PLAY_AAR_VERSION, PLAY_NUGET_VERSION, PLAY_COMPONENT_VERSION), + new AarInfo ("play-services-identity", "android/gms/play-services-identity", PLAY_AAR_VERSION, PLAY_NUGET_VERSION, PLAY_COMPONENT_VERSION), + new AarInfo ("play-services-iid", "android/gms/play-services-iid", PLAY_AAR_VERSION, PLAY_NUGET_VERSION, PLAY_COMPONENT_VERSION), + new AarInfo ("play-services-location", "android/gms/play-services-location", PLAY_AAR_VERSION, PLAY_NUGET_VERSION, PLAY_COMPONENT_VERSION), + new AarInfo ("play-services-maps", "android/gms/play-services-maps", PLAY_AAR_VERSION, PLAY_NUGET_VERSION, PLAY_COMPONENT_VERSION), + new AarInfo ("play-services-nearby", "android/gms/play-services-nearby", PLAY_AAR_VERSION, PLAY_NUGET_VERSION, PLAY_COMPONENT_VERSION), + new AarInfo ("play-services-panorama", "android/gms/play-services-panorama", PLAY_AAR_VERSION, PLAY_NUGET_VERSION, PLAY_COMPONENT_VERSION), + new AarInfo ("play-services-plus", "android/gms/play-services-plus", PLAY_AAR_VERSION, PLAY_NUGET_VERSION, PLAY_COMPONENT_VERSION), + new AarInfo ("play-services-safetynet", "android/gms/play-services-safetynet", PLAY_AAR_VERSION, PLAY_NUGET_VERSION, PLAY_COMPONENT_VERSION), + new AarInfo ("play-services-tasks", "android/gms/play-services-tasks", PLAY_AAR_VERSION, PLAY_NUGET_VERSION, PLAY_COMPONENT_VERSION), + new AarInfo ("play-services-tagmanager", "android/gms/play-services-tagmanager", PLAY_AAR_VERSION, PLAY_NUGET_VERSION, PLAY_COMPONENT_VERSION), + new AarInfo ("play-services-tagmanager-api", "android/gms/play-services-tagmanager-api", PLAY_AAR_VERSION, PLAY_NUGET_VERSION, PLAY_COMPONENT_VERSION), + new AarInfo ("play-services-vision", "android/gms/play-services-vision", PLAY_AAR_VERSION, PLAY_NUGET_VERSION, PLAY_COMPONENT_VERSION), + new AarInfo ("play-services-wallet", "android/gms/play-services-wallet", PLAY_AAR_VERSION, PLAY_NUGET_VERSION, PLAY_COMPONENT_VERSION), + new AarInfo ("play-services-wearable", "android/gms/play-services-wearable", PLAY_AAR_VERSION, PLAY_NUGET_VERSION, PLAY_COMPONENT_VERSION), + + new AarInfo ("firebase-ads", "firebase/firebase-ads", FIREBASE_AAR_VERSION, FIREBASE_NUGET_VERSION, FIREBASE_COMPONENT_VERSION), + new AarInfo ("firebase-analytics", "firebase/firebase-analytics", FIREBASE_AAR_VERSION, FIREBASE_NUGET_VERSION, FIREBASE_COMPONENT_VERSION), + new AarInfo ("firebase-analytics-impl", "firebase/firebase-analytics-impl", FIREBASE_AAR_VERSION, FIREBASE_NUGET_VERSION, FIREBASE_COMPONENT_VERSION), + new AarInfo ("firebase-auth", "firebase/firebase-auth", FIREBASE_AAR_VERSION, FIREBASE_NUGET_VERSION, FIREBASE_COMPONENT_VERSION), + new AarInfo ("firebase-auth-common", "firebase/firebase-auth-common", FIREBASE_AAR_VERSION, FIREBASE_NUGET_VERSION, FIREBASE_COMPONENT_VERSION), + new AarInfo ("firebase-auth-module", "firebase/firebase-auth-module", FIREBASE_AAR_VERSION, FIREBASE_NUGET_VERSION, FIREBASE_COMPONENT_VERSION), + new AarInfo ("firebase-common", "firebase/firebase-common", FIREBASE_AAR_VERSION, FIREBASE_NUGET_VERSION, FIREBASE_COMPONENT_VERSION), + new AarInfo ("firebase-config", "firebase/firebase-config", FIREBASE_AAR_VERSION, FIREBASE_NUGET_VERSION, FIREBASE_COMPONENT_VERSION), + new AarInfo ("firebase-core", "firebase/firebase-core", FIREBASE_AAR_VERSION, FIREBASE_NUGET_VERSION, FIREBASE_COMPONENT_VERSION), + new AarInfo ("firebase-crash", "firebase/firebase-crash", FIREBASE_AAR_VERSION, FIREBASE_NUGET_VERSION, FIREBASE_COMPONENT_VERSION), + new AarInfo ("firebase-database", "firebase/firebase-database", FIREBASE_AAR_VERSION, FIREBASE_NUGET_VERSION, FIREBASE_COMPONENT_VERSION), + new AarInfo ("firebase-database-connection", "firebase/firebase-database-connection", FIREBASE_AAR_VERSION, FIREBASE_NUGET_VERSION, FIREBASE_COMPONENT_VERSION), + new AarInfo ("firebase-iid", "firebase/firebase-iid", FIREBASE_AAR_VERSION, FIREBASE_NUGET_VERSION, FIREBASE_COMPONENT_VERSION), + new AarInfo ("firebase-invites", "firebase/firebase-invites", FIREBASE_AAR_VERSION, FIREBASE_NUGET_VERSION, FIREBASE_COMPONENT_VERSION), + new AarInfo ("firebase-messaging", "firebase/firebase-messaging", FIREBASE_AAR_VERSION, FIREBASE_NUGET_VERSION, FIREBASE_COMPONENT_VERSION), + new AarInfo ("firebase-storage", "firebase/firebase-storage", FIREBASE_AAR_VERSION, FIREBASE_NUGET_VERSION, FIREBASE_COMPONENT_VERSION), + new AarInfo ("firebase-storage-common", "firebase/firebase-storage-common", FIREBASE_AAR_VERSION, FIREBASE_NUGET_VERSION, FIREBASE_COMPONENT_VERSION), }; +class AarInfo +{ + public AarInfo (string name, string path, string aarVersion, string nugetVersion, string componentVersion) + { + Name = name; + Path = path; + AarVersion = aarVersion; + NuGetVersion = nugetVersion; + ComponentVersion = componentVersion; + } + + public string Name { get; set; } + public string Path { get; set; } + public string AarVersion { get; set; } + public string NuGetVersion { get; set; } + public string ComponentVersion { get; set; } +} + var MONODROID_PATH = "/Library/Frameworks/Xamarin.Android.framework/Versions/Current/lib/mandroid/platforms/android-23/"; if (IsRunningOnWindows ()) MONODROID_PATH = new DirectoryPath (Environment.GetFolderPath (Environment.SpecialFolder.ProgramFilesX86)).Combine ("Reference Assemblies/Microsoft/Framework/MonoAndroid/v6.0/").FullPath; +var MONO_PATH = "/Library/Frameworks/Mono.framework/Versions/Current"; + var buildsOnWinMac = BuildPlatforms.Windows | BuildPlatforms.Mac; var buildSpec = new BuildSpec { @@ -42,20 +114,22 @@ var buildSpec = new BuildSpec { new OutputFileCopy { FromFile = "./base/source/bin/Release/Xamarin.GooglePlayServices.Base.dll" }, new OutputFileCopy { FromFile = "./basement/source/bin/Release/Xamarin.GooglePlayServices.Basement.dll" }, new OutputFileCopy { FromFile = "./ads/source/bin/Release/Xamarin.GooglePlayServices.Ads.dll" }, + new OutputFileCopy { FromFile = "./ads-lite/source/bin/Release/Xamarin.GooglePlayServices.Ads.Lite.dll" }, new OutputFileCopy { FromFile = "./analytics/source/bin/Release/Xamarin.GooglePlayServices.Analytics.dll" }, + new OutputFileCopy { FromFile = "./analytics-impl/source/bin/Release/Xamarin.GooglePlayServices.Analytics.Impl.dll" }, new OutputFileCopy { FromFile = "./appinvite/source/bin/Release/Xamarin.GooglePlayServices.AppInvite.dll" }, new OutputFileCopy { FromFile = "./appindexing/source/bin/Release/Xamarin.GooglePlayServices.AppIndexing.dll" }, - new OutputFileCopy { FromFile = "./appstate/source/bin/Release/Xamarin.GooglePlayServices.AppState.dll" }, new OutputFileCopy { FromFile = "./auth/source/bin/Release/Xamarin.GooglePlayServices.Auth.dll" }, + new OutputFileCopy { FromFile = "./auth-base/source/bin/Release/Xamarin.GooglePlayServices.Auth.Base.dll" }, new OutputFileCopy { FromFile = "./cast/source/bin/Release/Xamarin.GooglePlayServices.Cast.dll" }, new OutputFileCopy { FromFile = "./drive/source/bin/Release/Xamarin.GooglePlayServices.Drive.dll" }, new OutputFileCopy { FromFile = "./fitness/source/bin/Release/Xamarin.GooglePlayServices.Fitness.dll" }, new OutputFileCopy { FromFile = "./games/source/bin/Release/Xamarin.GooglePlayServices.Games.dll" }, new OutputFileCopy { FromFile = "./gcm/source/bin/Release/Xamarin.GooglePlayServices.Gcm.dll" }, new OutputFileCopy { FromFile = "./identity/source/bin/Release/Xamarin.GooglePlayServices.Identity.dll" }, + new OutputFileCopy { FromFile = "./iid/source/bin/Release/Xamarin.GooglePlayServices.Iid.dll" }, new OutputFileCopy { FromFile = "./location/source/bin/Release/Xamarin.GooglePlayServices.Location.dll" }, new OutputFileCopy { FromFile = "./maps/source/bin/Release/Xamarin.GooglePlayServices.Maps.dll" }, - new OutputFileCopy { FromFile = "./measurement/source/bin/Release/Xamarin.GooglePlayServices.Measurement.dll" }, new OutputFileCopy { FromFile = "./nearby/source/bin/Release/Xamarin.GooglePlayServices.Nearby.dll" }, new OutputFileCopy { FromFile = "./panorama/source/bin/Release/Xamarin.GooglePlayServices.Panorama.dll" }, new OutputFileCopy { FromFile = "./plus/source/bin/Release/Xamarin.GooglePlayServices.Plus.dll" }, @@ -64,6 +138,24 @@ var buildSpec = new BuildSpec { new OutputFileCopy { FromFile = "./wallet/source/bin/Release/Xamarin.GooglePlayServices.Wallet.dll" }, new OutputFileCopy { FromFile = "./wearable/source/bin/Release/Xamarin.GooglePlayServices.Wearable.dll" }, new OutputFileCopy { FromFile = "./support-wearable/source/bin/Release/Xamarin.Android.Wearable.dll" }, + new OutputFileCopy { FromFile = "./tagmanager/source/bin/Release/Xamarin.GooglePlayServices.TagManager.dll" }, + new OutputFileCopy { FromFile = "./tagmanager-api/source/bin/Release/Xamarin.GooglePlayServices.TagManager.Api.dll" }, + new OutputFileCopy { FromFile = "./tasks/source/bin/Release/Xamarin.GooglePlayServices.Tasks.dll" }, + + new OutputFileCopy { FromFile = "./firebase-analytics/source/bin/Release/Xamarin.Firebase.Analytics.dll" }, + new OutputFileCopy { FromFile = "./firebase-analytics-impl/source/bin/Release/Xamarin.Firebase.Analytics.Impl.dll" }, + new OutputFileCopy { FromFile = "./firebase-auth/source/bin/Release/Xamarin.Firebase.Auth.dll" }, + new OutputFileCopy { FromFile = "./firebase-auth-common/source/bin/Release/Xamarin.Firebase.Auth.Common.dll" }, + new OutputFileCopy { FromFile = "./firebase-auth-module/source/bin/Release/Xamarin.Firebase.Auth.Module.dll" }, + new OutputFileCopy { FromFile = "./firebase-common/source/bin/Release/Xamarin.Firebase.Common.dll" }, + new OutputFileCopy { FromFile = "./firebase-config/source/bin/Release/Xamarin.Firebase.Config.dll" }, + new OutputFileCopy { FromFile = "./firebase-crash/source/bin/Release/Xamarin.Firebase.Crash.dll" }, + new OutputFileCopy { FromFile = "./firebase-database/source/bin/Release/Xamarin.Firebase.Database.dll" }, + new OutputFileCopy { FromFile = "./firebase-database-connection/source/bin/Release/Xamarin.Firebase.Database.Connection.dll" }, + new OutputFileCopy { FromFile = "./firebase-iid/source/bin/Release/Xamarin.Firebase.Iid.dll" }, + new OutputFileCopy { FromFile = "./firebase-messaging/source/bin/Release/Xamarin.Firebase.Messaging.dll" }, + new OutputFileCopy { FromFile = "./firebase-storage/source/bin/Release/Xamarin.Firebase.Storage.dll" }, + new OutputFileCopy { FromFile = "./firebase-storage-common/source/bin/Release/Xamarin.Firebase.Storage.Common.dll" }, } }, }, @@ -92,31 +184,55 @@ var buildSpec = new BuildSpec { }, NuGets = new [] { - new NuGetInfo { NuSpec = "./base/nuget/Xamarin.GooglePlayServices.Base.nuspec", Version = NUGET_VERSION, RequireLicenseAcceptance = true }, - new NuGetInfo { NuSpec = "./basement/nuget/Xamarin.GooglePlayServices.Basement.nuspec", Version = NUGET_VERSION, RequireLicenseAcceptance = true }, - new NuGetInfo { NuSpec = "./ads/nuget/Xamarin.GooglePlayServices.Ads.nuspec", Version = NUGET_VERSION, RequireLicenseAcceptance = true }, - new NuGetInfo { NuSpec = "./analytics/nuget/Xamarin.GooglePlayServices.Analytics.nuspec", Version = NUGET_VERSION, RequireLicenseAcceptance = true }, - new NuGetInfo { NuSpec = "./appindexing/nuget/Xamarin.GooglePlayServices.AppIndexing.nuspec", Version = NUGET_VERSION, RequireLicenseAcceptance = true }, - new NuGetInfo { NuSpec = "./appinvite/nuget/Xamarin.GooglePlayServices.AppInvite.nuspec", Version = NUGET_VERSION, RequireLicenseAcceptance = true }, - new NuGetInfo { NuSpec = "./appstate/nuget/Xamarin.GooglePlayServices.AppState.nuspec", Version = NUGET_VERSION, RequireLicenseAcceptance = true }, - new NuGetInfo { NuSpec = "./auth/nuget/Xamarin.GooglePlayServices.Auth.nuspec", Version = NUGET_VERSION, RequireLicenseAcceptance = true }, - new NuGetInfo { NuSpec = "./cast/nuget/Xamarin.GooglePlayServices.Cast.nuspec", Version = NUGET_VERSION, RequireLicenseAcceptance = true }, - new NuGetInfo { NuSpec = "./drive/nuget/Xamarin.GooglePlayServices.Drive.nuspec", Version = NUGET_VERSION, RequireLicenseAcceptance = true }, - new NuGetInfo { NuSpec = "./fitness/nuget/Xamarin.GooglePlayServices.Fitness.nuspec", Version = NUGET_VERSION, RequireLicenseAcceptance = true }, - new NuGetInfo { NuSpec = "./games/nuget/Xamarin.GooglePlayServices.Games.nuspec", Version = NUGET_VERSION, RequireLicenseAcceptance = true }, - new NuGetInfo { NuSpec = "./gcm/nuget/Xamarin.GooglePlayServices.Gcm.nuspec", Version = NUGET_VERSION, RequireLicenseAcceptance = true }, - new NuGetInfo { NuSpec = "./identity/nuget/Xamarin.GooglePlayServices.Identity.nuspec", Version = NUGET_VERSION, RequireLicenseAcceptance = true }, - new NuGetInfo { NuSpec = "./location/nuget/Xamarin.GooglePlayServices.Location.nuspec", Version = NUGET_VERSION, RequireLicenseAcceptance = true }, - new NuGetInfo { NuSpec = "./maps/nuget/Xamarin.GooglePlayServices.Maps.nuspec", Version = NUGET_VERSION, RequireLicenseAcceptance = true }, - new NuGetInfo { NuSpec = "./measurement/nuget/Xamarin.GooglePlayServices.Measurement.nuspec", Version = NUGET_VERSION, RequireLicenseAcceptance = true }, - new NuGetInfo { NuSpec = "./nearby/nuget/Xamarin.GooglePlayServices.Nearby.nuspec", Version = NUGET_VERSION, RequireLicenseAcceptance = true }, - new NuGetInfo { NuSpec = "./panorama/nuget/Xamarin.GooglePlayServices.Panorama.nuspec", Version = NUGET_VERSION, RequireLicenseAcceptance = true }, - new NuGetInfo { NuSpec = "./plus/nuget/Xamarin.GooglePlayServices.Plus.nuspec", Version = NUGET_VERSION, RequireLicenseAcceptance = true }, - new NuGetInfo { NuSpec = "./safetynet/nuget/Xamarin.GooglePlayServices.SafetyNet.nuspec", Version = NUGET_VERSION, RequireLicenseAcceptance = true }, - new NuGetInfo { NuSpec = "./vision/nuget/Xamarin.GooglePlayServices.Vision.nuspec", Version = NUGET_VERSION, RequireLicenseAcceptance = true }, - new NuGetInfo { NuSpec = "./wallet/nuget/Xamarin.GooglePlayServices.Wallet.nuspec", Version = NUGET_VERSION, RequireLicenseAcceptance = true }, - new NuGetInfo { NuSpec = "./wearable/nuget/Xamarin.GooglePlayServices.Wearable.nuspec", Version = NUGET_VERSION, RequireLicenseAcceptance = true }, - new NuGetInfo { NuSpec = "./support-wearable/nuget/Xamarin.Android.Wear.nuspec", Version = NUGET_WEAR_VERSION, RequireLicenseAcceptance = true }, + new NuGetInfo { NuSpec = "./base/nuget/Xamarin.GooglePlayServices.Base.nuspec", Version = PLAY_NUGET_VERSION, RequireLicenseAcceptance = true }, + new NuGetInfo { NuSpec = "./basement/nuget/Xamarin.GooglePlayServices.Basement.nuspec", Version = PLAY_NUGET_VERSION, RequireLicenseAcceptance = true }, + new NuGetInfo { NuSpec = "./ads/nuget/Xamarin.GooglePlayServices.Ads.nuspec", Version = PLAY_NUGET_VERSION, RequireLicenseAcceptance = true }, + new NuGetInfo { NuSpec = "./ads-lite/nuget/Xamarin.GooglePlayServices.Ads.Lite.nuspec", Version = PLAY_NUGET_VERSION, RequireLicenseAcceptance = true }, + new NuGetInfo { NuSpec = "./analytics/nuget/Xamarin.GooglePlayServices.Analytics.nuspec", Version = PLAY_NUGET_VERSION, RequireLicenseAcceptance = true }, + new NuGetInfo { NuSpec = "./analytics-impl/nuget/Xamarin.GooglePlayServices.Analytics.Impl.nuspec", Version = PLAY_NUGET_VERSION, RequireLicenseAcceptance = true }, + new NuGetInfo { NuSpec = "./appindexing/nuget/Xamarin.GooglePlayServices.AppIndexing.nuspec", Version = PLAY_NUGET_VERSION, RequireLicenseAcceptance = true }, + new NuGetInfo { NuSpec = "./appinvite/nuget/Xamarin.GooglePlayServices.AppInvite.nuspec", Version = PLAY_NUGET_VERSION, RequireLicenseAcceptance = true }, + new NuGetInfo { NuSpec = "./auth/nuget/Xamarin.GooglePlayServices.Auth.nuspec", Version = PLAY_NUGET_VERSION, RequireLicenseAcceptance = true }, + new NuGetInfo { NuSpec = "./auth-base/nuget/Xamarin.GooglePlayServices.Auth.Base.nuspec", Version = PLAY_NUGET_VERSION, RequireLicenseAcceptance = true }, + new NuGetInfo { NuSpec = "./cast/nuget/Xamarin.GooglePlayServices.Cast.nuspec", Version = PLAY_NUGET_VERSION, RequireLicenseAcceptance = true }, + new NuGetInfo { NuSpec = "./drive/nuget/Xamarin.GooglePlayServices.Drive.nuspec", Version = PLAY_NUGET_VERSION, RequireLicenseAcceptance = true }, + new NuGetInfo { NuSpec = "./fitness/nuget/Xamarin.GooglePlayServices.Fitness.nuspec", Version = PLAY_NUGET_VERSION, RequireLicenseAcceptance = true }, + new NuGetInfo { NuSpec = "./games/nuget/Xamarin.GooglePlayServices.Games.nuspec", Version = PLAY_NUGET_VERSION, RequireLicenseAcceptance = true }, + new NuGetInfo { NuSpec = "./gcm/nuget/Xamarin.GooglePlayServices.Gcm.nuspec", Version = PLAY_NUGET_VERSION, RequireLicenseAcceptance = true }, + new NuGetInfo { NuSpec = "./identity/nuget/Xamarin.GooglePlayServices.Identity.nuspec", Version = PLAY_NUGET_VERSION, RequireLicenseAcceptance = true }, + new NuGetInfo { NuSpec = "./iid/nuget/Xamarin.GooglePlayServices.Iid.nuspec", Version = PLAY_NUGET_VERSION, RequireLicenseAcceptance = true }, + new NuGetInfo { NuSpec = "./location/nuget/Xamarin.GooglePlayServices.Location.nuspec", Version = PLAY_NUGET_VERSION, RequireLicenseAcceptance = true }, + new NuGetInfo { NuSpec = "./maps/nuget/Xamarin.GooglePlayServices.Maps.nuspec", Version = PLAY_NUGET_VERSION, RequireLicenseAcceptance = true }, + new NuGetInfo { NuSpec = "./nearby/nuget/Xamarin.GooglePlayServices.Nearby.nuspec", Version = PLAY_NUGET_VERSION, RequireLicenseAcceptance = true }, + new NuGetInfo { NuSpec = "./panorama/nuget/Xamarin.GooglePlayServices.Panorama.nuspec", Version = PLAY_NUGET_VERSION, RequireLicenseAcceptance = true }, + new NuGetInfo { NuSpec = "./plus/nuget/Xamarin.GooglePlayServices.Plus.nuspec", Version = PLAY_NUGET_VERSION, RequireLicenseAcceptance = true }, + new NuGetInfo { NuSpec = "./safetynet/nuget/Xamarin.GooglePlayServices.SafetyNet.nuspec", Version = PLAY_NUGET_VERSION, RequireLicenseAcceptance = true }, + new NuGetInfo { NuSpec = "./vision/nuget/Xamarin.GooglePlayServices.Vision.nuspec", Version = PLAY_NUGET_VERSION, RequireLicenseAcceptance = true }, + new NuGetInfo { NuSpec = "./wallet/nuget/Xamarin.GooglePlayServices.Wallet.nuspec", Version = PLAY_NUGET_VERSION, RequireLicenseAcceptance = true }, + new NuGetInfo { NuSpec = "./wearable/nuget/Xamarin.GooglePlayServices.Wearable.nuspec", Version = PLAY_NUGET_VERSION, RequireLicenseAcceptance = true }, + new NuGetInfo { NuSpec = "./support-wearable/nuget/Xamarin.Android.Wear.nuspec", Version = WEAR_NUGET_VERSION, RequireLicenseAcceptance = true }, + new NuGetInfo { NuSpec = "./tagmanager/nuget/Xamarin.GooglePlayServices.TagManager.nuspec", Version = PLAY_NUGET_VERSION, RequireLicenseAcceptance = true }, + new NuGetInfo { NuSpec = "./tagmanager-api/nuget/Xamarin.GooglePlayServices.TagManager.Api.nuspec", Version = PLAY_NUGET_VERSION, RequireLicenseAcceptance = true }, + new NuGetInfo { NuSpec = "./tasks/nuget/Xamarin.GooglePlayServices.Tasks.nuspec", Version = PLAY_NUGET_VERSION, RequireLicenseAcceptance = true }, + + new NuGetInfo { NuSpec = "./firebase-analytics/nuget/Xamarin.Firebase.Analytics.nuspec", Version = PLAY_NUGET_VERSION, RequireLicenseAcceptance = true }, + new NuGetInfo { NuSpec = "./firebase-analytics-impl/nuget/Xamarin.Firebase.Analytics.Impl.nuspec", Version = PLAY_NUGET_VERSION, RequireLicenseAcceptance = true }, + new NuGetInfo { NuSpec = "./firebase-auth/nuget/Xamarin.Firebase.Auth.nuspec", Version = PLAY_NUGET_VERSION, RequireLicenseAcceptance = true }, + new NuGetInfo { NuSpec = "./firebase-auth-common/nuget/Xamarin.Firebase.Auth.Common.nuspec", Version = PLAY_NUGET_VERSION, RequireLicenseAcceptance = true }, + new NuGetInfo { NuSpec = "./firebase-auth-module/nuget/Xamarin.Firebase.Auth.Module.nuspec", Version = PLAY_NUGET_VERSION, RequireLicenseAcceptance = true }, + new NuGetInfo { NuSpec = "./firebase-common/nuget/Xamarin.Firebase.Common.nuspec", Version = PLAY_NUGET_VERSION, RequireLicenseAcceptance = true }, + new NuGetInfo { NuSpec = "./firebase-config/nuget/Xamarin.Firebase.Config.nuspec", Version = PLAY_NUGET_VERSION, RequireLicenseAcceptance = true }, + new NuGetInfo { NuSpec = "./firebase-crash/nuget/Xamarin.Firebase.Crash.nuspec", Version = PLAY_NUGET_VERSION, RequireLicenseAcceptance = true }, + new NuGetInfo { NuSpec = "./firebase-database/nuget/Xamarin.Firebase.Database.nuspec", Version = PLAY_NUGET_VERSION, RequireLicenseAcceptance = true }, + new NuGetInfo { NuSpec = "./firebase-database-connection/nuget/Xamarin.Firebase.Database.Connection.nuspec", Version = PLAY_NUGET_VERSION, RequireLicenseAcceptance = true }, + new NuGetInfo { NuSpec = "./firebase-iid/nuget/Xamarin.Firebase.Iid.nuspec", Version = PLAY_NUGET_VERSION, RequireLicenseAcceptance = true }, + new NuGetInfo { NuSpec = "./firebase-messaging/nuget/Xamarin.Firebase.Messaging.nuspec", Version = PLAY_NUGET_VERSION, RequireLicenseAcceptance = true }, + new NuGetInfo { NuSpec = "./firebase-storage/nuget/Xamarin.Firebase.Storage.nuspec", Version = PLAY_NUGET_VERSION, RequireLicenseAcceptance = true }, + new NuGetInfo { NuSpec = "./firebase-storage-common/nuget/Xamarin.Firebase.Storage.Common.nuspec", Version = PLAY_NUGET_VERSION, RequireLicenseAcceptance = true }, + + // These are empty packages that depend on others + new NuGetInfo { NuSpec = "./firebase-core/nuget/Xamarin.Firebase.Core.nuspec", Version = PLAY_NUGET_VERSION, RequireLicenseAcceptance = true }, + new NuGetInfo { NuSpec = "./firebase-ads/nuget/Xamarin.Firebase.Ads.nuspec", Version = PLAY_NUGET_VERSION, RequireLicenseAcceptance = true }, }, Components = new [] { @@ -158,11 +274,12 @@ Task ("externals") Unzip (path + "m2repository.zip", path); // Copy the .aar's to a better location - foreach (var aar in AAR_DIRS) { + foreach (var aar in AAR_INFOS) { + CopyFile ( - string.Format (path + "m2repository/com/google/android/gms/{0}/{1}/{2}-{3}.aar", aar, AAR_VERSION, aar, AAR_VERSION), - string.Format (path + "{0}.aar", aar)); - Unzip (path + aar + ".aar", path + aar); + string.Format (path + "m2repository/com/google/{0}/{1}/{2}-{3}.aar", aar.Path, aar.AarVersion, aar.Name, aar.AarVersion), + string.Format (path + "{0}.aar", aar.Name)); + Unzip (path + aar.Name + ".aar", path + aar.Name); } // Get Wearable stuff @@ -180,6 +297,37 @@ Task ("externals") } }); +Task ("diff") + .WithCriteria (!IsRunningOnWindows ()) + .Does (() => +{ + var SEARCH_DIRS = new FilePath [] { + MONODROID_PATH, + "/Library/Frameworks/Xamarin.Android.framework/Versions/Current/lib/xbuild-frameworks/MonoAndroid/v1.0/", + "./cast/source/bin/Release/", + "./wearable/source/bin/Release/" + }; + + MonoApiInfo ("./output/GooglePlayServices.Merged.dll", + "./output/GooglePlayServices.api-info.xml", + new MonoApiInfoToolSettings { SearchPaths = SEARCH_DIRS }); + + // Grab the latest published api info from S3 + var latestReleasedApiInfoUrl = "http://xamarin-components-apiinfo.s3.amazonaws.com/GooglePlayServices.Android-Latest.xml"; + DownloadFile (latestReleasedApiInfoUrl, "./output/GooglePlayServices.api-info.previous.xml"); + + // Now diff against current release'd api info + // eg: mono mono-api-diff.exe ./gps.r26.xml ./gps.r27.xml > gps.diff.xml + MonoApiDiff ("./output/GooglePlayServices.api-info.previous.xml", + "./output/GooglePlayServices.api-info.xml", + "./output/GooglePlayServices.api-diff.xml"); + + // Now let's make a purty html file + // eg: mono mono-api-html.exe -c -x ./gps.previous.info.xml ./gps.current.info.xml > gps.diff.html + MonoApiHtml ("./output/GooglePlayServices.api-info.previous.xml", + "./output/GooglePlayServices.api-info.xml", + "./output/GooglePlayServices.api-diff.html"); +}); Task ("merge").IsDependentOn ("libs").Does (() => { @@ -188,7 +336,6 @@ Task ("merge").IsDependentOn ("libs").Does (() => var mergeDlls = GetFiles ("./output/*.dll"); - // Wait for ILRepack support in cake-0.5.2 ILRepack ("./output/GooglePlayServices.Merged.dll", mergeDlls.First(), mergeDlls.Skip(1), new ILRepackSettings { CopyAttrs = true, AllowMultiple = true, @@ -197,47 +344,6 @@ Task ("merge").IsDependentOn ("libs").Does (() => MONODROID_PATH }, }); - - // Don't want to think about what the paths will do to this on windows right now - if (!IsRunningOnWindows ()) { - // Next run the mono-api-info.exe to generate xml api info we can later diff with - var monoApiInfoExe = GetFiles ("../../**/mono-api-info.exe").FirstOrDefault (); - var monoApiDiffExe = GetFiles ("../../**/mono-api-diff.exe").FirstOrDefault (); - var monoApiHtmlExe = GetFiles ("../../**/mono-api-html.exe").FirstOrDefault (); - - //eg: mono mono-api-info.exe --search-directory=/Library/Frameworks/Xamarin.Android.framework/Libraries/mandroid/platforms/android-23 ./Xamarin.GooglePlayServices.r27.dll > gps.r27.xml - using(var process = StartAndReturnProcess (monoApiInfoExe, new ProcessSettings { - Arguments = "--search-directory=" + MONODROID_PATH + " ./output/GooglePlayServices.Merged.dll", - RedirectStandardOutput = true, - })) { - process.WaitForExit(); - FileWriteLines ("./output/GooglePlayServices.api-info.xml", process.GetStandardOutput ().ToArray ()); - } - - // Grab the latest published api info from S3 - var latestReleasedApiInfoUrl = "http://xamarin-components-apiinfo.s3.amazonaws.com/GooglePlayServices.Android-Latest.xml"; - DownloadFile (latestReleasedApiInfoUrl, "./output/GooglePlayServices.api-info.previous.xml"); - - // Now diff against current release'd api info - // eg: mono mono-api-diff.exe ./gps.r26.xml ./gps.r27.xml > gps.diff.xml - using(var process = StartAndReturnProcess (monoApiDiffExe, new ProcessSettings { - Arguments = "./output/GooglePlayServices.api-info.previous.xml ./output/GooglePlayServices.api-info.xml", - RedirectStandardOutput = true, - })) { - process.WaitForExit(); - FileWriteLines ("./output/GooglePlayServices.api-diff.xml", process.GetStandardOutput ().ToArray ()); - } - - // Now let's make a purty html file - // eg: mono mono-api-html.exe -c -x ./gps.previous.info.xml ./gps.current.info.xml > gps.diff.html - using(var process = StartAndReturnProcess (monoApiHtmlExe, new ProcessSettings { - Arguments = "-c -x ./output/GooglePlayServices.api-info.previous.xml ./output/GooglePlayServices.api-info.xml", - RedirectStandardOutput = true, - })) { - process.WaitForExit(); - FileWriteLines ("./output/GooglePlayServices.api-diff.html", process.GetStandardOutput ().ToArray ()); - } - } }); @@ -318,15 +424,26 @@ Task ("component-setup").Does (() => { var yamls = GetFiles ("./**/component/component.template.yaml"); foreach (var yaml in yamls) { + var NUGET_VERSION = PLAY_NUGET_VERSION; + var COMPONENT_VERSION = PLAY_COMPONENT_VERSION; + + if (yaml.FullPath.Contains ("firebase-")) { + NUGET_VERSION = FIREBASE_NUGET_VERSION; + COMPONENT_VERSION = FIREBASE_COMPONENT_VERSION; + } + var manifestTxt = FileReadText (yaml) .Replace ("$nuget-version$", NUGET_VERSION) .Replace ("$version$", COMPONENT_VERSION) - .Replace ("$wear-version$", COMPONENT_WEAR_VERSION) - .Replace ("$wear-nuget-version$", NUGET_WEAR_VERSION); + .Replace ("$wear-version$", WEAR_COMPONENT_VERSION) + .Replace ("$wear-nuget-version$", WEAR_NUGET_VERSION); var newYaml = yaml.GetDirectory ().CombineWithFilePath ("component.yaml"); FileWriteText (newYaml, manifestTxt); - } + } + + if (DirectoryExists ("./output")) + DeleteFiles ("./output/*.xam"); }); Task ("component").IsDependentOn ("component-docs").IsDependentOn ("component-setup").IsDependentOn ("component-base"); From 70c9fa52d76755678a9be774b67724c190f88d33 Mon Sep 17 00:00:00 2001 From: Redth Date: Wed, 1 Jun 2016 13:06:34 -0400 Subject: [PATCH 002/178] Added play-services-tasks binding --- .../Xamarin.GooglePlayServices.Tasks.nuspec | 26 ++++++ tasks/source/Additions/AboutAdditions.txt | 48 +++++++++++ tasks/source/Additions/Task.cs | 55 +++++++++++++ tasks/source/Jars/AboutJars.txt | 37 +++++++++ tasks/source/Properties/AssemblyInfo.cs | 48 +++++++++++ tasks/source/Tasks.csproj | 82 +++++++++++++++++++ tasks/source/Transforms/EnumFields.xml | 18 ++++ tasks/source/Transforms/EnumMethods.xml | 18 ++++ .../source/Transforms/Metadata.generated.xml | 2 + tasks/source/Transforms/Metadata.xml | 14 ++++ tasks/source/packages.config | 4 + 11 files changed, 352 insertions(+) create mode 100644 tasks/nuget/Xamarin.GooglePlayServices.Tasks.nuspec create mode 100644 tasks/source/Additions/AboutAdditions.txt create mode 100644 tasks/source/Additions/Task.cs create mode 100644 tasks/source/Jars/AboutJars.txt create mode 100644 tasks/source/Properties/AssemblyInfo.cs create mode 100644 tasks/source/Tasks.csproj create mode 100644 tasks/source/Transforms/EnumFields.xml create mode 100644 tasks/source/Transforms/EnumMethods.xml create mode 100644 tasks/source/Transforms/Metadata.generated.xml create mode 100644 tasks/source/Transforms/Metadata.xml create mode 100644 tasks/source/packages.config diff --git a/tasks/nuget/Xamarin.GooglePlayServices.Tasks.nuspec b/tasks/nuget/Xamarin.GooglePlayServices.Tasks.nuspec new file mode 100644 index 000000000..046b80d5a --- /dev/null +++ b/tasks/nuget/Xamarin.GooglePlayServices.Tasks.nuspec @@ -0,0 +1,26 @@ + + + + Xamarin.GooglePlayServices.Tasks + Xamarin Google Play Services - Tasks + $version$ + Xamarin Inc. + Xamarin Inc. + true + Xamarin.Android Bindings for Google Play Services - Tasks + + Xamarin.Android Bindings for Google Play Services - Tasks + + Copyright 2013-2016 + https://github.com/xamarin/GooglePlayServicesComponents/ + https://github.com/xamarin/GooglePlayServicesComponents/blob/master/LICENSE.md + https://xamarin-component-icons.s3.amazonaws.com/Xamarin.GooglePlayServices.Tasks.png + + + + + + + + + diff --git a/tasks/source/Additions/AboutAdditions.txt b/tasks/source/Additions/AboutAdditions.txt new file mode 100644 index 000000000..c511f1d4e --- /dev/null +++ b/tasks/source/Additions/AboutAdditions.txt @@ -0,0 +1,48 @@ +Additions allow you to add arbitrary C# to the generated classes +before they are compiled. This can be helpful for providing convenience +methods or adding pure C# classes. + +== Adding Methods to Generated Classes == + +Let's say the library being bound has a Rectangle class with a constructor +that takes an x and y position, and a width and length size. It will look like +this: + +public partial class Rectangle +{ + public Rectangle (int x, int y, int width, int height) + { + // JNI bindings + } +} + +Imagine we want to add a constructor to this class that takes a Point and +Size structure instead of 4 ints. We can add a new file called Rectangle.cs +with a partial class containing our new method: + +public partial class Rectangle +{ + public Rectangle (Point location, Size size) : + this (location.X, location.Y, size.Width, size.Height) + { + } +} + +At compile time, the additions class will be added to the generated class +and the final assembly will a Rectangle class with both constructors. + + +== Adding C# Classes == + +Another thing that can be done is adding fully C# managed classes to the +generated library. In the above example, let's assume that there isn't a +Point class available in Java or our library. The one we create doesn't need +to interact with Java, so we'll create it like a normal class in C#. + +By adding a Point.cs file with this class, it will end up in the binding library: + +public class Point +{ + public int X { get; set; } + public int Y { get; set; } +} diff --git a/tasks/source/Additions/Task.cs b/tasks/source/Additions/Task.cs new file mode 100644 index 000000000..b931faefe --- /dev/null +++ b/tasks/source/Additions/Task.cs @@ -0,0 +1,55 @@ +using System; +using Android.Runtime; + +namespace Android.Gms.Tasks +{ + public abstract partial class Task : Task where TResult : Java.Lang.Object + { + public TResult Result { get { return this.RawResult.JavaCast(); } } + + System.Threading.Tasks.TaskCompletionSource tcs; + InternalTaskCompletionListener completeListener; + + public Task () : base () + { + init(); + } + + protected Task (IntPtr javaReference, JniHandleOwnership transfer) : base (javaReference, transfer) + { + init(); + } + + void init () + { + tcs = new System.Threading.Tasks.TaskCompletionSource (); + + completeListener = new InternalTaskCompletionListener + { + OnCompleteHandler = completedTask => { + if (this.IsSuccessful) + tcs.SetResult(this.Result); + else + tcs.SetException(this.Exception); + } + }; + this.AddOnCompleteListener(completeListener); + } + + public System.Runtime.CompilerServices.TaskAwaiter GetAwaiter () + { + return tcs.Task.GetAwaiter (); + } + } + + internal class InternalTaskCompletionListener : Java.Lang.Object, IOnCompleteListener + { + public Action OnCompleteHandler { get; set; } + + public void OnComplete (Task task) + { + if (OnCompleteHandler != null) + OnCompleteHandler (task); + } + } +} diff --git a/tasks/source/Jars/AboutJars.txt b/tasks/source/Jars/AboutJars.txt new file mode 100644 index 000000000..320a154be --- /dev/null +++ b/tasks/source/Jars/AboutJars.txt @@ -0,0 +1,37 @@ +This directory is for Android .jars. + +There are 4 types of jars that are supported: + +== Input Jar and Embedded Jar == + +This is the jar that bindings should be generated for. + +For example, if you were binding the Google Maps library, this would +be Google's "maps.jar". + +The difference between EmbeddedJar and InputJar is, EmbeddedJar is to be +embedded in the resulting dll as EmbeddedResource, while InputJar is not. +There are couple of reasons you wouldn't like to embed the target jar +in your dll (the ones that could be internally loaded by +feature e.g. maps.jar, or you cannot embed jars that are under some +proprietary license). + +Set the build action for these jars in the properties page to "InputJar". + + +== Reference Jar and Embedded Reference Jar == + +These are jars that are referenced by the input jar. C# bindings will +not be created for these jars. These jars will be used to resolve +types used by the input jar. + +NOTE: Do not add "android.jar" as a reference jar. It will be added automatically +based on the Target Framework selected. + +Set the build action for these jars in the properties page to "ReferenceJar". + +"EmbeddedJar" works like "ReferenceJar", but like "EmbeddedJar", it is +embedded in your dll. But at application build time, they are not included +in the final apk, like ReferenceJar files. + + diff --git a/tasks/source/Properties/AssemblyInfo.cs b/tasks/source/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..f5ac5e9cb --- /dev/null +++ b/tasks/source/Properties/AssemblyInfo.cs @@ -0,0 +1,48 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using Android.App; + +// Information about this assembly is defined by the following attributes. +// Change them to the values specific to your project. + +[assembly: AssemblyTitle ("Xamarin.GooglePlayServices.Tasks")] +[assembly: AssemblyDescription ("")] +[assembly: AssemblyConfiguration ("")] +[assembly: AssemblyCompany ("Xamarin")] +[assembly: AssemblyProduct ("")] +[assembly: AssemblyCopyright ("Xamarin")] +[assembly: AssemblyTrademark ("")] +[assembly: AssemblyCulture ("")] + +// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}". +// The form "{Major}.{Minor}.*" will automatically update the build and revision, +// and "{Major}.{Minor}.{Build}.*" will update just the revision. + +[assembly: AssemblyVersion ("1.0.0")] + +// The following attributes are used to specify the signing key for the assembly, +// if desired. See the Mono documentation for more information about signing. + +//[assembly: AssemblyDelaySign(false)] +//[assembly: AssemblyKeyFile("")] + +[assembly: Java.Interop.JavaLibraryReference ("classes.jar", + PackageName = __Consts.PackageName, + SourceUrl = __GpsConsts.Url, + EmbeddedArchive = __Consts.AarPath, + Version = __GpsConsts.Version)] +// AppCompat-v7 resources +[assembly: Android.IncludeAndroidResourcesFromAttribute ("./", + PackageName = __Consts.PackageName, + SourceUrl = __GpsConsts.Url, + EmbeddedArchive = __Consts.AarPath, + Version = __GpsConsts.Version)] + +// Google Addon feed with GPS in it: +// https://dl-ssl.google.com/android/repository/addon.xml + +static class __Consts { + public const string PackageName = "GPS Tasks"; + public const string AarPath = "m2repository/com/google/android/gms/play-services-tasks/" + __GpsConsts.Version + "/play-services-tasks-" + __GpsConsts.Version + ".aar"; +} + \ No newline at end of file diff --git a/tasks/source/Tasks.csproj b/tasks/source/Tasks.csproj new file mode 100644 index 000000000..34469dde2 --- /dev/null +++ b/tasks/source/Tasks.csproj @@ -0,0 +1,82 @@ + + + + Debug + AnyCPU + {EFBA0AD7-5A72-4C68-AF49-83D382785DCF};{10368E6C-D01B-4462-8E8B-01FC667A7035};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + {53F87D88-8871-41A2-9F81-B79AB02FEC24} + Library + GooglePlayServices.Base + Resources + Assets + False + Xamarin.GooglePlayServices.Tasks + v4.1 + -XX:-UseSplitVerifier + ..\..\externals\docs\reference + + 8.0.30703 + 2.0 + + + true + full + false + bin\Debug + DEBUG; + prompt + 4 + None + false + + + full + true + bin\Release + prompt + 4 + false + false + + + + + + + + ..\..\packages\Xamarin.Android.Support.v4.23.1.1.1\lib\MonoAndroid403\Xamarin.Android.Support.v4.dll + + + + + + Properties\GpsConsts.cs + + + + + + + + + + + + + + + + + {6A38FACF-F0C5-4A49-8A8A-7CE6634207CE} + Basement + + + + + + Jars\play-services-tasks.jar + + + diff --git a/tasks/source/Transforms/EnumFields.xml b/tasks/source/Transforms/EnumFields.xml new file mode 100644 index 000000000..e9af0eeb3 --- /dev/null +++ b/tasks/source/Transforms/EnumFields.xml @@ -0,0 +1,18 @@ + + + diff --git a/tasks/source/Transforms/EnumMethods.xml b/tasks/source/Transforms/EnumMethods.xml new file mode 100644 index 000000000..2efa81467 --- /dev/null +++ b/tasks/source/Transforms/EnumMethods.xml @@ -0,0 +1,18 @@ + + + diff --git a/tasks/source/Transforms/Metadata.generated.xml b/tasks/source/Transforms/Metadata.generated.xml new file mode 100644 index 000000000..26c2f6238 --- /dev/null +++ b/tasks/source/Transforms/Metadata.generated.xml @@ -0,0 +1,2 @@ + + diff --git a/tasks/source/Transforms/Metadata.xml b/tasks/source/Transforms/Metadata.xml new file mode 100644 index 000000000..3965f826c --- /dev/null +++ b/tasks/source/Transforms/Metadata.xml @@ -0,0 +1,14 @@ + + + + Android.Gms.Tasks + + TasksClass + + + + + + + + diff --git a/tasks/source/packages.config b/tasks/source/packages.config new file mode 100644 index 000000000..59cde6e53 --- /dev/null +++ b/tasks/source/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file From f2b3bd6014c46990d262dfa2ec0bb76a5a2f0865 Mon Sep 17 00:00:00 2001 From: Redth Date: Wed, 1 Jun 2016 13:22:50 -0400 Subject: [PATCH 003/178] Added firebase-common bindings Almost everything depends on this library at some level now. --- .../nuget/Xamarin.Firebase.Common.nuspec | 26 ++++++ .../source/Additions/AboutAdditions.txt | 48 +++++++++++ firebase-common/source/Additions/Manifest.cs | 19 ++++ firebase-common/source/Firebase-Common.csproj | 86 +++++++++++++++++++ firebase-common/source/Jars/AboutJars.txt | 37 ++++++++ .../source/Properties/AssemblyInfo.cs | 48 +++++++++++ .../source/Transforms/EnumFields.xml | 18 ++++ .../source/Transforms/EnumMethods.xml | 18 ++++ .../source/Transforms/Metadata.generated.xml | 2 + .../source/Transforms/Metadata.xml | 14 +++ firebase-common/source/packages.config | 4 + 11 files changed, 320 insertions(+) create mode 100644 firebase-common/nuget/Xamarin.Firebase.Common.nuspec create mode 100644 firebase-common/source/Additions/AboutAdditions.txt create mode 100644 firebase-common/source/Additions/Manifest.cs create mode 100644 firebase-common/source/Firebase-Common.csproj create mode 100644 firebase-common/source/Jars/AboutJars.txt create mode 100644 firebase-common/source/Properties/AssemblyInfo.cs create mode 100644 firebase-common/source/Transforms/EnumFields.xml create mode 100644 firebase-common/source/Transforms/EnumMethods.xml create mode 100644 firebase-common/source/Transforms/Metadata.generated.xml create mode 100644 firebase-common/source/Transforms/Metadata.xml create mode 100644 firebase-common/source/packages.config diff --git a/firebase-common/nuget/Xamarin.Firebase.Common.nuspec b/firebase-common/nuget/Xamarin.Firebase.Common.nuspec new file mode 100644 index 000000000..2d28f7b7e --- /dev/null +++ b/firebase-common/nuget/Xamarin.Firebase.Common.nuspec @@ -0,0 +1,26 @@ + + + + Xamarin.Firebase.Common + Xamarin Firebase - Common + $version$ + Xamarin Inc. + Xamarin Inc. + true + Xamarin.Android Bindings for Firebase - Common - do not install directly + + Xamarin.Android Bindings for Firebase - Common - You should not install this package directly + + Copyright 2013-2016 + https://github.com/xamarin/GooglePlayServicesComponents/ + https://github.com/xamarin/GooglePlayServicesComponents/blob/master/LICENSE.md + https://xamarin-component-icons.s3.amazonaws.com/Xamarin.Firebase.Common.png + + + + + + + + + diff --git a/firebase-common/source/Additions/AboutAdditions.txt b/firebase-common/source/Additions/AboutAdditions.txt new file mode 100644 index 000000000..c511f1d4e --- /dev/null +++ b/firebase-common/source/Additions/AboutAdditions.txt @@ -0,0 +1,48 @@ +Additions allow you to add arbitrary C# to the generated classes +before they are compiled. This can be helpful for providing convenience +methods or adding pure C# classes. + +== Adding Methods to Generated Classes == + +Let's say the library being bound has a Rectangle class with a constructor +that takes an x and y position, and a width and length size. It will look like +this: + +public partial class Rectangle +{ + public Rectangle (int x, int y, int width, int height) + { + // JNI bindings + } +} + +Imagine we want to add a constructor to this class that takes a Point and +Size structure instead of 4 ints. We can add a new file called Rectangle.cs +with a partial class containing our new method: + +public partial class Rectangle +{ + public Rectangle (Point location, Size size) : + this (location.X, location.Y, size.Width, size.Height) + { + } +} + +At compile time, the additions class will be added to the generated class +and the final assembly will a Rectangle class with both constructors. + + +== Adding C# Classes == + +Another thing that can be done is adding fully C# managed classes to the +generated library. In the above example, let's assume that there isn't a +Point class available in Java or our library. The one we create doesn't need +to interact with Java, so we'll create it like a normal class in C#. + +By adding a Point.cs file with this class, it will end up in the binding library: + +public class Point +{ + public int X { get; set; } + public int Y { get; set; } +} diff --git a/firebase-common/source/Additions/Manifest.cs b/firebase-common/source/Additions/Manifest.cs new file mode 100644 index 000000000..fb8fa0dfa --- /dev/null +++ b/firebase-common/source/Additions/Manifest.cs @@ -0,0 +1,19 @@ +using System; +using Android.Content; + +namespace Firebase.Provider +{ + // + [ContentProvider (new [] { "${applicationId}.firebaseinitprovider" }, + Name="com.google.firebase.provider.FirebaseInitProvider", + Exported=true, + InitOrder=100)] + public partial class FirebaseInitProvider + { + } +} + diff --git a/firebase-common/source/Firebase-Common.csproj b/firebase-common/source/Firebase-Common.csproj new file mode 100644 index 000000000..e9bc0bfcb --- /dev/null +++ b/firebase-common/source/Firebase-Common.csproj @@ -0,0 +1,86 @@ + + + + Debug + AnyCPU + {EFBA0AD7-5A72-4C68-AF49-83D382785DCF};{10368E6C-D01B-4462-8E8B-01FC667A7035};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + {865652D3-8D1A-4779-92FC-4C54719286B7} + Library + GooglePlayServices.Base + Resources + Assets + False + Xamarin.Firebase.Common + v4.1 + -XX:-UseSplitVerifier + ..\..\externals\docs\reference + + 8.0.30703 + 2.0 + + + true + full + false + bin\Debug + DEBUG; + prompt + 4 + None + false + + + full + true + bin\Release + prompt + 4 + false + false + + + + + + + + ..\..\packages\Xamarin.Android.Support.v4.23.1.1.1\lib\MonoAndroid403\Xamarin.Android.Support.v4.dll + + + + + + Properties\GpsConsts.cs + + + + + + + + + + + + + + + + + {6A38FACF-F0C5-4A49-8A8A-7CE6634207CE} + Basement + + + {53F87D88-8871-41A2-9F81-B79AB02FEC24} + Tasks + + + + + + Jars\firebase-common.jar + + + diff --git a/firebase-common/source/Jars/AboutJars.txt b/firebase-common/source/Jars/AboutJars.txt new file mode 100644 index 000000000..320a154be --- /dev/null +++ b/firebase-common/source/Jars/AboutJars.txt @@ -0,0 +1,37 @@ +This directory is for Android .jars. + +There are 4 types of jars that are supported: + +== Input Jar and Embedded Jar == + +This is the jar that bindings should be generated for. + +For example, if you were binding the Google Maps library, this would +be Google's "maps.jar". + +The difference between EmbeddedJar and InputJar is, EmbeddedJar is to be +embedded in the resulting dll as EmbeddedResource, while InputJar is not. +There are couple of reasons you wouldn't like to embed the target jar +in your dll (the ones that could be internally loaded by +feature e.g. maps.jar, or you cannot embed jars that are under some +proprietary license). + +Set the build action for these jars in the properties page to "InputJar". + + +== Reference Jar and Embedded Reference Jar == + +These are jars that are referenced by the input jar. C# bindings will +not be created for these jars. These jars will be used to resolve +types used by the input jar. + +NOTE: Do not add "android.jar" as a reference jar. It will be added automatically +based on the Target Framework selected. + +Set the build action for these jars in the properties page to "ReferenceJar". + +"EmbeddedJar" works like "ReferenceJar", but like "EmbeddedJar", it is +embedded in your dll. But at application build time, they are not included +in the final apk, like ReferenceJar files. + + diff --git a/firebase-common/source/Properties/AssemblyInfo.cs b/firebase-common/source/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..273a026cb --- /dev/null +++ b/firebase-common/source/Properties/AssemblyInfo.cs @@ -0,0 +1,48 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using Android.App; + +// Information about this assembly is defined by the following attributes. +// Change them to the values specific to your project. + +[assembly: AssemblyTitle ("Xamarin.Firebase.Common")] +[assembly: AssemblyDescription ("")] +[assembly: AssemblyConfiguration ("")] +[assembly: AssemblyCompany ("Xamarin")] +[assembly: AssemblyProduct ("")] +[assembly: AssemblyCopyright ("Xamarin")] +[assembly: AssemblyTrademark ("")] +[assembly: AssemblyCulture ("")] + +// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}". +// The form "{Major}.{Minor}.*" will automatically update the build and revision, +// and "{Major}.{Minor}.{Build}.*" will update just the revision. + +[assembly: AssemblyVersion ("1.0.0")] + +// The following attributes are used to specify the signing key for the assembly, +// if desired. See the Mono documentation for more information about signing. + +//[assembly: AssemblyDelaySign(false)] +//[assembly: AssemblyKeyFile("")] + +[assembly: Java.Interop.JavaLibraryReference ("classes.jar", + PackageName = __Consts.PackageName, + SourceUrl = __FbConsts.Url, + EmbeddedArchive = __Consts.AarPath, + Version = __FbConsts.Version)] +// AppCompat-v7 resources +[assembly: Android.IncludeAndroidResourcesFromAttribute ("./", + PackageName = __Consts.PackageName, + SourceUrl = __FbConsts.Url, + EmbeddedArchive = __Consts.AarPath, + Version = __FbConsts.Version)] + +// Google Addon feed with GPS in it: +// https://dl-ssl.google.com/android/repository/addon.xml + +static class __Consts { + public const string PackageName = "Firebase Common"; + public const string AarPath = "m2repository/com/google/firebase/firebase-common/" + __FbConsts.Version + "/firebase-common-" + __FbConsts.Version + ".aar"; +} + \ No newline at end of file diff --git a/firebase-common/source/Transforms/EnumFields.xml b/firebase-common/source/Transforms/EnumFields.xml new file mode 100644 index 000000000..e9af0eeb3 --- /dev/null +++ b/firebase-common/source/Transforms/EnumFields.xml @@ -0,0 +1,18 @@ + + + diff --git a/firebase-common/source/Transforms/EnumMethods.xml b/firebase-common/source/Transforms/EnumMethods.xml new file mode 100644 index 000000000..2efa81467 --- /dev/null +++ b/firebase-common/source/Transforms/EnumMethods.xml @@ -0,0 +1,18 @@ + + + diff --git a/firebase-common/source/Transforms/Metadata.generated.xml b/firebase-common/source/Transforms/Metadata.generated.xml new file mode 100644 index 000000000..26c2f6238 --- /dev/null +++ b/firebase-common/source/Transforms/Metadata.generated.xml @@ -0,0 +1,2 @@ + + diff --git a/firebase-common/source/Transforms/Metadata.xml b/firebase-common/source/Transforms/Metadata.xml new file mode 100644 index 000000000..f4cc27178 --- /dev/null +++ b/firebase-common/source/Transforms/Metadata.xml @@ -0,0 +1,14 @@ + + + + Firebase + Firebase.Auth + Firebase.Provider + + + + + + + + diff --git a/firebase-common/source/packages.config b/firebase-common/source/packages.config new file mode 100644 index 000000000..59cde6e53 --- /dev/null +++ b/firebase-common/source/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file From d54c7c71ac0e6686a0033e21927f0ea7055595d2 Mon Sep 17 00:00:00 2001 From: Redth Date: Wed, 1 Jun 2016 13:23:16 -0400 Subject: [PATCH 004/178] Added firebase-analytics and firebase-analytics-impl bindings --- .../Xamarin.Firebase.Analytics.Impl.nuspec | 26 ++++++ .../source/Additions/AboutAdditions.txt | 48 +++++++++++ .../source/Firebase-Analytics-Impl.csproj | 86 +++++++++++++++++++ .../source/Jars/AboutJars.txt | 37 ++++++++ .../source/Properties/AssemblyInfo.cs | 48 +++++++++++ .../source/Transforms/EnumFields.xml | 18 ++++ .../source/Transforms/EnumMethods.xml | 18 ++++ .../source/Transforms/Metadata.generated.xml | 2 + .../source/Transforms/Metadata.xml | 16 ++++ .../nuget/Xamarin.Firebase.Analytics.nuspec | 26 ++++++ .../source/Additions/AboutAdditions.txt | 48 +++++++++++ .../source/Additions/Manifest.cs | 32 +++++++ .../source/Firebase-Analytics.csproj | 83 ++++++++++++++++++ firebase-analytics/source/Jars/AboutJars.txt | 37 ++++++++ .../source/Properties/AssemblyInfo.cs | 48 +++++++++++ .../source/Transforms/EnumFields.xml | 18 ++++ .../source/Transforms/EnumMethods.xml | 18 ++++ .../source/Transforms/Metadata.generated.xml | 2 + .../source/Transforms/Metadata.xml | 12 +++ 19 files changed, 623 insertions(+) create mode 100644 firebase-analytics-impl/nuget/Xamarin.Firebase.Analytics.Impl.nuspec create mode 100644 firebase-analytics-impl/source/Additions/AboutAdditions.txt create mode 100644 firebase-analytics-impl/source/Firebase-Analytics-Impl.csproj create mode 100644 firebase-analytics-impl/source/Jars/AboutJars.txt create mode 100644 firebase-analytics-impl/source/Properties/AssemblyInfo.cs create mode 100644 firebase-analytics-impl/source/Transforms/EnumFields.xml create mode 100644 firebase-analytics-impl/source/Transforms/EnumMethods.xml create mode 100644 firebase-analytics-impl/source/Transforms/Metadata.generated.xml create mode 100644 firebase-analytics-impl/source/Transforms/Metadata.xml create mode 100644 firebase-analytics/nuget/Xamarin.Firebase.Analytics.nuspec create mode 100644 firebase-analytics/source/Additions/AboutAdditions.txt create mode 100644 firebase-analytics/source/Additions/Manifest.cs create mode 100644 firebase-analytics/source/Firebase-Analytics.csproj create mode 100644 firebase-analytics/source/Jars/AboutJars.txt create mode 100644 firebase-analytics/source/Properties/AssemblyInfo.cs create mode 100644 firebase-analytics/source/Transforms/EnumFields.xml create mode 100644 firebase-analytics/source/Transforms/EnumMethods.xml create mode 100644 firebase-analytics/source/Transforms/Metadata.generated.xml create mode 100644 firebase-analytics/source/Transforms/Metadata.xml diff --git a/firebase-analytics-impl/nuget/Xamarin.Firebase.Analytics.Impl.nuspec b/firebase-analytics-impl/nuget/Xamarin.Firebase.Analytics.Impl.nuspec new file mode 100644 index 000000000..db47a8b61 --- /dev/null +++ b/firebase-analytics-impl/nuget/Xamarin.Firebase.Analytics.Impl.nuspec @@ -0,0 +1,26 @@ + + + + Xamarin.Firebase.Analytics.Impl + Xamarin Firebase - Analytics Impl + $version$ + Xamarin Inc. + Xamarin Inc. + true + Xamarin.Android Bindings for Firebase - Analytics Impl + + Xamarin.Android Bindings for Firebase - Analytics Impl + + Copyright 2013-2016 + https://github.com/xamarin/GooglePlayServicesComponents/ + https://github.com/xamarin/GooglePlayServicesComponents/blob/master/LICENSE.md + https://xamarin-component-icons.s3.amazonaws.com/Xamarin.Firebase.Analytics.Impl.png + + + + + + + + + diff --git a/firebase-analytics-impl/source/Additions/AboutAdditions.txt b/firebase-analytics-impl/source/Additions/AboutAdditions.txt new file mode 100644 index 000000000..c511f1d4e --- /dev/null +++ b/firebase-analytics-impl/source/Additions/AboutAdditions.txt @@ -0,0 +1,48 @@ +Additions allow you to add arbitrary C# to the generated classes +before they are compiled. This can be helpful for providing convenience +methods or adding pure C# classes. + +== Adding Methods to Generated Classes == + +Let's say the library being bound has a Rectangle class with a constructor +that takes an x and y position, and a width and length size. It will look like +this: + +public partial class Rectangle +{ + public Rectangle (int x, int y, int width, int height) + { + // JNI bindings + } +} + +Imagine we want to add a constructor to this class that takes a Point and +Size structure instead of 4 ints. We can add a new file called Rectangle.cs +with a partial class containing our new method: + +public partial class Rectangle +{ + public Rectangle (Point location, Size size) : + this (location.X, location.Y, size.Width, size.Height) + { + } +} + +At compile time, the additions class will be added to the generated class +and the final assembly will a Rectangle class with both constructors. + + +== Adding C# Classes == + +Another thing that can be done is adding fully C# managed classes to the +generated library. In the above example, let's assume that there isn't a +Point class available in Java or our library. The one we create doesn't need +to interact with Java, so we'll create it like a normal class in C#. + +By adding a Point.cs file with this class, it will end up in the binding library: + +public class Point +{ + public int X { get; set; } + public int Y { get; set; } +} diff --git a/firebase-analytics-impl/source/Firebase-Analytics-Impl.csproj b/firebase-analytics-impl/source/Firebase-Analytics-Impl.csproj new file mode 100644 index 000000000..87d8fcf61 --- /dev/null +++ b/firebase-analytics-impl/source/Firebase-Analytics-Impl.csproj @@ -0,0 +1,86 @@ + + + + Debug + AnyCPU + {EFBA0AD7-5A72-4C68-AF49-83D382785DCF};{10368E6C-D01B-4462-8E8B-01FC667A7035};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + {CFB0A03A-F787-4EE9-9EA6-8A2A65E82704} + Library + Xamarin.Firebase.Analytics.Impl + Resources + Assets + False + Xamarin.Firebase.Analytics.Impl + v4.1 + -XX:-UseSplitVerifier + ..\..\externals\docs\reference + 8.0.30703 + 2.0 + + + true + full + false + bin\Debug + DEBUG; + prompt + 4 + None + false + + + full + true + bin\Release + prompt + 4 + false + false + + + + + + + + + + + Properties\GpsConsts.cs + + + + + + + + + + + + + + + {6A38FACF-F0C5-4A49-8A8A-7CE6634207CE} + Basement + + + {865652D3-8D1A-4779-92FC-4C54719286B7} + Firebase-Common + + + {3F6BAE25-ADEB-468C-8384-AD655623C341} + Base + + + {B28F65D1-D8DD-45E8-9DD7-74A3BE40B4CE} + Firebase-Iid + + + + + + Jars\firebase-analytics-impl.jar + + + diff --git a/firebase-analytics-impl/source/Jars/AboutJars.txt b/firebase-analytics-impl/source/Jars/AboutJars.txt new file mode 100644 index 000000000..320a154be --- /dev/null +++ b/firebase-analytics-impl/source/Jars/AboutJars.txt @@ -0,0 +1,37 @@ +This directory is for Android .jars. + +There are 4 types of jars that are supported: + +== Input Jar and Embedded Jar == + +This is the jar that bindings should be generated for. + +For example, if you were binding the Google Maps library, this would +be Google's "maps.jar". + +The difference between EmbeddedJar and InputJar is, EmbeddedJar is to be +embedded in the resulting dll as EmbeddedResource, while InputJar is not. +There are couple of reasons you wouldn't like to embed the target jar +in your dll (the ones that could be internally loaded by +feature e.g. maps.jar, or you cannot embed jars that are under some +proprietary license). + +Set the build action for these jars in the properties page to "InputJar". + + +== Reference Jar and Embedded Reference Jar == + +These are jars that are referenced by the input jar. C# bindings will +not be created for these jars. These jars will be used to resolve +types used by the input jar. + +NOTE: Do not add "android.jar" as a reference jar. It will be added automatically +based on the Target Framework selected. + +Set the build action for these jars in the properties page to "ReferenceJar". + +"EmbeddedJar" works like "ReferenceJar", but like "EmbeddedJar", it is +embedded in your dll. But at application build time, they are not included +in the final apk, like ReferenceJar files. + + diff --git a/firebase-analytics-impl/source/Properties/AssemblyInfo.cs b/firebase-analytics-impl/source/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..a7edf50a8 --- /dev/null +++ b/firebase-analytics-impl/source/Properties/AssemblyInfo.cs @@ -0,0 +1,48 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using Android.App; + +// Information about this assembly is defined by the following attributes. +// Change them to the values specific to your project. + +[assembly: AssemblyTitle ("Xamarin.Firebase.Analytics.Impl")] +[assembly: AssemblyDescription ("")] +[assembly: AssemblyConfiguration ("")] +[assembly: AssemblyCompany ("Xamarin")] +[assembly: AssemblyProduct ("")] +[assembly: AssemblyCopyright ("Xamarin")] +[assembly: AssemblyTrademark ("")] +[assembly: AssemblyCulture ("")] + +// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}". +// The form "{Major}.{Minor}.*" will automatically update the build and revision, +// and "{Major}.{Minor}.{Build}.*" will update just the revision. + +[assembly: AssemblyVersion ("1.0.0")] + +// The following attributes are used to specify the signing key for the assembly, +// if desired. See the Mono documentation for more information about signing. + +//[assembly: AssemblyDelaySign(false)] +//[assembly: AssemblyKeyFile("")] + +[assembly: Java.Interop.JavaLibraryReference ("classes.jar", + PackageName = __Consts.PackageName, + SourceUrl = __FbConsts.Url, + EmbeddedArchive = __Consts.AarPath, + Version = __FbConsts.Version)] +// AppCompat-v7 resources +[assembly: Android.IncludeAndroidResourcesFromAttribute ("./", + PackageName = __Consts.PackageName, + SourceUrl = __FbConsts.Url, + EmbeddedArchive = __Consts.AarPath, + Version = __FbConsts.Version)] + +// Google Addon feed with GPS in it: +// https://dl-ssl.google.com/android/repository/addon.xml + +static class __Consts { + public const string PackageName = "Firebase Common"; + public const string AarPath = "m2repository/com/google/firebase/firebase-analytics-impl/" + __FbConsts.Version + "/firebase-analytics-impl-" + __FbConsts.Version + ".aar"; +} + \ No newline at end of file diff --git a/firebase-analytics-impl/source/Transforms/EnumFields.xml b/firebase-analytics-impl/source/Transforms/EnumFields.xml new file mode 100644 index 000000000..e9af0eeb3 --- /dev/null +++ b/firebase-analytics-impl/source/Transforms/EnumFields.xml @@ -0,0 +1,18 @@ + + + diff --git a/firebase-analytics-impl/source/Transforms/EnumMethods.xml b/firebase-analytics-impl/source/Transforms/EnumMethods.xml new file mode 100644 index 000000000..2efa81467 --- /dev/null +++ b/firebase-analytics-impl/source/Transforms/EnumMethods.xml @@ -0,0 +1,18 @@ + + + diff --git a/firebase-analytics-impl/source/Transforms/Metadata.generated.xml b/firebase-analytics-impl/source/Transforms/Metadata.generated.xml new file mode 100644 index 000000000..26c2f6238 --- /dev/null +++ b/firebase-analytics-impl/source/Transforms/Metadata.generated.xml @@ -0,0 +1,2 @@ + + diff --git a/firebase-analytics-impl/source/Transforms/Metadata.xml b/firebase-analytics-impl/source/Transforms/Metadata.xml new file mode 100644 index 000000000..3ff44f55c --- /dev/null +++ b/firebase-analytics-impl/source/Transforms/Metadata.xml @@ -0,0 +1,16 @@ + + + + Firebase + Firebase.Analytics + + Android.Gms.Measurement + Android.Gms.Measurement.Internal + + + + + + + + diff --git a/firebase-analytics/nuget/Xamarin.Firebase.Analytics.nuspec b/firebase-analytics/nuget/Xamarin.Firebase.Analytics.nuspec new file mode 100644 index 000000000..54140fd73 --- /dev/null +++ b/firebase-analytics/nuget/Xamarin.Firebase.Analytics.nuspec @@ -0,0 +1,26 @@ + + + + Xamarin.Firebase.Analytics + Xamarin Firebase - Analytics + $version$ + Xamarin Inc. + Xamarin Inc. + true + Xamarin.Android Bindings for Firebase - Analytics + + Xamarin.Android Bindings for Firebase - Analytics + + Copyright 2013-2016 + https://github.com/xamarin/GooglePlayServicesComponents/ + https://github.com/xamarin/GooglePlayServicesComponents/blob/master/LICENSE.md + https://xamarin-component-icons.s3.amazonaws.com/Xamarin.Firebase.Analytics.png + + + + + + + + + diff --git a/firebase-analytics/source/Additions/AboutAdditions.txt b/firebase-analytics/source/Additions/AboutAdditions.txt new file mode 100644 index 000000000..c511f1d4e --- /dev/null +++ b/firebase-analytics/source/Additions/AboutAdditions.txt @@ -0,0 +1,48 @@ +Additions allow you to add arbitrary C# to the generated classes +before they are compiled. This can be helpful for providing convenience +methods or adding pure C# classes. + +== Adding Methods to Generated Classes == + +Let's say the library being bound has a Rectangle class with a constructor +that takes an x and y position, and a width and length size. It will look like +this: + +public partial class Rectangle +{ + public Rectangle (int x, int y, int width, int height) + { + // JNI bindings + } +} + +Imagine we want to add a constructor to this class that takes a Point and +Size structure instead of 4 ints. We can add a new file called Rectangle.cs +with a partial class containing our new method: + +public partial class Rectangle +{ + public Rectangle (Point location, Size size) : + this (location.X, location.Y, size.Width, size.Height) + { + } +} + +At compile time, the additions class will be added to the generated class +and the final assembly will a Rectangle class with both constructors. + + +== Adding C# Classes == + +Another thing that can be done is adding fully C# managed classes to the +generated library. In the above example, let's assume that there isn't a +Point class available in Java or our library. The one we create doesn't need +to interact with Java, so we'll create it like a normal class in C#. + +By adding a Point.cs file with this class, it will end up in the binding library: + +public class Point +{ + public int X { get; set; } + public int Y { get; set; } +} diff --git a/firebase-analytics/source/Additions/Manifest.cs b/firebase-analytics/source/Additions/Manifest.cs new file mode 100644 index 000000000..a6c7a4674 --- /dev/null +++ b/firebase-analytics/source/Additions/Manifest.cs @@ -0,0 +1,32 @@ +using Android.App; +using Android.Content; + +[assembly: UsesPermission (Android.Manifest.Permission.Internet)] +[assembly: UsesPermission (Android.Manifest.Permission.AccessNetworkState)] +[assembly: UsesPermission (Android.Manifest.Permission.WakeLock)] + +namespace Android.Gms.Measurement +{ + // + // + // + // + // + [BroadcastReceiver (Name="com.google.android.gms.measurement.AppMeasurementReceiver", Enabled=true)] + [IntentFilter (new [] { "com.google.android.gms.measurement.UPLOAD" })] + public partial class AppMeasurementReceiver + { + } + + // + [Service (Name="com.google.android.gms.measurement.AppMeasurementService", Enabled=true, Exported=false)] + public partial class AppMeasurementService + { + } +} + diff --git a/firebase-analytics/source/Firebase-Analytics.csproj b/firebase-analytics/source/Firebase-Analytics.csproj new file mode 100644 index 000000000..e95afc063 --- /dev/null +++ b/firebase-analytics/source/Firebase-Analytics.csproj @@ -0,0 +1,83 @@ + + + + Debug + AnyCPU + {EFBA0AD7-5A72-4C68-AF49-83D382785DCF};{10368E6C-D01B-4462-8E8B-01FC667A7035};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + {DC5BEB52-1715-4E53-88EF-2D4F1708E394} + Library + Xamarin.Firebase.Analytics + Resources + Assets + False + Xamarin.Firebase.Analytics + v4.1 + -XX:-UseSplitVerifier + ..\..\externals\docs\reference + 8.0.30703 + 2.0 + + + true + full + false + bin\Debug + DEBUG; + prompt + 4 + None + false + + + full + true + bin\Release + prompt + 4 + false + false + + + + + + + + + + + Properties\GpsConsts.cs + + + + + + + + + + + + + + + + {6A38FACF-F0C5-4A49-8A8A-7CE6634207CE} + Basement + + + {865652D3-8D1A-4779-92FC-4C54719286B7} + Firebase-Common + + + {CFB0A03A-F787-4EE9-9EA6-8A2A65E82704} + Firebase-Analytics-Impl + + + + + + Jars\firebase-analytics.jar + + + diff --git a/firebase-analytics/source/Jars/AboutJars.txt b/firebase-analytics/source/Jars/AboutJars.txt new file mode 100644 index 000000000..320a154be --- /dev/null +++ b/firebase-analytics/source/Jars/AboutJars.txt @@ -0,0 +1,37 @@ +This directory is for Android .jars. + +There are 4 types of jars that are supported: + +== Input Jar and Embedded Jar == + +This is the jar that bindings should be generated for. + +For example, if you were binding the Google Maps library, this would +be Google's "maps.jar". + +The difference between EmbeddedJar and InputJar is, EmbeddedJar is to be +embedded in the resulting dll as EmbeddedResource, while InputJar is not. +There are couple of reasons you wouldn't like to embed the target jar +in your dll (the ones that could be internally loaded by +feature e.g. maps.jar, or you cannot embed jars that are under some +proprietary license). + +Set the build action for these jars in the properties page to "InputJar". + + +== Reference Jar and Embedded Reference Jar == + +These are jars that are referenced by the input jar. C# bindings will +not be created for these jars. These jars will be used to resolve +types used by the input jar. + +NOTE: Do not add "android.jar" as a reference jar. It will be added automatically +based on the Target Framework selected. + +Set the build action for these jars in the properties page to "ReferenceJar". + +"EmbeddedJar" works like "ReferenceJar", but like "EmbeddedJar", it is +embedded in your dll. But at application build time, they are not included +in the final apk, like ReferenceJar files. + + diff --git a/firebase-analytics/source/Properties/AssemblyInfo.cs b/firebase-analytics/source/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..5be06494f --- /dev/null +++ b/firebase-analytics/source/Properties/AssemblyInfo.cs @@ -0,0 +1,48 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using Android.App; + +// Information about this assembly is defined by the following attributes. +// Change them to the values specific to your project. + +[assembly: AssemblyTitle ("Xamarin.Firebase.Analytics")] +[assembly: AssemblyDescription ("")] +[assembly: AssemblyConfiguration ("")] +[assembly: AssemblyCompany ("Xamarin")] +[assembly: AssemblyProduct ("")] +[assembly: AssemblyCopyright ("Xamarin")] +[assembly: AssemblyTrademark ("")] +[assembly: AssemblyCulture ("")] + +// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}". +// The form "{Major}.{Minor}.*" will automatically update the build and revision, +// and "{Major}.{Minor}.{Build}.*" will update just the revision. + +[assembly: AssemblyVersion ("1.0.0")] + +// The following attributes are used to specify the signing key for the assembly, +// if desired. See the Mono documentation for more information about signing. + +//[assembly: AssemblyDelaySign(false)] +//[assembly: AssemblyKeyFile("")] + +[assembly: Java.Interop.JavaLibraryReference ("classes.jar", + PackageName = __Consts.PackageName, + SourceUrl = __FbConsts.Url, + EmbeddedArchive = __Consts.AarPath, + Version = __FbConsts.Version)] +// AppCompat-v7 resources +[assembly: Android.IncludeAndroidResourcesFromAttribute ("./", + PackageName = __Consts.PackageName, + SourceUrl = __FbConsts.Url, + EmbeddedArchive = __Consts.AarPath, + Version = __FbConsts.Version)] + +// Google Addon feed with GPS in it: +// https://dl-ssl.google.com/android/repository/addon.xml + +static class __Consts { + public const string PackageName = "Firebase Analytics"; + public const string AarPath = "m2repository/com/google/firebase/firebase-analytics/" + __FbConsts.Version + "/firebase-analytics-" + __FbConsts.Version + ".aar"; +} + \ No newline at end of file diff --git a/firebase-analytics/source/Transforms/EnumFields.xml b/firebase-analytics/source/Transforms/EnumFields.xml new file mode 100644 index 000000000..e9af0eeb3 --- /dev/null +++ b/firebase-analytics/source/Transforms/EnumFields.xml @@ -0,0 +1,18 @@ + + + diff --git a/firebase-analytics/source/Transforms/EnumMethods.xml b/firebase-analytics/source/Transforms/EnumMethods.xml new file mode 100644 index 000000000..2efa81467 --- /dev/null +++ b/firebase-analytics/source/Transforms/EnumMethods.xml @@ -0,0 +1,18 @@ + + + diff --git a/firebase-analytics/source/Transforms/Metadata.generated.xml b/firebase-analytics/source/Transforms/Metadata.generated.xml new file mode 100644 index 000000000..26c2f6238 --- /dev/null +++ b/firebase-analytics/source/Transforms/Metadata.generated.xml @@ -0,0 +1,2 @@ + + diff --git a/firebase-analytics/source/Transforms/Metadata.xml b/firebase-analytics/source/Transforms/Metadata.xml new file mode 100644 index 000000000..dd3dfc241 --- /dev/null +++ b/firebase-analytics/source/Transforms/Metadata.xml @@ -0,0 +1,12 @@ + + + + Android.Gms.Measurement + + + + + + + + From d953ac6dff980615cc8871d1062889847dd18dc8 Mon Sep 17 00:00:00 2001 From: Redth Date: Wed, 1 Jun 2016 13:23:50 -0400 Subject: [PATCH 005/178] Added play-servies-tagmanager and play-service-tagmanager-api bindings --- ...n.GooglePlayServices.TagManager.Api.nuspec | 25 ++++++ .../source/Additions/AboutAdditions.txt | 48 ++++++++++ tagmanager-api/source/Additions/Manifest.cs | 37 ++++++++ tagmanager-api/source/Jars/AboutJars.txt | 37 ++++++++ .../source/Properties/AssemblyInfo.cs | 47 ++++++++++ tagmanager-api/source/TagManager.Api.csproj | 85 ++++++++++++++++++ .../source/Transforms/EnumFields.xml | 18 ++++ .../source/Transforms/EnumMethods.xml | 18 ++++ .../source/Transforms/Metadata.generated.xml | 2 + tagmanager-api/source/Transforms/Metadata.xml | 13 +++ tagmanager-api/source/packages.config | 4 + ...marin.GooglePlayServices.TagManager.nuspec | 25 ++++++ .../source/Additions/AboutAdditions.txt | 48 ++++++++++ tagmanager/source/Jars/AboutJars.txt | 37 ++++++++ tagmanager/source/Properties/AssemblyInfo.cs | 47 ++++++++++ tagmanager/source/TagManager.csproj | 88 +++++++++++++++++++ tagmanager/source/Transforms/EnumFields.xml | 18 ++++ tagmanager/source/Transforms/EnumMethods.xml | 18 ++++ .../source/Transforms/Metadata.generated.xml | 2 + tagmanager/source/Transforms/Metadata.xml | 13 +++ tagmanager/source/packages.config | 4 + 21 files changed, 634 insertions(+) create mode 100644 tagmanager-api/nuget/Xamarin.GooglePlayServices.TagManager.Api.nuspec create mode 100644 tagmanager-api/source/Additions/AboutAdditions.txt create mode 100644 tagmanager-api/source/Additions/Manifest.cs create mode 100644 tagmanager-api/source/Jars/AboutJars.txt create mode 100644 tagmanager-api/source/Properties/AssemblyInfo.cs create mode 100644 tagmanager-api/source/TagManager.Api.csproj create mode 100644 tagmanager-api/source/Transforms/EnumFields.xml create mode 100644 tagmanager-api/source/Transforms/EnumMethods.xml create mode 100644 tagmanager-api/source/Transforms/Metadata.generated.xml create mode 100644 tagmanager-api/source/Transforms/Metadata.xml create mode 100644 tagmanager-api/source/packages.config create mode 100644 tagmanager/nuget/Xamarin.GooglePlayServices.TagManager.nuspec create mode 100644 tagmanager/source/Additions/AboutAdditions.txt create mode 100644 tagmanager/source/Jars/AboutJars.txt create mode 100644 tagmanager/source/Properties/AssemblyInfo.cs create mode 100644 tagmanager/source/TagManager.csproj create mode 100644 tagmanager/source/Transforms/EnumFields.xml create mode 100644 tagmanager/source/Transforms/EnumMethods.xml create mode 100644 tagmanager/source/Transforms/Metadata.generated.xml create mode 100644 tagmanager/source/Transforms/Metadata.xml create mode 100644 tagmanager/source/packages.config diff --git a/tagmanager-api/nuget/Xamarin.GooglePlayServices.TagManager.Api.nuspec b/tagmanager-api/nuget/Xamarin.GooglePlayServices.TagManager.Api.nuspec new file mode 100644 index 000000000..30a62870f --- /dev/null +++ b/tagmanager-api/nuget/Xamarin.GooglePlayServices.TagManager.Api.nuspec @@ -0,0 +1,25 @@ + + + + Xamarin.GooglePlayServices.TagManager.Api + Xamarin Google Play Services - TagManager API + $version$ + Xamarin Inc. + Xamarin Inc. + true + + Xamarin.Android Bindings for Google Play Services - TagManager API + + Copyright 2013-2016 + https://github.com/xamarin/GooglePlayServicesComponents/ + https://github.com/xamarin/GooglePlayServicesComponents/blob/master/LICENSE.md + https://xamarin-component-icons.s3.amazonaws.com/Xamarin.GooglePlayServices.TagManager.Api.png + + + + + + + + + diff --git a/tagmanager-api/source/Additions/AboutAdditions.txt b/tagmanager-api/source/Additions/AboutAdditions.txt new file mode 100644 index 000000000..c511f1d4e --- /dev/null +++ b/tagmanager-api/source/Additions/AboutAdditions.txt @@ -0,0 +1,48 @@ +Additions allow you to add arbitrary C# to the generated classes +before they are compiled. This can be helpful for providing convenience +methods or adding pure C# classes. + +== Adding Methods to Generated Classes == + +Let's say the library being bound has a Rectangle class with a constructor +that takes an x and y position, and a width and length size. It will look like +this: + +public partial class Rectangle +{ + public Rectangle (int x, int y, int width, int height) + { + // JNI bindings + } +} + +Imagine we want to add a constructor to this class that takes a Point and +Size structure instead of 4 ints. We can add a new file called Rectangle.cs +with a partial class containing our new method: + +public partial class Rectangle +{ + public Rectangle (Point location, Size size) : + this (location.X, location.Y, size.Width, size.Height) + { + } +} + +At compile time, the additions class will be added to the generated class +and the final assembly will a Rectangle class with both constructors. + + +== Adding C# Classes == + +Another thing that can be done is adding fully C# managed classes to the +generated library. In the above example, let's assume that there isn't a +Point class available in Java or our library. The one we create doesn't need +to interact with Java, so we'll create it like a normal class in C#. + +By adding a Point.cs file with this class, it will end up in the binding library: + +public class Point +{ + public int X { get; set; } + public int Y { get; set; } +} diff --git a/tagmanager-api/source/Additions/Manifest.cs b/tagmanager-api/source/Additions/Manifest.cs new file mode 100644 index 000000000..5450ca3d3 --- /dev/null +++ b/tagmanager-api/source/Additions/Manifest.cs @@ -0,0 +1,37 @@ +using System; +using Android.Runtime; +using Android.App; +using Android.Content; + +[assembly: UsesPermission (Android.Manifest.Permission.WakeLock)] +[assembly: UsesPermission (Android.Manifest.Permission.AccessNetworkState)] + +namespace Android.Gms.TagManager +{ + // + [Service (Name="com.google.android.gms.tagmanager.TagManagerService", Exported=false, Enabled=true)] + public partial class TagManagerService + { + } + + // + // + // + // + // + // + // + // + [Activity (Name="com.google.android.gms.tagmanager.TagManagerPreviewActivity", NoHistory=true)] + [IntentFilter (new [] { Intent.ActionView }, + DataScheme="tagmanager.c.${applicationId}", + Categories=new [] { Intent.CategoryDefault, Intent.CategoryBrowsable })] + public partial class TagManagerPreviewActivity + { + } +} + diff --git a/tagmanager-api/source/Jars/AboutJars.txt b/tagmanager-api/source/Jars/AboutJars.txt new file mode 100644 index 000000000..320a154be --- /dev/null +++ b/tagmanager-api/source/Jars/AboutJars.txt @@ -0,0 +1,37 @@ +This directory is for Android .jars. + +There are 4 types of jars that are supported: + +== Input Jar and Embedded Jar == + +This is the jar that bindings should be generated for. + +For example, if you were binding the Google Maps library, this would +be Google's "maps.jar". + +The difference between EmbeddedJar and InputJar is, EmbeddedJar is to be +embedded in the resulting dll as EmbeddedResource, while InputJar is not. +There are couple of reasons you wouldn't like to embed the target jar +in your dll (the ones that could be internally loaded by +feature e.g. maps.jar, or you cannot embed jars that are under some +proprietary license). + +Set the build action for these jars in the properties page to "InputJar". + + +== Reference Jar and Embedded Reference Jar == + +These are jars that are referenced by the input jar. C# bindings will +not be created for these jars. These jars will be used to resolve +types used by the input jar. + +NOTE: Do not add "android.jar" as a reference jar. It will be added automatically +based on the Target Framework selected. + +Set the build action for these jars in the properties page to "ReferenceJar". + +"EmbeddedJar" works like "ReferenceJar", but like "EmbeddedJar", it is +embedded in your dll. But at application build time, they are not included +in the final apk, like ReferenceJar files. + + diff --git a/tagmanager-api/source/Properties/AssemblyInfo.cs b/tagmanager-api/source/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..525fab355 --- /dev/null +++ b/tagmanager-api/source/Properties/AssemblyInfo.cs @@ -0,0 +1,47 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using Android.App; + +// Information about this assembly is defined by the following attributes. +// Change them to the values specific to your project. + +[assembly: AssemblyTitle ("Xamarin.GooglePlayServices.TagManager.Api")] +[assembly: AssemblyDescription ("")] +[assembly: AssemblyConfiguration ("")] +[assembly: AssemblyCompany ("Xamarin")] +[assembly: AssemblyProduct ("")] +[assembly: AssemblyCopyright ("Xamarin")] +[assembly: AssemblyTrademark ("")] +[assembly: AssemblyCulture ("")] + +// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}". +// The form "{Major}.{Minor}.*" will automatically update the build and revision, +// and "{Major}.{Minor}.{Build}.*" will update just the revision. + +[assembly: AssemblyVersion ("1.0.0")] + +// The following attributes are used to specify the signing key for the assembly, +// if desired. See the Mono documentation for more information about signing. + +//[assembly: AssemblyDelaySign(false)] +//[assembly: AssemblyKeyFile("")] + +[assembly: Java.Interop.JavaLibraryReference ("classes.jar", + PackageName = __Consts.PackageName, + SourceUrl = __GpsConsts.Url, + EmbeddedArchive = __Consts.AarPath, + Version = __GpsConsts.Version)] +// AppCompat-v7 resources +[assembly: Android.IncludeAndroidResourcesFromAttribute ("./", + PackageName = __Consts.PackageName, + SourceUrl = __GpsConsts.Url, + EmbeddedArchive = __Consts.AarPath, + Version = __GpsConsts.Version)] + +// Google Addon feed with GPS in it: +// https://dl-ssl.google.com/android/repository/addon.xml + +static class __Consts { + public const string PackageName = "GPS TagManager API"; + public const string AarPath = "m2repository/com/google/android/gms/play-services-tagmanager-api/" + __GpsConsts.Version + "/play-services-tagmanager-api-" + __GpsConsts.Version + ".aar"; +} diff --git a/tagmanager-api/source/TagManager.Api.csproj b/tagmanager-api/source/TagManager.Api.csproj new file mode 100644 index 000000000..a09c6cc93 --- /dev/null +++ b/tagmanager-api/source/TagManager.Api.csproj @@ -0,0 +1,85 @@ + + + + Debug + AnyCPU + {EFBA0AD7-5A72-4C68-AF49-83D382785DCF};{10368E6C-D01B-4462-8E8B-01FC667A7035};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + 8.0.30703 + 2.0 + {B94069F7-2BD5-4695-B7B7-EBAA1C496DD9} + Library + GooglePlayServices.TagManager.Api + Resources + Assets + False + Xamarin.GooglePlayServices.TagManager.Api + v4.1 + ..\..\externals\docs\reference + + + + true + full + false + bin\Debug + DEBUG; + prompt + 4 + None + false + + + full + true + bin\Release + prompt + 4 + false + false + + + + + + + + ..\..\packages\Xamarin.Android.Support.v4.23.1.1.1\lib\MonoAndroid403\Xamarin.Android.Support.v4.dll + + + + + + Properties\GpsConsts.cs + + + + + + + + + + + + + + + + + {6A38FACF-F0C5-4A49-8A8A-7CE6634207CE} + Basement + + + {DC5BEB52-1715-4E53-88EF-2D4F1708E394} + Firebase-Analytics + + + + + + Jars\play-services-tagmanager-api.jar + + + \ No newline at end of file diff --git a/tagmanager-api/source/Transforms/EnumFields.xml b/tagmanager-api/source/Transforms/EnumFields.xml new file mode 100644 index 000000000..e9af0eeb3 --- /dev/null +++ b/tagmanager-api/source/Transforms/EnumFields.xml @@ -0,0 +1,18 @@ + + + diff --git a/tagmanager-api/source/Transforms/EnumMethods.xml b/tagmanager-api/source/Transforms/EnumMethods.xml new file mode 100644 index 000000000..2efa81467 --- /dev/null +++ b/tagmanager-api/source/Transforms/EnumMethods.xml @@ -0,0 +1,18 @@ + + + diff --git a/tagmanager-api/source/Transforms/Metadata.generated.xml b/tagmanager-api/source/Transforms/Metadata.generated.xml new file mode 100644 index 000000000..26c2f6238 --- /dev/null +++ b/tagmanager-api/source/Transforms/Metadata.generated.xml @@ -0,0 +1,2 @@ + + diff --git a/tagmanager-api/source/Transforms/Metadata.xml b/tagmanager-api/source/Transforms/Metadata.xml new file mode 100644 index 000000000..690262930 --- /dev/null +++ b/tagmanager-api/source/Transforms/Metadata.xml @@ -0,0 +1,13 @@ + + + Android.Gms.TagManager + + + + + + + + + + diff --git a/tagmanager-api/source/packages.config b/tagmanager-api/source/packages.config new file mode 100644 index 000000000..59cde6e53 --- /dev/null +++ b/tagmanager-api/source/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/tagmanager/nuget/Xamarin.GooglePlayServices.TagManager.nuspec b/tagmanager/nuget/Xamarin.GooglePlayServices.TagManager.nuspec new file mode 100644 index 000000000..8e3e78628 --- /dev/null +++ b/tagmanager/nuget/Xamarin.GooglePlayServices.TagManager.nuspec @@ -0,0 +1,25 @@ + + + + Xamarin.GooglePlayServices.TagManager + Xamarin Google Play Services - TagManager + $version$ + Xamarin Inc. + Xamarin Inc. + true + + Xamarin.Android Bindings for Google Play Services - TagManager + + Copyright 2013-2016 + https://github.com/xamarin/GooglePlayServicesComponents/ + https://github.com/xamarin/GooglePlayServicesComponents/blob/master/LICENSE.md + https://xamarin-component-icons.s3.amazonaws.com/Xamarin.GooglePlayServices.TagManager.png + + + + + + + + + diff --git a/tagmanager/source/Additions/AboutAdditions.txt b/tagmanager/source/Additions/AboutAdditions.txt new file mode 100644 index 000000000..c511f1d4e --- /dev/null +++ b/tagmanager/source/Additions/AboutAdditions.txt @@ -0,0 +1,48 @@ +Additions allow you to add arbitrary C# to the generated classes +before they are compiled. This can be helpful for providing convenience +methods or adding pure C# classes. + +== Adding Methods to Generated Classes == + +Let's say the library being bound has a Rectangle class with a constructor +that takes an x and y position, and a width and length size. It will look like +this: + +public partial class Rectangle +{ + public Rectangle (int x, int y, int width, int height) + { + // JNI bindings + } +} + +Imagine we want to add a constructor to this class that takes a Point and +Size structure instead of 4 ints. We can add a new file called Rectangle.cs +with a partial class containing our new method: + +public partial class Rectangle +{ + public Rectangle (Point location, Size size) : + this (location.X, location.Y, size.Width, size.Height) + { + } +} + +At compile time, the additions class will be added to the generated class +and the final assembly will a Rectangle class with both constructors. + + +== Adding C# Classes == + +Another thing that can be done is adding fully C# managed classes to the +generated library. In the above example, let's assume that there isn't a +Point class available in Java or our library. The one we create doesn't need +to interact with Java, so we'll create it like a normal class in C#. + +By adding a Point.cs file with this class, it will end up in the binding library: + +public class Point +{ + public int X { get; set; } + public int Y { get; set; } +} diff --git a/tagmanager/source/Jars/AboutJars.txt b/tagmanager/source/Jars/AboutJars.txt new file mode 100644 index 000000000..320a154be --- /dev/null +++ b/tagmanager/source/Jars/AboutJars.txt @@ -0,0 +1,37 @@ +This directory is for Android .jars. + +There are 4 types of jars that are supported: + +== Input Jar and Embedded Jar == + +This is the jar that bindings should be generated for. + +For example, if you were binding the Google Maps library, this would +be Google's "maps.jar". + +The difference between EmbeddedJar and InputJar is, EmbeddedJar is to be +embedded in the resulting dll as EmbeddedResource, while InputJar is not. +There are couple of reasons you wouldn't like to embed the target jar +in your dll (the ones that could be internally loaded by +feature e.g. maps.jar, or you cannot embed jars that are under some +proprietary license). + +Set the build action for these jars in the properties page to "InputJar". + + +== Reference Jar and Embedded Reference Jar == + +These are jars that are referenced by the input jar. C# bindings will +not be created for these jars. These jars will be used to resolve +types used by the input jar. + +NOTE: Do not add "android.jar" as a reference jar. It will be added automatically +based on the Target Framework selected. + +Set the build action for these jars in the properties page to "ReferenceJar". + +"EmbeddedJar" works like "ReferenceJar", but like "EmbeddedJar", it is +embedded in your dll. But at application build time, they are not included +in the final apk, like ReferenceJar files. + + diff --git a/tagmanager/source/Properties/AssemblyInfo.cs b/tagmanager/source/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..a0d2c0f8b --- /dev/null +++ b/tagmanager/source/Properties/AssemblyInfo.cs @@ -0,0 +1,47 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using Android.App; + +// Information about this assembly is defined by the following attributes. +// Change them to the values specific to your project. + +[assembly: AssemblyTitle ("Xamarin.GooglePlayServices.TagManager")] +[assembly: AssemblyDescription ("")] +[assembly: AssemblyConfiguration ("")] +[assembly: AssemblyCompany ("Xamarin")] +[assembly: AssemblyProduct ("")] +[assembly: AssemblyCopyright ("Xamarin")] +[assembly: AssemblyTrademark ("")] +[assembly: AssemblyCulture ("")] + +// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}". +// The form "{Major}.{Minor}.*" will automatically update the build and revision, +// and "{Major}.{Minor}.{Build}.*" will update just the revision. + +[assembly: AssemblyVersion ("1.0.0")] + +// The following attributes are used to specify the signing key for the assembly, +// if desired. See the Mono documentation for more information about signing. + +//[assembly: AssemblyDelaySign(false)] +//[assembly: AssemblyKeyFile("")] + +[assembly: Java.Interop.JavaLibraryReference ("classes.jar", + PackageName = __Consts.PackageName, + SourceUrl = __GpsConsts.Url, + EmbeddedArchive = __Consts.AarPath, + Version = __GpsConsts.Version)] +// AppCompat-v7 resources +[assembly: Android.IncludeAndroidResourcesFromAttribute ("./", + PackageName = __Consts.PackageName, + SourceUrl = __GpsConsts.Url, + EmbeddedArchive = __Consts.AarPath, + Version = __GpsConsts.Version)] + +// Google Addon feed with GPS in it: +// https://dl-ssl.google.com/android/repository/addon.xml + +static class __Consts { + public const string PackageName = "GPS TagManager"; + public const string AarPath = "m2repository/com/google/android/gms/play-services-tagmanager/" + __GpsConsts.Version + "/play-services-tagmanager-" + __GpsConsts.Version + ".aar"; +} diff --git a/tagmanager/source/TagManager.csproj b/tagmanager/source/TagManager.csproj new file mode 100644 index 000000000..61a103624 --- /dev/null +++ b/tagmanager/source/TagManager.csproj @@ -0,0 +1,88 @@ + + + + Debug + AnyCPU + {EFBA0AD7-5A72-4C68-AF49-83D382785DCF};{10368E6C-D01B-4462-8E8B-01FC667A7035};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + 8.0.30703 + 2.0 + {2EA64B09-174C-40D0-9A40-44C2BF10C9D4} + Library + GooglePlayServices.TagManager + Resources + Assets + False + Xamarin.GooglePlayServices.TagManager + v4.1 + ..\..\externals\docs\reference + + + + true + full + false + bin\Debug + DEBUG; + prompt + 4 + None + false + + + full + true + bin\Release + prompt + 4 + false + false + + + + + + + + ..\..\packages\Xamarin.Android.Support.v4.23.1.1.1\lib\MonoAndroid403\Xamarin.Android.Support.v4.dll + + + + + + Properties\GpsConsts.cs + + + + + + + + + + + + + + + + {6A38FACF-F0C5-4A49-8A8A-7CE6634207CE} + Basement + + + {B94069F7-2BD5-4695-B7B7-EBAA1C496DD9} + TagManager.Api + + + {7893F52D-09B9-4441-AC47-6F7875BD68BC} + Analytics.Impl + + + + + + Jars\play-services-tagmanager.jar + + + \ No newline at end of file diff --git a/tagmanager/source/Transforms/EnumFields.xml b/tagmanager/source/Transforms/EnumFields.xml new file mode 100644 index 000000000..e9af0eeb3 --- /dev/null +++ b/tagmanager/source/Transforms/EnumFields.xml @@ -0,0 +1,18 @@ + + + diff --git a/tagmanager/source/Transforms/EnumMethods.xml b/tagmanager/source/Transforms/EnumMethods.xml new file mode 100644 index 000000000..2efa81467 --- /dev/null +++ b/tagmanager/source/Transforms/EnumMethods.xml @@ -0,0 +1,18 @@ + + + diff --git a/tagmanager/source/Transforms/Metadata.generated.xml b/tagmanager/source/Transforms/Metadata.generated.xml new file mode 100644 index 000000000..26c2f6238 --- /dev/null +++ b/tagmanager/source/Transforms/Metadata.generated.xml @@ -0,0 +1,2 @@ + + diff --git a/tagmanager/source/Transforms/Metadata.xml b/tagmanager/source/Transforms/Metadata.xml new file mode 100644 index 000000000..bdf496a46 --- /dev/null +++ b/tagmanager/source/Transforms/Metadata.xml @@ -0,0 +1,13 @@ + + + Android.Gms.TagManager + Android.Gms.Dynamite.Descriptors.TagManager + + + + + + + + + diff --git a/tagmanager/source/packages.config b/tagmanager/source/packages.config new file mode 100644 index 000000000..59cde6e53 --- /dev/null +++ b/tagmanager/source/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file From e0dda8ad335fa75b19ce99ef35e15063d6a9d93f Mon Sep 17 00:00:00 2001 From: Redth Date: Wed, 1 Jun 2016 13:24:43 -0400 Subject: [PATCH 006/178] Updated play-services-base and play-services-basement bindings Some types moved over to base, and many more packages depend on base now --- base/source/Additions/ResultCallbackImpl.cs | 290 ++++---- base/source/Base.csproj | 13 +- base/source/Transforms/Metadata.generated.xml | 243 ------- base/source/Transforms/Metadata.xml | 14 +- .../source/Additions/ResultCallbackImpl.cs | 123 ---- basement/source/Basement.csproj | 2 +- basement/source/Properties/AssemblyInfo.cs | 2 - .../source/Transforms/Metadata.generated.xml | 643 ------------------ basement/source/Transforms/Metadata.xml | 6 +- 9 files changed, 161 insertions(+), 1175 deletions(-) diff --git a/base/source/Additions/ResultCallbackImpl.cs b/base/source/Additions/ResultCallbackImpl.cs index b9ce5dd97..45c900577 100644 --- a/base/source/Additions/ResultCallbackImpl.cs +++ b/base/source/Additions/ResultCallbackImpl.cs @@ -1,158 +1,132 @@ -//using System; -//using Android.Runtime; -//using Java.Util.Concurrent; -//using Android.OS; -//using System.Threading.Tasks; -//using System.Runtime.CompilerServices; -// -//namespace Android.Gms.Common.Apis -//{ -// public class ResultCallback : Java.Lang.Object, IResultCallback where TResult : class, IResult -// { -// public ResultCallback (Action handler) -// { -// OnResultHandler = handler; -// } -// -// public Action OnResultHandler { get; private set; } -// -// public void OnResult (Java.Lang.Object result) -// { -// var h = OnResultHandler; -// if (h != null) -// h(result.JavaCast ()); -// } -// } -// -// public class AwaitableResultCallback : Java.Lang.Object, IResultCallback where TResult : class, IResult -// { -// public AwaitableResultCallback () -// { -// taskCompletionSource = new TaskCompletionSource (); -// } -// -// TaskCompletionSource taskCompletionSource; -// -// public void OnResult (Java.Lang.Object result) -// { -// var r = result.JavaCast (); -// -// taskCompletionSource.SetResult (r); -// } -// -// public Task AwaitAsync () -// { -// return taskCompletionSource.Task; -// } -// -// public TaskAwaiter GetAwaiter () -// { -// return taskCompletionSource.Task.GetAwaiter (); -// } -// } -// -// public static class IPendingResultExtensions -// { -// public static void SetResultCallback (this IPendingResult pr, Action callback) where TResult : class, IResult -// { -// pr.SetResultCallback (new ResultCallback (callback)); -// } -// -// public static Task AsAsync (this IPendingResult pr) where TResult : class, IResult -// { -// var rc = new AwaitableResultCallback (); -// -// pr.SetResultCallback (rc); -// -// return rc.AwaitAsync (); -// } -// -// public static async Task AsAsync (this IPendingResult pr) -// { -// var rc = new AwaitableResultCallback (); -// -// pr.SetResultCallback (rc); -// -// await rc.AwaitAsync (); -// } -// -// public static TaskAwaiter GetAwaiter(this IPendingResult pr) where TResult : class, IResult -// { -// var rc = new AwaitableResultCallback (); -// -// pr.SetResultCallback (rc); -// -// return rc.GetAwaiter (); -// } -// -// public static TaskAwaiter GetAwaiter (this IPendingResult pr) -// { -// var rc = new AwaitableResultCallback (); -// -// pr.SetResultCallback (rc); -// -// return rc.GetAwaiter (); -// } -// } -// -// public partial class GoogleApiClientBuilder -// { -// public GoogleApiClientBuilder AddConnectionCallbacks (Action connectedCallback, Action connectionSuspendedCallback) -// { -// return AddConnectionCallbacks (new IGoogleApiClientConnectionCallbacksImpl (connectedCallback, connectionSuspendedCallback)); -// } -// -// public GoogleApiClientBuilder AddOnConnectionFailedListener (Action callback) -// { -// return AddOnConnectionFailedListener (new IGoogleApiClientOnConnectionFailedListenerImpl (callback)); -// } -// -// public GoogleApiClientBuilder EnableAutoManage (Android.Support.V4.App.FragmentActivity fragmentActivity, int clientId, Action unresolvedConnectionFailedHandler) -// { -// return EnableAutoManage (fragmentActivity, clientId, new IGoogleApiClientOnConnectionFailedListenerImpl (unresolvedConnectionFailedHandler)); -// } -// } -// -// internal class IGoogleApiClientConnectionCallbacksImpl : Java.Lang.Object, IGoogleApiClientConnectionCallbacks -// { -// public IGoogleApiClientConnectionCallbacksImpl (Action onConnectedHandler, Action onConnectionSuspendedHandler) -// { -// OnConnectedHandler = onConnectedHandler; -// OnConnectionSuspendedHandler = onConnectionSuspendedHandler; -// } -// -// public Action OnConnectedHandler { get; private set; } -// public Action OnConnectionSuspendedHandler { get; private set; } -// -// public void OnConnected (Bundle bundle) -// { -// var h = OnConnectedHandler; -// if (h != null) -// h (bundle); -// } -// -// public void OnConnectionSuspended (int cause) -// { -// var h = OnConnectionSuspendedHandler; -// if (h != null) -// h (cause); -// } -// } -// -// internal class IGoogleApiClientOnConnectionFailedListenerImpl : Java.Lang.Object, IGoogleApiClientOnConnectionFailedListener -// { -// public IGoogleApiClientOnConnectionFailedListenerImpl (Action handler) -// { -// OnConnectionFailedHandler = handler; -// } -// -// public Action OnConnectionFailedHandler { get; private set; } -// -// public void OnConnectionFailed (Android.Gms.Common.ConnectionResult result) -// { -// var h = OnConnectionFailedHandler; -// if (h != null) -// h (result); -// } -// } -//} +using System; +using Android.Runtime; +using Java.Util.Concurrent; +using Android.OS; +using System.Threading.Tasks; +using System.Runtime.CompilerServices; + +namespace Android.Gms.Common.Apis +{ + public static class IPendingResultExtensions + { + public static void SetResultCallback (this PendingResult pr, Action callback) where TResult : class, IResult + { + pr.SetResultCallback (new ResultCallback (callback)); + } + + public static Task AsAsync (this PendingResult pr) where TResult : class, IResult + { + var rc = new AwaitableResultCallback (); + + pr.SetResultCallback (rc); + + return rc.AwaitAsync (); + } + + public static async Task AsAsync (this PendingResult pr) + { + var rc = new AwaitableResultCallback (); + + pr.SetResultCallback (rc); + + await rc.AwaitAsync (); + } + + public static TaskAwaiter GetAwaiter (this PendingResult pr) where TResult : class, IResult + { + var rc = new AwaitableResultCallback (); + + pr.SetResultCallback (rc); + + return rc.GetAwaiter (); + } + + public static TaskAwaiter GetAwaiter (this PendingResult pr) + { + var rc = new AwaitableResultCallback (); + + pr.SetResultCallback (rc); + + return rc.GetAwaiter (); + } + } + + public partial class GoogleApiClient + { + public partial class Builder + { + public Builder AddConnectionCallbacks (Action connectedCallback, Action connectionSuspendedCallback) + { + return AddConnectionCallbacks (new GoogleApiClientConnectionCallbacksImpl (connectedCallback, connectionSuspendedCallback)); + } + + public Builder AddConnectionCallbacks (Action connectedCallback) + { + return AddConnectionCallbacks (new GoogleApiClientConnectionCallbacksImpl (connectedCallback, null)); + } + + public Builder AddConnectionCallbacks (Action connectedCallback) + { + return AddConnectionCallbacks (new GoogleApiClientConnectionCallbacksImpl (h => connectedCallback (), null)); + } + + public Builder AddOnConnectionFailedListener (Action callback) + { + return AddOnConnectionFailedListener (new GoogleApiClientOnConnectionFailedListenerImpl (callback)); + } + + public Builder EnableAutoManage (Android.Support.V4.App.FragmentActivity fragmentActivity, int clientId, Action unresolvedConnectionFailedHandler) + { + return EnableAutoManage (fragmentActivity, clientId, new GoogleApiClientOnConnectionFailedListenerImpl (unresolvedConnectionFailedHandler)); + } + + public Builder EnableAutoManage (Android.Support.V4.App.FragmentActivity fragmentActivity, Action unresolvedConnectionFailedHandler) + { + return EnableAutoManage (fragmentActivity, new GoogleApiClientOnConnectionFailedListenerImpl (unresolvedConnectionFailedHandler)); + } + } + } + + internal class GoogleApiClientConnectionCallbacksImpl : Java.Lang.Object, GoogleApiClient.IConnectionCallbacks + { + public GoogleApiClientConnectionCallbacksImpl (Action onConnectedHandler, Action onConnectionSuspendedHandler) + { + OnConnectedHandler = onConnectedHandler; + OnConnectionSuspendedHandler = onConnectionSuspendedHandler; + } + + public Action OnConnectedHandler { get; private set; } + public Action OnConnectionSuspendedHandler { get; private set; } + + public void OnConnected (Bundle bundle) + { + var h = OnConnectedHandler; + if (h != null) + h (bundle); + } + + public void OnConnectionSuspended (int cause) + { + var h = OnConnectionSuspendedHandler; + if (h != null) + h (cause); + } + } + + internal class GoogleApiClientOnConnectionFailedListenerImpl : Java.Lang.Object, GoogleApiClient.IOnConnectionFailedListener + { + public GoogleApiClientOnConnectionFailedListenerImpl (Action handler) + { + OnConnectionFailedHandler = handler; + } + + public Action OnConnectionFailedHandler { get; private set; } + + public void OnConnectionFailed (Android.Gms.Common.ConnectionResult result) + { + var h = OnConnectionFailedHandler; + if (h != null) + h (result); + } + } +} diff --git a/base/source/Base.csproj b/base/source/Base.csproj index 61d6bdd2a..b6d88442b 100644 --- a/base/source/Base.csproj +++ b/base/source/Base.csproj @@ -17,6 +17,8 @@ + 8.0.30703 + 2.0 true @@ -55,8 +57,9 @@ Properties\GpsConsts.cs - + + @@ -79,6 +82,14 @@ {6A38FACF-F0C5-4A49-8A8A-7CE6634207CE} Basement + + {865652D3-8D1A-4779-92FC-4C54719286B7} + Firebase-Common + + + {53F87D88-8871-41A2-9F81-B79AB02FEC24} + Tasks + diff --git a/base/source/Transforms/Metadata.generated.xml b/base/source/Transforms/Metadata.generated.xml index 49c0c7699..26c2f6238 100644 --- a/base/source/Transforms/Metadata.generated.xml +++ b/base/source/Transforms/Metadata.generated.xml @@ -1,245 +1,2 @@ - context - token - context - eventIndex - accountName - ctx - accountName - context - account - scope - context - account - scope - extras - context - accountName - scope - context - accountName - scope - extras - context - account - scope - extras - context - account - scope - extras - callback - context - account - scope - extras - authority - syncBundle - context - accountName - scope - extras - context - accountName - scope - extras - callback - context - accountName - scope - extras - authority - syncBundle - context - token - dialog - dialog - cancelListener - dialog - savedInstanceState - manager - tag - activity - errorCode - requestCode - activity - errorCode - requestCode - cancelListener - context - errorCode - requestCode - errorCode - context - context - errorCode - activity - errorCode - requestCode - activity - errorCode - requestCode - cancelListener - context - errorCode - errorCode - activity - requestCode - errorCode - activity - requestCode - cancelListener - errorCode - context - requestCode - errorCode - context - context - context - context - errorCode - errorCode - activity - requestCode - errorCode - activity - requestCode - cancelListener - errorCode - activity - fragment - requestCode - cancelListener - errorCode - context - context - context - attrs - context - attrs - defStyle - view - colorScheme - enabled - listener - scopes - buttonSize - buttonSize - colorScheme - buttonSize - colorScheme - scopes - dialog - dialog - cancelListener - dialog - savedInstanceState - manager - tag - dataHolder - teleportee - dest - flags - position - count - position - count - fromPosition - toPosition - count - position - count - observer - observer - observer - position - count - position - count - fromPosition - toPosition - count - position - count - observer - buffer - buffer - buffer - buffer - columns - windows - statusCode - metadata - dest - flags - list - array - iterable - objValue - column - column - column - column - column - column - position - context - imageView - resId - imageView - uri - imageView - uri - defaultResId - listener - uri - listener - uri - defaultResId - width - height - objValue - stringValue - url - url - width - height - json - other - output - flags - objValue - objValue - buttonSize - colorScheme - scopes - dest - flags - code - data - reply - flags - savedInstanceState - inflater - container - savedInstanceState - activity - attrs - savedInstanceState - outState - canvas - who - bounds - who - what - when - alpha - cf - durationMillis - who - what - canvas - widthMeasureSpec - heightMeasureSpec - objValue diff --git a/base/source/Transforms/Metadata.xml b/base/source/Transforms/Metadata.xml index fce2ba17b..7675cc9d1 100644 --- a/base/source/Transforms/Metadata.xml +++ b/base/source/Transforms/Metadata.xml @@ -8,14 +8,16 @@ Android.Gms.Common.Images Android.Gms.Common.Internal Android.Gms.Common.Api.Internal - + Android.Gms.Auth.Api.SignIn + Android.Gms.Auth.Api.SignIn.Internal + Android.Gms.Common.Apis + Android.Gms.SignIn.Internal - - + @@ -34,6 +36,12 @@ Java.Lang.Object Java.Lang.Object[] + + + + + + source size diff --git a/basement/source/Additions/ResultCallbackImpl.cs b/basement/source/Additions/ResultCallbackImpl.cs index dc1fe93a8..e2f7bb16c 100644 --- a/basement/source/Additions/ResultCallbackImpl.cs +++ b/basement/source/Additions/ResultCallbackImpl.cs @@ -50,127 +50,4 @@ public TaskAwaiter GetAwaiter () return taskCompletionSource.Task.GetAwaiter (); } } - - public static class IPendingResultExtensions - { - public static void SetResultCallback (this PendingResult pr, Action callback) where TResult : class, IResult - { - pr.SetResultCallback (new ResultCallback (callback)); - } - - public static Task AsAsync (this PendingResult pr) where TResult : class, IResult - { - var rc = new AwaitableResultCallback (); - - pr.SetResultCallback (rc); - - return rc.AwaitAsync (); - } - - public static async Task AsAsync (this PendingResult pr) - { - var rc = new AwaitableResultCallback (); - - pr.SetResultCallback (rc); - - await rc.AwaitAsync (); - } - - public static TaskAwaiter GetAwaiter(this PendingResult pr) where TResult : class, IResult - { - var rc = new AwaitableResultCallback (); - - pr.SetResultCallback (rc); - - return rc.GetAwaiter (); - } - - public static TaskAwaiter GetAwaiter (this PendingResult pr) - { - var rc = new AwaitableResultCallback (); - - pr.SetResultCallback (rc); - - return rc.GetAwaiter (); - } - } - - public partial class GoogleApiClient - { - public partial class Builder - { - public Builder AddConnectionCallbacks (Action connectedCallback, Action connectionSuspendedCallback) - { - return AddConnectionCallbacks (new GoogleApiClientConnectionCallbacksImpl (connectedCallback, connectionSuspendedCallback)); - } - - public Builder AddConnectionCallbacks (Action connectedCallback) - { - return AddConnectionCallbacks (new GoogleApiClientConnectionCallbacksImpl (connectedCallback, null)); - } - - public Builder AddConnectionCallbacks (Action connectedCallback) - { - return AddConnectionCallbacks (new GoogleApiClientConnectionCallbacksImpl (h => connectedCallback (), null)); - } - - public Builder AddOnConnectionFailedListener (Action callback) - { - return AddOnConnectionFailedListener (new GoogleApiClientOnConnectionFailedListenerImpl (callback)); - } - - public Builder EnableAutoManage (Android.Support.V4.App.FragmentActivity fragmentActivity, int clientId, Action unresolvedConnectionFailedHandler) - { - return EnableAutoManage (fragmentActivity, clientId, new GoogleApiClientOnConnectionFailedListenerImpl (unresolvedConnectionFailedHandler)); - } - - public Builder EnableAutoManage (Android.Support.V4.App.FragmentActivity fragmentActivity, Action unresolvedConnectionFailedHandler) - { - return EnableAutoManage (fragmentActivity, new GoogleApiClientOnConnectionFailedListenerImpl (unresolvedConnectionFailedHandler)); - } - } - } - - internal class GoogleApiClientConnectionCallbacksImpl : Java.Lang.Object, GoogleApiClient.IConnectionCallbacks - { - public GoogleApiClientConnectionCallbacksImpl (Action onConnectedHandler, Action onConnectionSuspendedHandler) - { - OnConnectedHandler = onConnectedHandler; - OnConnectionSuspendedHandler = onConnectionSuspendedHandler; - } - - public Action OnConnectedHandler { get; private set; } - public Action OnConnectionSuspendedHandler { get; private set; } - - public void OnConnected (Bundle bundle) - { - var h = OnConnectedHandler; - if (h != null) - h (bundle); - } - - public void OnConnectionSuspended (int cause) - { - var h = OnConnectionSuspendedHandler; - if (h != null) - h (cause); - } - } - - internal class GoogleApiClientOnConnectionFailedListenerImpl : Java.Lang.Object, GoogleApiClient.IOnConnectionFailedListener - { - public GoogleApiClientOnConnectionFailedListenerImpl (Action handler) - { - OnConnectionFailedHandler = handler; - } - - public Action OnConnectionFailedHandler { get; private set; } - - public void OnConnectionFailed (Android.Gms.Common.ConnectionResult result) - { - var h = OnConnectionFailedHandler; - if (h != null) - h (result); - } - } } diff --git a/basement/source/Basement.csproj b/basement/source/Basement.csproj index e86137bb7..ad6683d6d 100644 --- a/basement/source/Basement.csproj +++ b/basement/source/Basement.csproj @@ -57,7 +57,7 @@ Properties\GpsConsts.cs - + diff --git a/basement/source/Properties/AssemblyInfo.cs b/basement/source/Properties/AssemblyInfo.cs index ffd7b5f84..508b3d497 100644 --- a/basement/source/Properties/AssemblyInfo.cs +++ b/basement/source/Properties/AssemblyInfo.cs @@ -26,8 +26,6 @@ //[assembly: AssemblyDelaySign(false)] //[assembly: AssemblyKeyFile("")] -[assembly:MetaData ("com.google.android.gms.version", Value = "@integer/google_play_services_version")] - [assembly: Java.Interop.JavaLibraryReference ("classes.jar", PackageName = __Consts.PackageName, SourceUrl = __GpsConsts.Url, diff --git a/basement/source/Transforms/Metadata.generated.xml b/basement/source/Transforms/Metadata.generated.xml index e46ca3c52..26c2f6238 100644 --- a/basement/source/Transforms/Metadata.generated.xml +++ b/basement/source/Transforms/Metadata.generated.xml @@ -1,645 +1,2 @@ - context - context - timeoutInMillis - context - shouldSkipGmsCoreVersionCheck - advertisingId - limitAdTrackingEnabled - id - accountName - changeType - eventIndex - changeData - that - dest - flags - account - accountName - eventIndex - dest - flags - events - dest - flags - errValue - msg - throwable - throwable - oValue - output - flags - msg - intent - errValue - context - token - context - eventIndex - accountName - ctx - accountName - context - account - scope - context - account - scope - extras - context - accountName - scope - context - accountName - scope - extras - context - token - account - objValue - output - flags - objValue - output - flags - objValue - output - flags - googleSignInOptions - serverClientId - scope - scopes - serverClientId - serverClientId - forceCodeForRefreshToken - accountName - hostedDomain - SignInAccount - status - output - flags - nameValue - consumerPkgName - objValue - output - flags - oValue - dest - flags - dest - flags - dest - flags - nameValue - playLoggerContext - logEvent - extensionProducer - clientVisualElementsProducer - testCodes - other - output - flags - selectedAccount - allowableAccounts - allowableAccountTypes - alwaysPromptForAccount - descriptionOverrideText - addAccountAuthTokenType - addAccountRequiredFeatures - addAccountOptions - statusCode - statusCode - pendingIntent - statusCode - pendingIntent - message - oValue - activity - requestCode - output - flags - errorCode - msg - intent - nameValue - service - nameValue - context - errorCode - requestCode - errorCode - context - context - errorCode - errorCode - context - requestCode - errorCode - context - context - context - context - errorCode - nameValue - clientBuilder - clientKey - prefix - fd - writer - args - status - googleApiClient - pendingResult - resultToken - status - value - objValue - statusCode - timeout - unit - signInMode - prefix - fd - writer - args - prefix - fd - writer - args - api - api - listener - listener - listener - listener - lifecycleActivity - listener - listener - context - context - connectedListener - connectionFailedListener - api - api - options - api - options - scopes - api - scopes - listener - listener - scope - fragmentActivity - clientId - unresolvedConnectionFailedListener - fragmentActivity - unresolvedConnectionFailedListener - accountName - gravityForPopups - handler - viewForPopups - connectionHint - cause - result - time - units - callback - callback - time - units - transform - result - result - result - activity - requestCode - result - result - result - result - status - status - scopeUri - oValue - dest - flags - statusCode - statusCode - statusMessage - statusCode - statusMessage - pendingIntent - objValue - activity - requestCode - output - flags - callbacks - transform - time - units - callback - callback - time - units - transform - msg - connectionHint - result - cause - timeout - unit - prefix - fd - writer - args - api - connectionHint - cause - connectionHint - cause - connectionHint - cause - timeout - unit - signInMode - prefix - fd - writer - args - api - api - listener - listener - listener - listener - lifecycleActivity - listener - listener - connectionHint - cause - timeout - unit - prefix - fd - writer - args - api - connectionHint - cause - code - data - reply - flags - timeout - unit - prefix - fd - writer - args - api - time - units - callback - callback - time - units - time - units - callback - callback - time - units - transform - prefix - fd - writer - args - requestCode - resultCode - data - dialogInterface - savedInstanceState - outState - callbacks - result - transform - dest - flags - binder - dest - flags - serviceId - dest - flags - account - sessionId - signInAccountHint - dest - flags - oValue - dest - flags - dest - flags - oValue - dialog - which - prefix - fd - writer - args - result - cause - component - binder - component - msg - listener - listener - listener - listener - listener - listener - component - binder - component - code - data - reply - flags - code - data - reply - flags - code - data - reply - flags - code - data - reply - flags - code - data - reply - flags - aValue - bValue - objects - versionCode - nameSpace - typeNum - output - flags - output - flags - output - flags - output - flags - typeIn - typeInArray - typeOut - typeOutArray - outputFieldName - safeParcelableFieldId - concreteType - converter - output - output - flags - rootClazz - output - flags - output - flags - output - flags - output - flags - timeMillis - eventType - callingProcess - callingService - targetProcess - targetService - stackTrace - connKey - elapsedRealtime - heapAlloc - output - flags - timeMillis - eventType - wakelockName - wakelockType - callingPackages - eventKey - elapsedRealtime - deviceState - secondaryWakeLockName - hostPackageName - beginPowerPercentage - timeout - output - flags - hasMenu - menuVisible - retain - isVisibleToUser - intent - intent - requestCode - hasMenu - menuVisible - retain - isVisibleToUser - intent - intent - requestCode - code - data - reply - flags - code - data - reply - flags - hasMenu - menuVisible - retain - isVisibleToUser - intent - intent - requestCode - key - defaultVal - source - key - defaultVal - source - key - defaultVal - source - key - defaultVal - source - wrappedContext - code - data - reply - flags - code - data - reply - flags - code - data - reply - flags - code - data - reply - flags - code - data - reply - flags - code - data - reply - flags - objectValue - collection - objectValue - objectValue - runnable - key - defaultVal - source - key - defaultVal - source - key - defaultVal - source - key - defaultVal - source - context - objValue - code - data - reply - flags - timeout - value - output - oValue - field1 - field2 - field1 - field2 - field1 - field2 - field1 - field2 - field - field - field - field - msg - data - msg - data - off - len - aValue - bValue - msg - msg - data - offset - length - output - oValue - output - oValue - output - oValue - output - oValue - output - oValue - output - eventTime - eventUptime - tag - sourceExtensionBytes - extras - output - flags - versionCode - packageName - packageVersionCode - logSource - uploadAccountName - loggingId - logAndroidId - logSourceName - isAnonymous - qosTier - packageName - packageVersionCode - logSource - logSourceName - uploadAccountName - loggingId - isAnonymous - qosTier - packageName - packageVersionCode - logSource - uploadAccountName - loggingId - logAndroidId - objectValue - output - flags - code - data - reply - flags - connectionHint - result - cause - context - context - listener - connectionResultCode - rawAuthResolutionIntent - dest - flags - dest - flags - dest - flags - resolveAccountRequest - dest - flags - connectionResultStatusCode - result - resolveAccountResponse - dest - flags - code - data - reply - flags - code - data - reply - flags diff --git a/basement/source/Transforms/Metadata.xml b/basement/source/Transforms/Metadata.xml index 7838acd7d..c6b9d1bdd 100644 --- a/basement/source/Transforms/Metadata.xml +++ b/basement/source/Transforms/Metadata.xml @@ -7,9 +7,9 @@ Android.Gms.Auth.Api.Credentials - Android.Gms.Auth.Api.SignIn Android.Gms.Auth.Api.SignIn.Internal Android.Gms.Auth.FirstParty.Shared + Android.Gms.Actions Android.Gms.Common Android.Gms.Clearcut Android.Gms.Common.Annotations @@ -21,8 +21,10 @@ Android.Gms.Common.Server.Converter Android.Gms.Common.Server.Response Android.Gms.Common.Stats + Android.Gms.Common.Util Android.Gms.Dynamic Android.Gms.Dynamite.Descriptors.Flags + Android.Gms.Iid Android.Gms.Security @@ -101,4 +103,6 @@ dest flags + + From 9c4b1ffc3797c90824d97a8a2997c8910eafd8a5 Mon Sep 17 00:00:00 2001 From: Redth Date: Wed, 1 Jun 2016 13:41:19 -0400 Subject: [PATCH 007/178] Remove unused extensions from play-services-analytics They were moved into play-services-tagmanager --- .../Additions/IPendingResultExtensions.cs | 32 ------------------- 1 file changed, 32 deletions(-) delete mode 100644 analytics/source/Additions/IPendingResultExtensions.cs diff --git a/analytics/source/Additions/IPendingResultExtensions.cs b/analytics/source/Additions/IPendingResultExtensions.cs deleted file mode 100644 index 2c39d643a..000000000 --- a/analytics/source/Additions/IPendingResultExtensions.cs +++ /dev/null @@ -1,32 +0,0 @@ -using System; -using System.Threading.Tasks; -using Android.Gms.Common.Apis; -using Android.Runtime; - -namespace Android.Gms.Tagmanager { - public partial class TagManagerClass { - public async Task LoadContainerDefaultOnlyAsync (string containerId, int defaultContainerResourceId) { - return (await LoadContainerDefaultOnly (containerId, defaultContainerResourceId)).JavaCast (); - } - - public async Task LoadContainerDefaultOnlyAsync (string containerId, int defaultContainerResourceId, Android.OS.Handler handler) { - return (await LoadContainerDefaultOnly (containerId, defaultContainerResourceId, handler)).JavaCast (); - } - - public async Task LoadContainerPreferFreshAsync (string containerId, int defaultContainerResourceId) { - return (await LoadContainerPreferFresh (containerId, defaultContainerResourceId)).JavaCast (); - } - - public async Task LoadContainerPreferFreshAsync (string containerId, int defaultContainerResourceId, Android.OS.Handler handler) { - return (await LoadContainerPreferFresh (containerId, defaultContainerResourceId, handler)).JavaCast (); - } - - public async Task LoadContainerPreferNonDefaultAsync (string containerId, int defaultContainerResourceId) { - return (await LoadContainerPreferNonDefault (containerId, defaultContainerResourceId)).JavaCast (); - } - - public async Task LoadContainerPreferNonDefaultAsync (string containerId, int defaultContainerResourceId, Android.OS.Handler handler) { - return (await LoadContainerPreferNonDefault (containerId, defaultContainerResourceId, handler)).JavaCast (); - } - } -} \ No newline at end of file From 91bdadebbff3e44d0a142359beb24542de06b1be Mon Sep 17 00:00:00 2001 From: Redth Date: Wed, 1 Jun 2016 13:42:21 -0400 Subject: [PATCH 008/178] Added play-services-ads-lite binding play-services-ads now depends on this --- ...Xamarin.GooglePlayServices.Ads.Lite.nuspec | 27 +++++ ads-lite/source/Additions/AboutAdditions.txt | 48 +++++++++ .../source/Additions/Manifest.cs | 0 ads-lite/source/Ads.Lite.csproj | 74 ++++++++++++++ ads-lite/source/Jars/AboutJars.txt | 37 +++++++ ads-lite/source/Properties/AssemblyInfo.cs | 47 +++++++++ ads-lite/source/Transforms/EnumFields.xml | 18 ++++ ads-lite/source/Transforms/EnumMethods.xml | 18 ++++ .../source/Transforms/Metadata.generated.xml | 2 + ads-lite/source/Transforms/Metadata.xml | 99 +++++++++++++++++++ 10 files changed, 370 insertions(+) create mode 100644 ads-lite/nuget/Xamarin.GooglePlayServices.Ads.Lite.nuspec create mode 100644 ads-lite/source/Additions/AboutAdditions.txt rename {ads => ads-lite}/source/Additions/Manifest.cs (100%) create mode 100644 ads-lite/source/Ads.Lite.csproj create mode 100644 ads-lite/source/Jars/AboutJars.txt create mode 100644 ads-lite/source/Properties/AssemblyInfo.cs create mode 100644 ads-lite/source/Transforms/EnumFields.xml create mode 100644 ads-lite/source/Transforms/EnumMethods.xml create mode 100644 ads-lite/source/Transforms/Metadata.generated.xml create mode 100644 ads-lite/source/Transforms/Metadata.xml diff --git a/ads-lite/nuget/Xamarin.GooglePlayServices.Ads.Lite.nuspec b/ads-lite/nuget/Xamarin.GooglePlayServices.Ads.Lite.nuspec new file mode 100644 index 000000000..30ddbde3b --- /dev/null +++ b/ads-lite/nuget/Xamarin.GooglePlayServices.Ads.Lite.nuspec @@ -0,0 +1,27 @@ + + + + Xamarin.GooglePlayServices.Ads.Lite + Xamarin Google Play Services - Ads Lite + $version$ + Xamarin Inc. + Xamarin Inc. + true + Xamarin.Android Bindings for Google Play Services - Ads Lite + + Xamarin.Android Bindings for Google Play Services - Ads Lite + + The Google Mobile Ads SDK is the latest generation in Google mobile advertising, featuring refined ad formats and streamlined APIs for access to mobile ad networks and advertising solutions. The SDK enables mobile app developers to maximize their monetization in native mobile apps. + + Copyright 2013-2016 + https://github.com/xamarin/GooglePlayServicesComponents/ + https://github.com/xamarin/GooglePlayServicesComponents/blob/master/LICENSE.md + https://xamarin-component-icons.s3.amazonaws.com/Xamarin.GooglePlayServices.Ads.Lite.png + + + + + + + + diff --git a/ads-lite/source/Additions/AboutAdditions.txt b/ads-lite/source/Additions/AboutAdditions.txt new file mode 100644 index 000000000..c511f1d4e --- /dev/null +++ b/ads-lite/source/Additions/AboutAdditions.txt @@ -0,0 +1,48 @@ +Additions allow you to add arbitrary C# to the generated classes +before they are compiled. This can be helpful for providing convenience +methods or adding pure C# classes. + +== Adding Methods to Generated Classes == + +Let's say the library being bound has a Rectangle class with a constructor +that takes an x and y position, and a width and length size. It will look like +this: + +public partial class Rectangle +{ + public Rectangle (int x, int y, int width, int height) + { + // JNI bindings + } +} + +Imagine we want to add a constructor to this class that takes a Point and +Size structure instead of 4 ints. We can add a new file called Rectangle.cs +with a partial class containing our new method: + +public partial class Rectangle +{ + public Rectangle (Point location, Size size) : + this (location.X, location.Y, size.Width, size.Height) + { + } +} + +At compile time, the additions class will be added to the generated class +and the final assembly will a Rectangle class with both constructors. + + +== Adding C# Classes == + +Another thing that can be done is adding fully C# managed classes to the +generated library. In the above example, let's assume that there isn't a +Point class available in Java or our library. The one we create doesn't need +to interact with Java, so we'll create it like a normal class in C#. + +By adding a Point.cs file with this class, it will end up in the binding library: + +public class Point +{ + public int X { get; set; } + public int Y { get; set; } +} diff --git a/ads/source/Additions/Manifest.cs b/ads-lite/source/Additions/Manifest.cs similarity index 100% rename from ads/source/Additions/Manifest.cs rename to ads-lite/source/Additions/Manifest.cs diff --git a/ads-lite/source/Ads.Lite.csproj b/ads-lite/source/Ads.Lite.csproj new file mode 100644 index 000000000..09cd6c3aa --- /dev/null +++ b/ads-lite/source/Ads.Lite.csproj @@ -0,0 +1,74 @@ + + + + Debug + AnyCPU + {EFBA0AD7-5A72-4C68-AF49-83D382785DCF};{10368E6C-D01B-4462-8E8B-01FC667A7035};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + 8.0.30703 + 2.0 + {ECB1F68B-B588-4F3B-9A86-510CF4AAA784} + Library + GooglePlayServices.Ads.Lite + Resources + Assets + False + Xamarin.GooglePlayServices.Ads.Lite + v4.1 + ..\..\externals\docs\reference + + + true + full + false + bin\Debug + DEBUG; + prompt + 4 + None + false + + + full + true + bin\Release + prompt + 4 + false + false + + + + + + + + + + + Properties\GpsConsts.cs + + + + + + + + + + + + + + + + + {6A38FACF-F0C5-4A49-8A8A-7CE6634207CE} + Basement + + + + + Jars\play-services-ads-lite.jar + + + \ No newline at end of file diff --git a/ads-lite/source/Jars/AboutJars.txt b/ads-lite/source/Jars/AboutJars.txt new file mode 100644 index 000000000..320a154be --- /dev/null +++ b/ads-lite/source/Jars/AboutJars.txt @@ -0,0 +1,37 @@ +This directory is for Android .jars. + +There are 4 types of jars that are supported: + +== Input Jar and Embedded Jar == + +This is the jar that bindings should be generated for. + +For example, if you were binding the Google Maps library, this would +be Google's "maps.jar". + +The difference between EmbeddedJar and InputJar is, EmbeddedJar is to be +embedded in the resulting dll as EmbeddedResource, while InputJar is not. +There are couple of reasons you wouldn't like to embed the target jar +in your dll (the ones that could be internally loaded by +feature e.g. maps.jar, or you cannot embed jars that are under some +proprietary license). + +Set the build action for these jars in the properties page to "InputJar". + + +== Reference Jar and Embedded Reference Jar == + +These are jars that are referenced by the input jar. C# bindings will +not be created for these jars. These jars will be used to resolve +types used by the input jar. + +NOTE: Do not add "android.jar" as a reference jar. It will be added automatically +based on the Target Framework selected. + +Set the build action for these jars in the properties page to "ReferenceJar". + +"EmbeddedJar" works like "ReferenceJar", but like "EmbeddedJar", it is +embedded in your dll. But at application build time, they are not included +in the final apk, like ReferenceJar files. + + diff --git a/ads-lite/source/Properties/AssemblyInfo.cs b/ads-lite/source/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..4ecfafec1 --- /dev/null +++ b/ads-lite/source/Properties/AssemblyInfo.cs @@ -0,0 +1,47 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using Android.App; + +// Information about this assembly is defined by the following attributes. +// Change them to the values specific to your project. + +[assembly: AssemblyTitle ("Xamarin.GooglePlayServices.Ads.Lite")] +[assembly: AssemblyDescription ("")] +[assembly: AssemblyConfiguration ("")] +[assembly: AssemblyCompany ("Xamarin")] +[assembly: AssemblyProduct ("")] +[assembly: AssemblyCopyright ("Xamarin")] +[assembly: AssemblyTrademark ("")] +[assembly: AssemblyCulture ("")] + +// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}". +// The form "{Major}.{Minor}.*" will automatically update the build and revision, +// and "{Major}.{Minor}.{Build}.*" will update just the revision. + +[assembly: AssemblyVersion ("1.0.0")] + +// The following attributes are used to specify the signing key for the assembly, +// if desired. See the Mono documentation for more information about signing. + +//[assembly: AssemblyDelaySign(false)] +//[assembly: AssemblyKeyFile("")] + +[assembly: Java.Interop.JavaLibraryReference ("classes.jar", + PackageName = __Consts.PackageName, + SourceUrl = __GpsConsts.Url, + EmbeddedArchive = __Consts.AarPath, + Version = __GpsConsts.Version)] +// AppCompat-v7 resources +[assembly: Android.IncludeAndroidResourcesFromAttribute ("./", + PackageName = __Consts.PackageName, + SourceUrl = __GpsConsts.Url, + EmbeddedArchive = __Consts.AarPath, + Version = __GpsConsts.Version)] + +// Google Addon feed with GPS in it: +// https://dl-ssl.google.com/android/repository/addon.xml + +static class __Consts { + public const string PackageName = "GPS Ads Lite"; + public const string AarPath = "m2repository/com/google/android/gms/play-services-ads-lite/" + __GpsConsts.Version + "/play-services-ads-lite-" + __GpsConsts.Version + ".aar"; +} \ No newline at end of file diff --git a/ads-lite/source/Transforms/EnumFields.xml b/ads-lite/source/Transforms/EnumFields.xml new file mode 100644 index 000000000..e9af0eeb3 --- /dev/null +++ b/ads-lite/source/Transforms/EnumFields.xml @@ -0,0 +1,18 @@ + + + diff --git a/ads-lite/source/Transforms/EnumMethods.xml b/ads-lite/source/Transforms/EnumMethods.xml new file mode 100644 index 000000000..2efa81467 --- /dev/null +++ b/ads-lite/source/Transforms/EnumMethods.xml @@ -0,0 +1,18 @@ + + + diff --git a/ads-lite/source/Transforms/Metadata.generated.xml b/ads-lite/source/Transforms/Metadata.generated.xml new file mode 100644 index 000000000..26c2f6238 --- /dev/null +++ b/ads-lite/source/Transforms/Metadata.generated.xml @@ -0,0 +1,2 @@ + + diff --git a/ads-lite/source/Transforms/Metadata.xml b/ads-lite/source/Transforms/Metadata.xml new file mode 100644 index 000000000..64f695626 --- /dev/null +++ b/ads-lite/source/Transforms/Metadata.xml @@ -0,0 +1,99 @@ + + + + Google.Ads + Google.Ads.Mediation + Google.Ads.Mediation.Admob + Google.Ads.Mediation.CustomEvent + Google.Ads.Afma.Nano + + Android.Gms.Ads + Android.Gms.Ads.Formats + + Android.Gms.Ads.Reward + Android.Gms.Ads.Reward.Mediation + Android.Gms.Ads.DoubleClick + Android.Gms.Ads.Mediation + Android.Gms.Ads.Mediation.Admob + Android.Gms.Ads.Mediation.CustomEvent + Android.Gms.Ads.Purchase + Android.Gms.Ads.Search + Android.Gms.Internal + + name + data + errorCode + inAppPurchase + productId + inAppPurchaseResult + + + + + + + + + + + + + + + public + + + BannerDismissScreenEventArgs + BannerFailedToReceiveAdEventArgs + BannerLeaveApplicationEventArgs + BannerPresentScreenEventArgs + BannerReceiveAdEventArgs + + IntersitionalDismissScreenEventArgs + IntersitionalFailedToReceiveAdEventArgs + InterstitialLeaveApplicationEventArgs + InterstitialPresentScreenEventArgs + InterstitialReceiveAdEventArgs + + MediationInterstitialAdClickedEventArgs + MediationInterstitialAdClosedEventArgs + MediationInterstitialAdFailedToLoadEventArgs + MediationInterstitialAdLeftApplicationEventArgs + MediationInterstitialAdLoadedEventArgs + MediationInterstitialAdOpenedEventArgs + + MediationBannerAdClickedEventArgs + MediationBannerAdClosedEventArgs + MediationBannerAdFailedToLoadEventArgs + MediationBannerAdLeftApplicationEventArgs + MediationBannerAdLoadedEventArgs + MediationBannerAdOpenedEventArgs + + + ad + ad + ad + ad + + errorCode + + errorCode + errorCode + + + adapter + adapter + errorCode + adapter + adapter + adapter + adapter + + adapter + adapter + errorCode + adapter + adapter + adapter + + From 0e3aafebcaa160c4049eca08704451b04516d6a6 Mon Sep 17 00:00:00 2001 From: Redth Date: Wed, 1 Jun 2016 13:42:40 -0400 Subject: [PATCH 009/178] Remove old type forwards file --- base/source/Additions/BasementTypeForwards.cs | 82 ------------------- 1 file changed, 82 deletions(-) delete mode 100644 base/source/Additions/BasementTypeForwards.cs diff --git a/base/source/Additions/BasementTypeForwards.cs b/base/source/Additions/BasementTypeForwards.cs deleted file mode 100644 index 564076c15..000000000 --- a/base/source/Additions/BasementTypeForwards.cs +++ /dev/null @@ -1,82 +0,0 @@ -//[assembly:System.Runtime.CompilerServices.TypeForwardedTo(typeof(Android.Gms.Auth.AccountChangeEvent))] -//[assembly:System.Runtime.CompilerServices.TypeForwardedTo(typeof(Android.Gms.Auth.AccountChangeEventsRequest))] -//[assembly:System.Runtime.CompilerServices.TypeForwardedTo(typeof(Android.Gms.Auth.AccountChangeEventsResponse))] -//[assembly:System.Runtime.CompilerServices.TypeForwardedTo(typeof(Android.Gms.Auth.GoogleAuthException))] -//[assembly:System.Runtime.CompilerServices.TypeForwardedTo(typeof(Android.Gms.Auth.GoogleAuthUtil))] -//[assembly:System.Runtime.CompilerServices.TypeForwardedTo(typeof(Android.Gms.Auth.GooglePlayServicesAvailabilityException))] -//[assembly:System.Runtime.CompilerServices.TypeForwardedTo(typeof(Android.Gms.Auth.TokenData))] -//[assembly:System.Runtime.CompilerServices.TypeForwardedTo(typeof(Android.Gms.Auth.UserRecoverableAuthException))] -//[assembly:System.Runtime.CompilerServices.TypeForwardedTo(typeof(Android.Gms.Auth.UserRecoverableNotifiedException))] -//[assembly:System.Runtime.CompilerServices.TypeForwardedTo(typeof(Android.Gms.Auth.Api.Auth))] -//[assembly:System.Runtime.CompilerServices.TypeForwardedTo(typeof(Android.Gms.Auth.Api.Consent.GetConsentIntentRequest))] -//[assembly:System.Runtime.CompilerServices.TypeForwardedTo(typeof(Android.Gms.Auth.Api.Credentials.Credential))] -//[assembly:System.Runtime.CompilerServices.TypeForwardedTo(typeof(Android.Gms.Auth.Api.Credentials.CredentialPickerConfig))] -//[assembly:System.Runtime.CompilerServices.TypeForwardedTo(typeof(Android.Gms.Auth.Api.Credentials.CredentialRequest))] -//[assembly:System.Runtime.CompilerServices.TypeForwardedTo(typeof(Android.Gms.Auth.Api.Credentials.CredentialsApi))] -//[assembly:System.Runtime.CompilerServices.TypeForwardedTo(typeof(Android.Gms.Auth.Api.Credentials.CredentialsApiConsts))] -//[assembly:System.Runtime.CompilerServices.TypeForwardedTo(typeof(Android.Gms.Auth.Api.Credentials.ICredentialRequestResult))] -//[assembly:System.Runtime.CompilerServices.TypeForwardedTo(typeof(Android.Gms.Auth.Api.Credentials.ICredentialsApi))] -////[assembly:System.Runtime.CompilerServices.TypeForwardedTo(typeof(Android.Gms.Auth.Api.Credentials.ICredentialsApiExtensions))] -//[assembly:System.Runtime.CompilerServices.TypeForwardedTo(typeof(Android.Gms.Auth.Api.Credentials.IdentityProviders))] -//[assembly:System.Runtime.CompilerServices.TypeForwardedTo(typeof(Android.Gms.Auth.Api.Credentials.IdToken))] -//[assembly:System.Runtime.CompilerServices.TypeForwardedTo(typeof(Android.Gms.Auth.Api.Credentials.PasswordSpecification))] -//[assembly:System.Runtime.CompilerServices.TypeForwardedTo(typeof(Android.Gms.Auth.Api.Credentials.Internal.DeleteRequest))] -//[assembly:System.Runtime.CompilerServices.TypeForwardedTo(typeof(Android.Gms.Auth.Api.Credentials.Internal.SaveRequest))] -//[assembly:System.Runtime.CompilerServices.TypeForwardedTo(typeof(Android.Gms.Auth.Api.Proxy.IProxyApi))] -////[assembly:System.Runtime.CompilerServices.TypeForwardedTo(typeof(Android.Gms.Auth.Api.Proxy.IProxyApiExtensions))] -//[assembly:System.Runtime.CompilerServices.TypeForwardedTo(typeof(Android.Gms.Auth.Api.Proxy.IProxyApiProxyResult))] -//[assembly:System.Runtime.CompilerServices.TypeForwardedTo(typeof(Android.Gms.Auth.Api.Proxy.ProxyGrpcRequest))] -//[assembly:System.Runtime.CompilerServices.TypeForwardedTo(typeof(Android.Gms.Auth.Api.Proxy.ProxyRequest))] -//[assembly:System.Runtime.CompilerServices.TypeForwardedTo(typeof(Android.Gms.Auth.Api.Proxy.ProxyResponse))] -////[assembly:System.Runtime.CompilerServices.TypeForwardedTo(typeof(Android.Gms.Auth.Api.SignIn.EmailSignInConfig))] -////[assembly:System.Runtime.CompilerServices.TypeForwardedTo(typeof(Android.Gms.Auth.Api.SignIn.FacebookSignInConfig))] -//[assembly:System.Runtime.CompilerServices.TypeForwardedTo(typeof(Android.Gms.Auth.Api.SignIn.GoogleSignInAccount))] -////[assembly:System.Runtime.CompilerServices.TypeForwardedTo(typeof(Android.Gms.Auth.Api.SignIn.GoogleSignInConfig))] -//[assembly:System.Runtime.CompilerServices.TypeForwardedTo(typeof(Android.Gms.Auth.Api.SignIn.Internal.SignInConfiguration))] -//[assembly:System.Runtime.CompilerServices.TypeForwardedTo(typeof(Android.Gms.Auth.FirstParty.Shared.FACLConfig))] -//[assembly:System.Runtime.CompilerServices.TypeForwardedTo(typeof(Android.Gms.Auth.FirstParty.Shared.FACLData))] -//[assembly:System.Runtime.CompilerServices.TypeForwardedTo(typeof(Android.Gms.Auth.FirstParty.Shared.ScopeDetail))] -//[assembly:System.Runtime.CompilerServices.TypeForwardedTo(typeof(Android.Gms.Common.AccountPicker))] -//[assembly:System.Runtime.CompilerServices.TypeForwardedTo(typeof(Android.Gms.Common.ConnectionResult))] -//[assembly:System.Runtime.CompilerServices.TypeForwardedTo(typeof(Android.Gms.Common.ErrorDialogFragment))] -//[assembly:System.Runtime.CompilerServices.TypeForwardedTo(typeof(Android.Gms.Common.GoogleApiAvailability))] -//[assembly:System.Runtime.CompilerServices.TypeForwardedTo(typeof(Android.Gms.Common.GooglePlayServicesNotAvailableException))] -//[assembly:System.Runtime.CompilerServices.TypeForwardedTo(typeof(Android.Gms.Common.GooglePlayServicesRepairableException))] -//[assembly:System.Runtime.CompilerServices.TypeForwardedTo(typeof(Android.Gms.Common.GooglePlayServicesUtil))] -//[assembly:System.Runtime.CompilerServices.TypeForwardedTo(typeof(Android.Gms.Common.Scopes))] -//[assembly:System.Runtime.CompilerServices.TypeForwardedTo(typeof(Android.Gms.Common.SupportErrorDialogFragment))] -//[assembly:System.Runtime.CompilerServices.TypeForwardedTo(typeof(Android.Gms.Common.UserRecoverableException))] -//[assembly:System.Runtime.CompilerServices.TypeForwardedTo(typeof(Android.Gms.Common.Annotations.IKeepName))] -//[assembly:System.Runtime.CompilerServices.TypeForwardedTo(typeof(Android.Gms.Common.Annotations.KeepNameAttribute))] -//[assembly:System.Runtime.CompilerServices.TypeForwardedTo(typeof(Android.Gms.Common.Apis.Api))] -//[assembly:System.Runtime.CompilerServices.TypeForwardedTo(typeof(Android.Gms.Common.Apis.AwaitableResultCallback<>))] -//[assembly:System.Runtime.CompilerServices.TypeForwardedTo(typeof(Android.Gms.Common.Apis.BatchResult))] -//[assembly:System.Runtime.CompilerServices.TypeForwardedTo(typeof(Android.Gms.Common.Apis.BatchResultToken))] -//[assembly:System.Runtime.CompilerServices.TypeForwardedTo(typeof(Android.Gms.Common.Apis.BooleanResult))] -//[assembly:System.Runtime.CompilerServices.TypeForwardedTo(typeof(Android.Gms.Common.Apis.CommonStatusCodes))] -//[assembly:System.Runtime.CompilerServices.TypeForwardedTo(typeof(Android.Gms.Common.Apis.GoogleApiClient))] -//[assembly:System.Runtime.CompilerServices.TypeForwardedTo(typeof(Android.Gms.Common.Apis.IPendingResultExtensions))] -//[assembly:System.Runtime.CompilerServices.TypeForwardedTo(typeof(Android.Gms.Common.Apis.IReleasable))] -//[assembly:System.Runtime.CompilerServices.TypeForwardedTo(typeof(Android.Gms.Common.Apis.IResult))] -//[assembly:System.Runtime.CompilerServices.TypeForwardedTo(typeof(Android.Gms.Common.Apis.IResultCallback))] -//[assembly:System.Runtime.CompilerServices.TypeForwardedTo(typeof(Android.Gms.Common.Apis.OptionalPendingResult))] -//[assembly:System.Runtime.CompilerServices.TypeForwardedTo(typeof(Android.Gms.Common.Apis.PendingResult))] -//[assembly:System.Runtime.CompilerServices.TypeForwardedTo(typeof(Android.Gms.Common.Apis.PendingResults))] -//[assembly:System.Runtime.CompilerServices.TypeForwardedTo(typeof(Android.Gms.Common.Apis.PendingResultsExtensions))] -//[assembly:System.Runtime.CompilerServices.TypeForwardedTo(typeof(Android.Gms.Common.Apis.ResolvingResultCallbacks))] -//[assembly:System.Runtime.CompilerServices.TypeForwardedTo(typeof(Android.Gms.Common.Apis.ResultCallback<>))] -//[assembly:System.Runtime.CompilerServices.TypeForwardedTo(typeof(Android.Gms.Common.Apis.ResultCallbacks))] -//[assembly:System.Runtime.CompilerServices.TypeForwardedTo(typeof(Android.Gms.Common.Apis.Scope))] -//[assembly:System.Runtime.CompilerServices.TypeForwardedTo(typeof(Android.Gms.Common.Apis.Statuses))] -//[assembly:System.Runtime.CompilerServices.TypeForwardedTo(typeof(Android.Gms.Common.Internal.DowngradeableSafeParcel))] -//[assembly:System.Runtime.CompilerServices.TypeForwardedTo(typeof(Android.Gms.Common.Internal.SafeParcel.ISafeParcelable))] -//[assembly:System.Runtime.CompilerServices.TypeForwardedTo(typeof(Android.Gms.Common.Internal.SafeParcel.SafeParcelable))] -//[assembly:System.Runtime.CompilerServices.TypeForwardedTo(typeof(Android.Gms.Common.Internal.SafeParcel.SafeParcelableConsts))] -//[assembly:System.Runtime.CompilerServices.TypeForwardedTo(typeof(Android.Gms.Common.Server.FavaDiagnosticsEntity))] -//[assembly:System.Runtime.CompilerServices.TypeForwardedTo(typeof(Android.Gms.Common.Server.Converter.ConverterWrapper))] -//[assembly:System.Runtime.CompilerServices.TypeForwardedTo(typeof(Android.Gms.Common.Server.Response.FastJsonResponse))] -//[assembly:System.Runtime.CompilerServices.TypeForwardedTo(typeof(Android.Gms.Common.Server.Response.FastSafeParcelableJsonResponse))] -//[assembly:System.Runtime.CompilerServices.TypeForwardedTo(typeof(Android.Gms.Common.Server.Response.FieldMappingDictionary))] -//[assembly:System.Runtime.CompilerServices.TypeForwardedTo(typeof(Android.Gms.Common.Server.Response.SafeParcelResponse))] -//[assembly:System.Runtime.CompilerServices.TypeForwardedTo(typeof(Android.Gms.Dynamic.ILifecycleDelegate))] -//[assembly:System.Runtime.CompilerServices.TypeForwardedTo(typeof(Android.Gms.Security.ProviderInstaller))] From ba4fbaae6741bc5c2cd4678ea4f114dc6ed4f0d2 Mon Sep 17 00:00:00 2001 From: Redth Date: Wed, 1 Jun 2016 13:44:36 -0400 Subject: [PATCH 010/178] Updated base and basement bindings Moved extension methods to base to match the class movement in the jar files Updated manifest additions --- .../source/Additions/Extensions.cs | 18 +++++++++--------- base/source/Additions/Manifest.cs | 14 ++++++++++++++ basement/source/Additions/Manifest.cs | 4 ++++ 3 files changed, 27 insertions(+), 9 deletions(-) rename basement/source/Additions/GoogleApiClientAdditions.cs => base/source/Additions/Extensions.cs (71%) create mode 100644 base/source/Additions/Manifest.cs create mode 100644 basement/source/Additions/Manifest.cs diff --git a/basement/source/Additions/GoogleApiClientAdditions.cs b/base/source/Additions/Extensions.cs similarity index 71% rename from basement/source/Additions/GoogleApiClientAdditions.cs rename to base/source/Additions/Extensions.cs index 42161469b..8e448ca22 100644 --- a/basement/source/Additions/GoogleApiClientAdditions.cs +++ b/base/source/Additions/Extensions.cs @@ -1,5 +1,4 @@ using System; -using System.Threading; using System.Threading.Tasks; using Android.Gms.Common; using Android.Gms.Common.Apis; @@ -24,16 +23,17 @@ public static Task BuildAndConnectAsync (this GoogleApiClient.B return tcsConnected.Task; } - } - public class GoogleApiClientConnectionException : Exception - { - public GoogleApiClientConnectionException (ConnectionResult connectionResult) - : base (connectionResult.ErrorMessage) + public class GoogleApiClientConnectionException : Exception { - ConnectionResult = connectionResult; - } + public GoogleApiClientConnectionException (ConnectionResult connectionResult) + : base (connectionResult.ErrorMessage) + { + ConnectionResult = connectionResult; + } - public ConnectionResult ConnectionResult { get; private set; } + public ConnectionResult ConnectionResult { get; private set; } + } } } + diff --git a/base/source/Additions/Manifest.cs b/base/source/Additions/Manifest.cs new file mode 100644 index 000000000..9846e18cd --- /dev/null +++ b/base/source/Additions/Manifest.cs @@ -0,0 +1,14 @@ +using System; +using Android.App; + +namespace Android.Gms.Common.Apis +{ + [Activity ( + Name="com.google.android.gms.common.api.GoogleApiActivity", + Exported=false, + Theme = "@android:style/Theme.Translucent.NoTitleBar")] + public partial class GoogleApiActivity + { + } +} + diff --git a/basement/source/Additions/Manifest.cs b/basement/source/Additions/Manifest.cs new file mode 100644 index 000000000..e6f7fa751 --- /dev/null +++ b/basement/source/Additions/Manifest.cs @@ -0,0 +1,4 @@ +using System; +using Android.App; + +[assembly:MetaData ("com.google.android.gms.version", Value = "@integer/google_play_services_version")] From 67a96612fd404273947ebd804abb3bdfe35cb647 Mon Sep 17 00:00:00 2001 From: Redth Date: Wed, 1 Jun 2016 13:45:13 -0400 Subject: [PATCH 011/178] Added analytics-impl and updated analytics bindings analytics now depends on analytics-impl --- ...n.GooglePlayServices.Analytics.Impl.nuspec | 27 ++ .../source/Additions/AboutAdditions.txt | 48 ++++ .../Additions/IPendingResultExtensions.cs | 32 +++ analytics-impl/source/Additions/Manifest.cs | 6 + analytics-impl/source/Analytics.Impl.csproj | 79 ++++++ analytics-impl/source/Jars/AboutJars.txt | 37 +++ .../source/Properties/AssemblyInfo.cs | 47 ++++ .../source/Transforms/EnumFields.xml | 18 ++ .../source/Transforms/EnumMethods.xml | 18 ++ .../source/Transforms/Metadata.generated.xml | 2 + analytics-impl/source/Transforms/Metadata.xml | 100 +++++++ analytics/component/component.template.yaml | 18 +- analytics/samples/AnalyticsSample.sln | 24 ++ .../AnalyticsSample/AnalyticsSample.csproj | 16 ++ analytics/source/Additions/Manifest.cs | 2 +- analytics/source/Analytics.csproj | 9 +- .../source/Transforms/Metadata.generated.xml | 254 ------------------ 17 files changed, 478 insertions(+), 259 deletions(-) create mode 100644 analytics-impl/nuget/Xamarin.GooglePlayServices.Analytics.Impl.nuspec create mode 100644 analytics-impl/source/Additions/AboutAdditions.txt create mode 100644 analytics-impl/source/Additions/IPendingResultExtensions.cs create mode 100644 analytics-impl/source/Additions/Manifest.cs create mode 100644 analytics-impl/source/Analytics.Impl.csproj create mode 100644 analytics-impl/source/Jars/AboutJars.txt create mode 100644 analytics-impl/source/Properties/AssemblyInfo.cs create mode 100644 analytics-impl/source/Transforms/EnumFields.xml create mode 100644 analytics-impl/source/Transforms/EnumMethods.xml create mode 100644 analytics-impl/source/Transforms/Metadata.generated.xml create mode 100644 analytics-impl/source/Transforms/Metadata.xml diff --git a/analytics-impl/nuget/Xamarin.GooglePlayServices.Analytics.Impl.nuspec b/analytics-impl/nuget/Xamarin.GooglePlayServices.Analytics.Impl.nuspec new file mode 100644 index 000000000..18b4a7948 --- /dev/null +++ b/analytics-impl/nuget/Xamarin.GooglePlayServices.Analytics.Impl.nuspec @@ -0,0 +1,27 @@ + + + + Xamarin.GooglePlayServices.Analytics.Impl + Xamarin Google Play Services - Analytics Impl + $version$ + Xamarin Inc. + Xamarin Inc. + true + Xamarin.Android Bindings for Google Play Services - Analytics Impl + + Xamarin.Android Bindings for Google Play Services - Analytics Impl + + The Google Analytics SDK for Android makes it easy for developers to collect user engagement data form their apps. + + Copyright 2013-2016 + https://github.com/xamarin/GooglePlayServicesComponents/ + https://github.com/xamarin/GooglePlayServicesComponents/blob/master/LICENSE.md + https://xamarin-component-icons.s3.amazonaws.com/Xamarin.GooglePlayServices.Analytics.Impl.png + + + + + + + + diff --git a/analytics-impl/source/Additions/AboutAdditions.txt b/analytics-impl/source/Additions/AboutAdditions.txt new file mode 100644 index 000000000..c511f1d4e --- /dev/null +++ b/analytics-impl/source/Additions/AboutAdditions.txt @@ -0,0 +1,48 @@ +Additions allow you to add arbitrary C# to the generated classes +before they are compiled. This can be helpful for providing convenience +methods or adding pure C# classes. + +== Adding Methods to Generated Classes == + +Let's say the library being bound has a Rectangle class with a constructor +that takes an x and y position, and a width and length size. It will look like +this: + +public partial class Rectangle +{ + public Rectangle (int x, int y, int width, int height) + { + // JNI bindings + } +} + +Imagine we want to add a constructor to this class that takes a Point and +Size structure instead of 4 ints. We can add a new file called Rectangle.cs +with a partial class containing our new method: + +public partial class Rectangle +{ + public Rectangle (Point location, Size size) : + this (location.X, location.Y, size.Width, size.Height) + { + } +} + +At compile time, the additions class will be added to the generated class +and the final assembly will a Rectangle class with both constructors. + + +== Adding C# Classes == + +Another thing that can be done is adding fully C# managed classes to the +generated library. In the above example, let's assume that there isn't a +Point class available in Java or our library. The one we create doesn't need +to interact with Java, so we'll create it like a normal class in C#. + +By adding a Point.cs file with this class, it will end up in the binding library: + +public class Point +{ + public int X { get; set; } + public int Y { get; set; } +} diff --git a/analytics-impl/source/Additions/IPendingResultExtensions.cs b/analytics-impl/source/Additions/IPendingResultExtensions.cs new file mode 100644 index 000000000..2c39d643a --- /dev/null +++ b/analytics-impl/source/Additions/IPendingResultExtensions.cs @@ -0,0 +1,32 @@ +using System; +using System.Threading.Tasks; +using Android.Gms.Common.Apis; +using Android.Runtime; + +namespace Android.Gms.Tagmanager { + public partial class TagManagerClass { + public async Task LoadContainerDefaultOnlyAsync (string containerId, int defaultContainerResourceId) { + return (await LoadContainerDefaultOnly (containerId, defaultContainerResourceId)).JavaCast (); + } + + public async Task LoadContainerDefaultOnlyAsync (string containerId, int defaultContainerResourceId, Android.OS.Handler handler) { + return (await LoadContainerDefaultOnly (containerId, defaultContainerResourceId, handler)).JavaCast (); + } + + public async Task LoadContainerPreferFreshAsync (string containerId, int defaultContainerResourceId) { + return (await LoadContainerPreferFresh (containerId, defaultContainerResourceId)).JavaCast (); + } + + public async Task LoadContainerPreferFreshAsync (string containerId, int defaultContainerResourceId, Android.OS.Handler handler) { + return (await LoadContainerPreferFresh (containerId, defaultContainerResourceId, handler)).JavaCast (); + } + + public async Task LoadContainerPreferNonDefaultAsync (string containerId, int defaultContainerResourceId) { + return (await LoadContainerPreferNonDefault (containerId, defaultContainerResourceId)).JavaCast (); + } + + public async Task LoadContainerPreferNonDefaultAsync (string containerId, int defaultContainerResourceId, Android.OS.Handler handler) { + return (await LoadContainerPreferNonDefault (containerId, defaultContainerResourceId, handler)).JavaCast (); + } + } +} \ No newline at end of file diff --git a/analytics-impl/source/Additions/Manifest.cs b/analytics-impl/source/Additions/Manifest.cs new file mode 100644 index 000000000..880851cfd --- /dev/null +++ b/analytics-impl/source/Additions/Manifest.cs @@ -0,0 +1,6 @@ +using System; +using Android.App; + +[assembly: UsesPermission (Android.Manifest.Permission.Internet)] +[assembly: UsesPermission (Android.Manifest.Permission.AccessNetworkState)] +[assembly: UsesPermission (Android.Manifest.Permission.WakeLock)] diff --git a/analytics-impl/source/Analytics.Impl.csproj b/analytics-impl/source/Analytics.Impl.csproj new file mode 100644 index 000000000..53ff152fd --- /dev/null +++ b/analytics-impl/source/Analytics.Impl.csproj @@ -0,0 +1,79 @@ + + + + Debug + AnyCPU + {EFBA0AD7-5A72-4C68-AF49-83D382785DCF};{10368E6C-D01B-4462-8E8B-01FC667A7035};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + 8.0.30703 + 2.0 + {7893F52D-09B9-4441-AC47-6F7875BD68BC} + Library + GooglePlayServices.Analytics.Impl + Resources + Assets + False + Xamarin.GooglePlayServices.Analytics.Impl + v4.1 + ..\..\externals\docs\reference + + + true + full + false + bin\Debug + DEBUG; + prompt + 4 + None + false + + + full + true + bin\Release + prompt + 4 + false + false + + + + + + + + + + + + Properties\GpsConsts.cs + + + + + + + + + + + + + + + + Jars\play-services-analytics-impl.jar + + + + + + {6A38FACF-F0C5-4A49-8A8A-7CE6634207CE} + Basement + + + {3F6BAE25-ADEB-468C-8384-AD655623C341} + Base + + + \ No newline at end of file diff --git a/analytics-impl/source/Jars/AboutJars.txt b/analytics-impl/source/Jars/AboutJars.txt new file mode 100644 index 000000000..320a154be --- /dev/null +++ b/analytics-impl/source/Jars/AboutJars.txt @@ -0,0 +1,37 @@ +This directory is for Android .jars. + +There are 4 types of jars that are supported: + +== Input Jar and Embedded Jar == + +This is the jar that bindings should be generated for. + +For example, if you were binding the Google Maps library, this would +be Google's "maps.jar". + +The difference between EmbeddedJar and InputJar is, EmbeddedJar is to be +embedded in the resulting dll as EmbeddedResource, while InputJar is not. +There are couple of reasons you wouldn't like to embed the target jar +in your dll (the ones that could be internally loaded by +feature e.g. maps.jar, or you cannot embed jars that are under some +proprietary license). + +Set the build action for these jars in the properties page to "InputJar". + + +== Reference Jar and Embedded Reference Jar == + +These are jars that are referenced by the input jar. C# bindings will +not be created for these jars. These jars will be used to resolve +types used by the input jar. + +NOTE: Do not add "android.jar" as a reference jar. It will be added automatically +based on the Target Framework selected. + +Set the build action for these jars in the properties page to "ReferenceJar". + +"EmbeddedJar" works like "ReferenceJar", but like "EmbeddedJar", it is +embedded in your dll. But at application build time, they are not included +in the final apk, like ReferenceJar files. + + diff --git a/analytics-impl/source/Properties/AssemblyInfo.cs b/analytics-impl/source/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..f53b896bc --- /dev/null +++ b/analytics-impl/source/Properties/AssemblyInfo.cs @@ -0,0 +1,47 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using Android.App; + +// Information about this assembly is defined by the following attributes. +// Change them to the values specific to your project. + +[assembly: AssemblyTitle ("Xamarin.GooglePlayServices.Analytics.Impl")] +[assembly: AssemblyDescription ("")] +[assembly: AssemblyConfiguration ("")] +[assembly: AssemblyCompany ("Xamarin")] +[assembly: AssemblyProduct ("")] +[assembly: AssemblyCopyright ("Xamarin")] +[assembly: AssemblyTrademark ("")] +[assembly: AssemblyCulture ("")] + +// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}". +// The form "{Major}.{Minor}.*" will automatically update the build and revision, +// and "{Major}.{Minor}.{Build}.*" will update just the revision. + +[assembly: AssemblyVersion ("1.0.0")] + +// The following attributes are used to specify the signing key for the assembly, +// if desired. See the Mono documentation for more information about signing. + +//[assembly: AssemblyDelaySign(false)] +//[assembly: AssemblyKeyFile("")] + +[assembly: Java.Interop.JavaLibraryReference ("classes.jar", + PackageName = __Consts.PackageName, + SourceUrl = __GpsConsts.Url, + EmbeddedArchive = __Consts.AarPath, + Version = __GpsConsts.Version)] +// AppCompat-v7 resources +[assembly: Android.IncludeAndroidResourcesFromAttribute ("./", + PackageName = __Consts.PackageName, + SourceUrl = __GpsConsts.Url, + EmbeddedArchive = __Consts.AarPath, + Version = __GpsConsts.Version)] + +// Google Addon feed with GPS in it: +// https://dl-ssl.google.com/android/repository/addon.xml + +static class __Consts { + public const string PackageName = "GPS Analytics Impl"; + public const string AarPath = "m2repository/com/google/android/gms/play-services-analytics-impl/" + __GpsConsts.Version + "/play-services-analytics-impl-" + __GpsConsts.Version + ".aar"; +} \ No newline at end of file diff --git a/analytics-impl/source/Transforms/EnumFields.xml b/analytics-impl/source/Transforms/EnumFields.xml new file mode 100644 index 000000000..e9af0eeb3 --- /dev/null +++ b/analytics-impl/source/Transforms/EnumFields.xml @@ -0,0 +1,18 @@ + + + diff --git a/analytics-impl/source/Transforms/EnumMethods.xml b/analytics-impl/source/Transforms/EnumMethods.xml new file mode 100644 index 000000000..2efa81467 --- /dev/null +++ b/analytics-impl/source/Transforms/EnumMethods.xml @@ -0,0 +1,18 @@ + + + diff --git a/analytics-impl/source/Transforms/Metadata.generated.xml b/analytics-impl/source/Transforms/Metadata.generated.xml new file mode 100644 index 000000000..26c2f6238 --- /dev/null +++ b/analytics-impl/source/Transforms/Metadata.generated.xml @@ -0,0 +1,2 @@ + + diff --git a/analytics-impl/source/Transforms/Metadata.xml b/analytics-impl/source/Transforms/Metadata.xml new file mode 100644 index 000000000..44116743b --- /dev/null +++ b/analytics-impl/source/Transforms/Metadata.xml @@ -0,0 +1,100 @@ + + + + Android.Gms.Analytics + Android.Gms.Analytics.Internal + Android.Gms.Analytics.Ecommerce + Android.Gms.Tagmanager + + TagManagerClass + + + + + + + + + + + + containerHolder + containerVersion + + + + + + Java.Lang.Object + Java.Lang.Object + + + public + + + com.google.android.gms.analytics.HitBuilders.HitBuilder + com.google.android.gms.analytics.HitBuilders.HitBuilder + com.google.android.gms.analytics.HitBuilders.HitBuilder + com.google.android.gms.analytics.HitBuilders.HitBuilder + com.google.android.gms.analytics.HitBuilders.HitBuilder + com.google.android.gms.analytics.HitBuilders.HitBuilder + com.google.android.gms.analytics.HitBuilders.HitBuilder + com.google.android.gms.analytics.HitBuilders.HitBuilder + com.google.android.gms.analytics.HitBuilders.HitBuilder + com.google.android.gms.analytics.HitBuilders.HitBuilder + com.google.android.gms.analytics.HitBuilders.HitBuilder + com.google.android.gms.analytics.HitBuilders.HitBuilder + com.google.android.gms.analytics.HitBuilders.HitBuilder + + com.google.android.gms.analytics.HitBuilders.EventBuilder + com.google.android.gms.analytics.HitBuilders.EventBuilder + com.google.android.gms.analytics.HitBuilders.EventBuilder + com.google.android.gms.analytics.HitBuilders.EventBuilder + + com.google.android.gms.analytics.HitBuilders.ExceptionBuilder + com.google.android.gms.analytics.HitBuilders.ExceptionBuilder + + com.google.android.gms.analytics.HitBuilders.ItemBuilder + com.google.android.gms.analytics.HitBuilders.ItemBuilder + com.google.android.gms.analytics.HitBuilders.ItemBuilder + com.google.android.gms.analytics.HitBuilders.ItemBuilder + com.google.android.gms.analytics.HitBuilders.ItemBuilder + com.google.android.gms.analytics.HitBuilders.ItemBuilder + com.google.android.gms.analytics.HitBuilders.ItemBuilder + + com.google.android.gms.analytics.HitBuilders.SocialBuilder + com.google.android.gms.analytics.HitBuilders.SocialBuilder + com.google.android.gms.analytics.HitBuilders.SocialBuilder + + com.google.android.gms.analytics.HitBuilders.TimingBuilder + com.google.android.gms.analytics.HitBuilders.TimingBuilder + com.google.android.gms.analytics.HitBuilders.TimingBuilder + com.google.android.gms.analytics.HitBuilders.TimingBuilder + + com.google.android.gms.analytics.HitBuilders.TransactionBuilder + com.google.android.gms.analytics.HitBuilders.TransactionBuilder + com.google.android.gms.analytics.HitBuilders.TransactionBuilder + com.google.android.gms.analytics.HitBuilders.TransactionBuilder + com.google.android.gms.analytics.HitBuilders.TransactionBuilder + com.google.android.gms.analytics.HitBuilders.TransactionBuilder + + + + java.util.Map<java.lang.String, java.lang.String> + java.util.Map<java.lang.String, java.lang.String> + java.util.Map<java.lang.String, java.lang.String> + java.util.Map<java.lang.String, java.lang.String> + java.util.Map<java.lang.String, java.lang.String> + java.util.Map<java.lang.String, java.lang.String> + java.util.Map<java.lang.String, java.lang.String> + java.util.Map<java.lang.String, java.lang.String> + + + + diff --git a/analytics/component/component.template.yaml b/analytics/component/component.template.yaml index 620a50c55..c95f52254 100644 --- a/analytics/component/component.template.yaml +++ b/analytics/component/component.template.yaml @@ -10,8 +10,12 @@ icons: - icons/googleplayservices-analytics_512x512.png libraries: android: - - ../../output/Xamarin.GooglePlayServices.Analytics.dll + - ../../output/Xamarin.GooglePlayServices.Base.dll - ../../output/Xamarin.GooglePlayServices.Basement.dll + - ../../output/Xamarin.GooglePlayServices.Tasks.dll + - ../../output/Xamarin.Firebase.Common.dll + - ../../output/Xamarin.GooglePlayServices.Analytics.dll + - ../../output/Xamarin.GooglePlayServices.Analytics.Impl.dll is_shell: true packages: android: @@ -20,12 +24,20 @@ samples: - name: "Analytics Sample" path: ../../analytics/samples/AnalyticsSample.sln removeProjects: - - Xamarin.GooglePlayServices.Basement - - Xamarin.GooglePlayServices.Analytics + - Base + - Basement + - Tasks + - Firebase-Common + - Analytics + - Analytics.Impl installNuGets: - project: AnalyticsSample packages: + - Xamarin.GooglePlayServices.Base - Xamarin.GooglePlayServices.Basement + - Xamarin.GooglePlayServices.Tasks + - Xamarin.Firebase.Common - Xamarin.GooglePlayServices.Analytics + - Xamarin.GooglePlayServices.Analytics.Impl local-nuget-repo: ../../output/ no_build: true diff --git a/analytics/samples/AnalyticsSample.sln b/analytics/samples/AnalyticsSample.sln index a756b26fe..a68a7fde4 100644 --- a/analytics/samples/AnalyticsSample.sln +++ b/analytics/samples/AnalyticsSample.sln @@ -9,6 +9,14 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Analytics", "..\source\Anal EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Basement", "..\..\basement\source\Basement.csproj", "{6A38FACF-F0C5-4A49-8A8A-7CE6634207CE}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Analytics.Impl", "..\..\analytics-impl\source\Analytics.Impl.csproj", "{7893F52D-09B9-4441-AC47-6F7875BD68BC}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Base", "..\..\base\source\Base.csproj", "{3F6BAE25-ADEB-468C-8384-AD655623C341}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Firebase-Common", "..\..\firebase-common\source\Firebase-Common.csproj", "{865652D3-8D1A-4779-92FC-4C54719286B7}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tasks", "..\..\tasks\source\Tasks.csproj", "{53F87D88-8871-41A2-9F81-B79AB02FEC24}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -31,5 +39,21 @@ Global {EA04524D-2A97-4ED0-AD74-21F8C30DF4A5}.Debug|Any CPU.Build.0 = Debug|Any CPU {EA04524D-2A97-4ED0-AD74-21F8C30DF4A5}.Release|Any CPU.ActiveCfg = Release|Any CPU {EA04524D-2A97-4ED0-AD74-21F8C30DF4A5}.Release|Any CPU.Build.0 = Release|Any CPU + {7893F52D-09B9-4441-AC47-6F7875BD68BC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7893F52D-09B9-4441-AC47-6F7875BD68BC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7893F52D-09B9-4441-AC47-6F7875BD68BC}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7893F52D-09B9-4441-AC47-6F7875BD68BC}.Release|Any CPU.Build.0 = Release|Any CPU + {3F6BAE25-ADEB-468C-8384-AD655623C341}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3F6BAE25-ADEB-468C-8384-AD655623C341}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3F6BAE25-ADEB-468C-8384-AD655623C341}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3F6BAE25-ADEB-468C-8384-AD655623C341}.Release|Any CPU.Build.0 = Release|Any CPU + {865652D3-8D1A-4779-92FC-4C54719286B7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {865652D3-8D1A-4779-92FC-4C54719286B7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {865652D3-8D1A-4779-92FC-4C54719286B7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {865652D3-8D1A-4779-92FC-4C54719286B7}.Release|Any CPU.Build.0 = Release|Any CPU + {53F87D88-8871-41A2-9F81-B79AB02FEC24}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {53F87D88-8871-41A2-9F81-B79AB02FEC24}.Debug|Any CPU.Build.0 = Debug|Any CPU + {53F87D88-8871-41A2-9F81-B79AB02FEC24}.Release|Any CPU.ActiveCfg = Release|Any CPU + {53F87D88-8871-41A2-9F81-B79AB02FEC24}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection EndGlobal diff --git a/analytics/samples/AnalyticsSample/AnalyticsSample.csproj b/analytics/samples/AnalyticsSample/AnalyticsSample.csproj index bfe17063e..e40452365 100644 --- a/analytics/samples/AnalyticsSample/AnalyticsSample.csproj +++ b/analytics/samples/AnalyticsSample/AnalyticsSample.csproj @@ -99,5 +99,21 @@ {6A38FACF-F0C5-4A49-8A8A-7CE6634207CE} Basement + + {7893F52D-09B9-4441-AC47-6F7875BD68BC} + Analytics.Impl + + + {3F6BAE25-ADEB-468C-8384-AD655623C341} + Base + + + {865652D3-8D1A-4779-92FC-4C54719286B7} + Firebase-Common + + + {53F87D88-8871-41A2-9F81-B79AB02FEC24} + Tasks + \ No newline at end of file diff --git a/analytics/source/Additions/Manifest.cs b/analytics/source/Additions/Manifest.cs index 4c536c90e..880851cfd 100644 --- a/analytics/source/Additions/Manifest.cs +++ b/analytics/source/Additions/Manifest.cs @@ -3,4 +3,4 @@ [assembly: UsesPermission (Android.Manifest.Permission.Internet)] [assembly: UsesPermission (Android.Manifest.Permission.AccessNetworkState)] - +[assembly: UsesPermission (Android.Manifest.Permission.WakeLock)] diff --git a/analytics/source/Analytics.csproj b/analytics/source/Analytics.csproj index ee74af4fa..df19f5403 100644 --- a/analytics/source/Analytics.csproj +++ b/analytics/source/Analytics.csproj @@ -44,7 +44,6 @@ - Properties\GpsConsts.cs @@ -71,5 +70,13 @@ {6A38FACF-F0C5-4A49-8A8A-7CE6634207CE} Basement + + {7893F52D-09B9-4441-AC47-6F7875BD68BC} + Analytics.Impl + + + {3F6BAE25-ADEB-468C-8384-AD655623C341} + Base + \ No newline at end of file diff --git a/analytics/source/Transforms/Metadata.generated.xml b/analytics/source/Transforms/Metadata.generated.xml index df2630f95..26c2f6238 100644 --- a/analytics/source/Transforms/Metadata.generated.xml +++ b/analytics/source/Transforms/Metadata.generated.xml @@ -1,256 +1,2 @@ - context - intent - intent - intent - flags - startId - context - intent - intent - intent - flags - startId - threadName - tValue - tracker - originalHandler - context - exceptionParser - tValue - eValue - context - application - context - configResId - trackingId - activity - activity - optOut - dryRun - dispatchPeriodInSeconds - logger - category - action - action - category - label - value - description - fatal - product - impressionList - product - promotion - paramName - paramName - paramValue - parameters - utmParams - index - dimension - index - metric - hitType - nonInteraction - action - action - category - currencyCode - nameValue - price - quantity - sku - transactionid - action - network - target - category - variable - value - category - label - value - variable - affiliation - currencyCode - revenue - shipping - tax - transactionid - exception - message - message - logLevel - message - message - context - additionalPackages - tValue - tValue - threadName - tValue - cause - element - threadName - context - additionalPackages - enabled - enabled - enable - key - parameters - key - value - anonymize - appId - appInstallerId - appName - appVersion - uri - clientId - encoding - hostname - language - location - page - referrer - sampleRate - screenColors - screenName - width - height - sessionTimeout - title - useSecure - viewportSize - enable - value - value - value - index - value - index - value - value - value - value - value - value - value - action - value - value - value - value - value - value - value - value - value - value - value - value - value - value - output - flags - code - data - reply - flags - logger - msg - dispatchPeriodInSeconds - nameValue - binder - nameValue - nameValue - nameValue - nameValue - nameValue - oValue - output - oValue - output - oValue - output - oValue - output - oValue - output - oValue - output - oValue - output - oValue - output - oValue - output - oValue - output - oValue - output - nameValue - value - clientId - percentage - userId - value - value - value - value - nameValue - language - description - screenName - milliseconds - oValue - output - key - key - key - key - customMacroName - customMacroCallback - customTagName - customTagCallback - customMacroName - customTagName - listener - key - objects - objects - key - value - update - eventName - update - savedInstanceState - context - containerId - defaultContainerResourceId - containerId - defaultContainerResourceId - handler - containerId - defaultContainerResourceId - containerId - defaultContainerResourceId - handler - containerId - defaultContainerResourceId - containerId - defaultContainerResourceId - handler - enableVerboseLogging - nameValue - message - logLevel - message - key - value - message - logLevel - message From 9340a24fd1ccc73dbecde52d5326f313910eca8a Mon Sep 17 00:00:00 2001 From: Redth Date: Wed, 1 Jun 2016 13:45:52 -0400 Subject: [PATCH 012/178] Updated ads bindings and sample --- ads/component/component.template.yaml | 18 +- ads/samples/AdMobSample.sln | 24 + ads/samples/AdMobSample/AdMobSample.csproj | 12 + ads/source/Ads.csproj | 9 +- ads/source/Transforms/Metadata.generated.xml | 1268 ------------------ ads/source/Transforms/Metadata.xml | 1 + 6 files changed, 60 insertions(+), 1272 deletions(-) diff --git a/ads/component/component.template.yaml b/ads/component/component.template.yaml index 06489d4fa..855f7c70b 100644 --- a/ads/component/component.template.yaml +++ b/ads/component/component.template.yaml @@ -10,8 +10,12 @@ icons: - icons/googleplayservices-ads_512x512.png libraries: android: - - ../../output/Xamarin.GooglePlayServices.Ads.dll + - ../../output/Xamarin.GooglePlayServices.Base.dll - ../../output/Xamarin.GooglePlayServices.Basement.dll + - ../../output/Xamarin.GooglePlayServices.Tasks.dll + - ../../output/Xamarin.Firebase.Common.dll + - ../../output/Xamarin.GooglePlayServices.Ads.dll + - ../../output/Xamarin.GooglePlayServices.Ads.Lite.dll is_shell: true packages: android: @@ -20,12 +24,20 @@ samples: - name: "AdMob Sample" path: ../../ads/samples/AdMobSample.sln removeProjects: - - Xamarin.GooglePlayServices.Basement - - Xamarin.GooglePlayServices.Ads + - Base + - Basement + - Tasks + - Firebase-Common + - Ads + - Ads.Lite installNuGets: - project: AdMobSample packages: + - Xamarin.GooglePlayServices.Base - Xamarin.GooglePlayServices.Basement + - Xamarin.GooglePlayServices.Tasks + - Xamarin.Firebase.Common - Xamarin.GooglePlayServices.Ads + - Xamarin.GooglePlayServices.Ads.Lite local-nuget-repo: ../../output/ no_build: true diff --git a/ads/samples/AdMobSample.sln b/ads/samples/AdMobSample.sln index 99e05e3ba..71a095761 100644 --- a/ads/samples/AdMobSample.sln +++ b/ads/samples/AdMobSample.sln @@ -9,6 +9,14 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Ads", "..\source\Ads.csproj EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Basement", "..\..\basement\source\Basement.csproj", "{6A38FACF-F0C5-4A49-8A8A-7CE6634207CE}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Base", "..\..\base\source\Base.csproj", "{3F6BAE25-ADEB-468C-8384-AD655623C341}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Firebase-Common", "..\..\firebase-common\source\Firebase-Common.csproj", "{865652D3-8D1A-4779-92FC-4C54719286B7}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tasks", "..\..\tasks\source\Tasks.csproj", "{53F87D88-8871-41A2-9F81-B79AB02FEC24}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Ads.Lite", "..\..\ads-lite\source\Ads.Lite.csproj", "{ECB1F68B-B588-4F3B-9A86-510CF4AAA784}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -19,10 +27,22 @@ Global {34C2F5ED-29E6-41F7-8898-6C17653AD59D}.Debug|Any CPU.Build.0 = Debug|Any CPU {34C2F5ED-29E6-41F7-8898-6C17653AD59D}.Release|Any CPU.ActiveCfg = Release|Any CPU {34C2F5ED-29E6-41F7-8898-6C17653AD59D}.Release|Any CPU.Build.0 = Release|Any CPU + {3F6BAE25-ADEB-468C-8384-AD655623C341}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3F6BAE25-ADEB-468C-8384-AD655623C341}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3F6BAE25-ADEB-468C-8384-AD655623C341}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3F6BAE25-ADEB-468C-8384-AD655623C341}.Release|Any CPU.Build.0 = Release|Any CPU + {53F87D88-8871-41A2-9F81-B79AB02FEC24}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {53F87D88-8871-41A2-9F81-B79AB02FEC24}.Debug|Any CPU.Build.0 = Debug|Any CPU + {53F87D88-8871-41A2-9F81-B79AB02FEC24}.Release|Any CPU.ActiveCfg = Release|Any CPU + {53F87D88-8871-41A2-9F81-B79AB02FEC24}.Release|Any CPU.Build.0 = Release|Any CPU {6A38FACF-F0C5-4A49-8A8A-7CE6634207CE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {6A38FACF-F0C5-4A49-8A8A-7CE6634207CE}.Debug|Any CPU.Build.0 = Debug|Any CPU {6A38FACF-F0C5-4A49-8A8A-7CE6634207CE}.Release|Any CPU.ActiveCfg = Release|Any CPU {6A38FACF-F0C5-4A49-8A8A-7CE6634207CE}.Release|Any CPU.Build.0 = Release|Any CPU + {865652D3-8D1A-4779-92FC-4C54719286B7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {865652D3-8D1A-4779-92FC-4C54719286B7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {865652D3-8D1A-4779-92FC-4C54719286B7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {865652D3-8D1A-4779-92FC-4C54719286B7}.Release|Any CPU.Build.0 = Release|Any CPU {BCFE5769-5799-42B3-925D-0302CF08F30C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {BCFE5769-5799-42B3-925D-0302CF08F30C}.Debug|Any CPU.Build.0 = Debug|Any CPU {BCFE5769-5799-42B3-925D-0302CF08F30C}.Release|Any CPU.ActiveCfg = Release|Any CPU @@ -31,5 +51,9 @@ Global {CC4E534D-4992-4FBB-9528-A071EDDEA7E7}.Debug|Any CPU.Build.0 = Debug|Any CPU {CC4E534D-4992-4FBB-9528-A071EDDEA7E7}.Release|Any CPU.ActiveCfg = Release|Any CPU {CC4E534D-4992-4FBB-9528-A071EDDEA7E7}.Release|Any CPU.Build.0 = Release|Any CPU + {ECB1F68B-B588-4F3B-9A86-510CF4AAA784}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {ECB1F68B-B588-4F3B-9A86-510CF4AAA784}.Debug|Any CPU.Build.0 = Debug|Any CPU + {ECB1F68B-B588-4F3B-9A86-510CF4AAA784}.Release|Any CPU.ActiveCfg = Release|Any CPU + {ECB1F68B-B588-4F3B-9A86-510CF4AAA784}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection EndGlobal diff --git a/ads/samples/AdMobSample/AdMobSample.csproj b/ads/samples/AdMobSample/AdMobSample.csproj index ba8d9aab6..6c40aaf69 100644 --- a/ads/samples/AdMobSample/AdMobSample.csproj +++ b/ads/samples/AdMobSample/AdMobSample.csproj @@ -95,5 +95,17 @@ {6A38FACF-F0C5-4A49-8A8A-7CE6634207CE} Basement + + {ECB1F68B-B588-4F3B-9A86-510CF4AAA784} + Ads.Lite + + + {3F6BAE25-ADEB-468C-8384-AD655623C341} + Base + + + {865652D3-8D1A-4779-92FC-4C54719286B7} + Firebase-Common + \ No newline at end of file diff --git a/ads/source/Ads.csproj b/ads/source/Ads.csproj index 8e2a04b72..9bdd07ab6 100644 --- a/ads/source/Ads.csproj +++ b/ads/source/Ads.csproj @@ -47,7 +47,6 @@ Properties\GpsConsts.cs - @@ -70,5 +69,13 @@ {6A38FACF-F0C5-4A49-8A8A-7CE6634207CE} Basement + + {3F6BAE25-ADEB-468C-8384-AD655623C341} + Base + + + {ECB1F68B-B588-4F3B-9A86-510CF4AAA784} + Ads.Lite + \ No newline at end of file diff --git a/ads/source/Transforms/Metadata.generated.xml b/ads/source/Transforms/Metadata.generated.xml index 2a51ed640..26c2f6238 100644 --- a/ads/source/Transforms/Metadata.generated.xml +++ b/ads/source/Transforms/Metadata.generated.xml @@ -1,1270 +1,2 @@ - nameValue - nameValue - width - height - adSize - other - options - context - context - width - height - input - input - data - output - input - input - data - output - input - input - data - output - input - input - data - output - input - input - data - output - input - input - data - output - serverParameters - context - mediationAdRequest - userId - listener - serverParameters - networkExtras - mediationAdRequest - serverParameters - networkExtras - context - bannerListener - serverParameters - adSize - mediationAdRequest - extras - context - interstitialListener - serverParameters - mediationAdRequest - extras - context - listener - serverParameters - mediationAdRequest - extras - serverParameters - birthday - gender - keywords - isTesting - location - adapter - adapter - adapter - errorCode - adapter - adapter - adapter - adapter - adapter - errorCode - adapter - adapter - adapter - parameters - message - listener - activity - serverParameters - adSize - mediationAdRequest - customEventExtras - listener - activity - serverParameters - mediationAdRequest - customEventExtras - view - savedInstanceState - outState - layoutResID - view - view - parameters - errorCode - adRequest - publisherAdRequest - context - adUnitID - listener - listener - templateId - adLoadedListener - customClickListener - listener - correlator - options - adapterClass - networkExtrasClass - adapterClass - context - adapterClass - customEventExtras - keyword - networkExtras - adapterClass - networkExtras - deviceId - birthday - contentUrl - gender - isDesignedForFamilies - location - requestAgent - tagForChildDirectedTreatment - width - height - other - context - context - context - context - attrs - context - attrs - defStyle - context - adRequest - adListener - adUnitId - inAppPurchaseListener - playStorePurchaseListener - publicKey - rewardedVideoAdListener - context - context - context - applicationCode - context - applicationCode - settings - volume - enable - trackingId - context - context - attrs - context - attrs - defStyle - view - adapterClass - networkExtrasClass - adapterClass - context - categoryExclusion - adapterClass - customEventExtras - key - value - key - values - keyword - networkExtras - adapterClass - networkExtras - deviceId - birthday - contentUrl - gender - isDesignedForFamilies - location - manualImpressionsEnabled - publisherProvidedId - requestAgent - tagForChildDirectedTreatment - context - context - attrs - context - attrs - defStyle - publisherAdRequest - changed - left - top - right - bottom - widthMeasureSpec - heightMeasureSpec - adListener - adSizes - adUnitId - appEventListener - correlator - manualImpressionsEnabled - onCustomRenderedAdLoadedListener - context - publisherAdRequest - adListener - adUnitId - appEventListener - correlator - onCustomRenderedAdLoadedListener - orientation - shouldRequestMultipleImages - shouldReturnUrls - context - context - attrs - context - attrs - defStyleAttr - context - attrs - defStyleAttr - defStyleRes - child - index - parameters - child - child - context - context - attrs - context - attrs - defStyleAttr - context - attrs - defStyleAttr - defStyleRes - view - view - view - view - view - view - view - view - context - context - attrs - context - attrs - defStyleAttr - context - attrs - defStyleAttr - defStyleRes - view - view - view - view - view - view - assetName - assetName - assetName - context - adUnitId - adapterCreator - versionInfo - activity - context - adSize - adUnitId - adapterCreator - versionInfo - activity - context - adSize - adUnitId - adapterCreator - versionInfo - nativeAdView - overlayFrame - context - adapterCreator - versionInfo - context - transparentBackground - hideStatusBar - backgroundImage - blur - blurRadius - output - flags - nameValue - info - enabled - userId - enabled - runnable - volume - runnable - timeFromNowInMillis - runnable - evt - versionCode - birthday - extras - gender - keywords - isTestDevice - tagForChildDirectedTreatment - manualImpressionsEnabled - publisherProvidedId - searchAdRequestParcel - location - contentUrl - networkExtras - customTargeting - categoryExclusions - requestAgent - requestPackage - isDesignedForFamilies - other - output - flags - context - adSize - context - adSizes - adSize - supportedAdSizes - output - flags - searchAdRequest - output - flags - originalAdSize - parcel - flags - adapterClass - networkExtrasClass - adapterClass - context - manualImpressionsEnabled - adListener - adSizes - adUnitId - appEventListener - correlator - inAppPurchaseListener - manualImpressionsEnabled - onCustomRenderedAdLoadedListener - playStorePurchaseListener - publicKey - adListener - adUnitId - appEventListener - correlator - inAppPurchaseListener - onCustomRenderedAdLoadedListener - playStorePurchaseListener - publicKey - listener - userId - context - context - volume - enabled - userId - context - adUnitId - adapterCreator - versionInfo - activity - context - adSize - adUnitId - adapterCreator - versionInfo - activity - context - adSize - adUnitId - adapterCreator - versionInfo - nativeAdView - overlayFrame - context - adapterCreator - versionInfo - context - volume - userId - errorCode - nameValue - info - context - adUnitId - adapterCreator - versionInfo - activity - context - adSize - adUnitId - adapterCreator - versionInfo - activity - context - adSize - adUnitId - adapterCreator - versionInfo - nativeAdView - overlayFrame - context - adapterCreator - versionInfo - context - context - adUnitId - adapterCreator - versionInfo - activity - context - adSize - adUnitId - adapterCreator - versionInfo - activity - context - adSize - adUnitId - adapterCreator - versionInfo - nativeAdView - overlayFrame - context - adapterCreator - versionInfo - context - code - data - reply - flags - errorCode - code - data - reply - flags - code - data - reply - flags - code - data - reply - flags - code - data - reply - flags - manualImpressionsEnabled - userId - code - data - reply - flags - code - data - reply - flags - nameValue - info - code - data - reply - flags - code - data - reply - flags - volume - code - data - reply - flags - code - data - reply - flags - versionCode - shouldReturnUrlsForImageAssets - imageOrientation - shouldRequestMultipleImages - options - output - flags - assetName - view - view - motionEvent - versionCode - intentAction - url - mimeType - packageName - componentName - intentFlagsString - intentExtrasString - intent - intent - intentAction - url - mimeType - packageName - componentName - intentFlagsString - intentExtrasString - output - flags - adClickListener - adOverlayListener - leaveApplicationListener - adWebView - orientation - versionInfo - debugMessage - interstitialAdParameter - adClickListener - adOverlayListener - leaveApplicationListener - adWebView - customClose - orientation - versionInfo - adClickListener - adOverlayListener - appEventGmsgListener - leaveApplicationListener - adWebView - customClose - orientation - url - versionInfo - inAppPurchaseGmsgListener - adClickListener - adOverlayListener - appEventGmsgListener - leaveApplicationListener - adWebView - customClose - orientation - html - baseUrl - versionInfo - inAppPurchaseGmsgListener - adLauncherIntentInfo - adClickListener - adOverlayListener - leaveApplicationListener - versionInfo - output - flags - focusChange - mpValue - percent - mpValue - mpValue - what - extra - mpValue - what - extra - widthMeasureSpec - heightMeasureSpec - mediaPlayer - surface - width - height - surface - surface - wValue - hValue - surface - mpValue - width - height - millis - mimeType - path - uri - savedInstanceState - outBundle - requestedOrientation - millis - mimeType - path - millis - mimeType - view - appContext - inAppPurchaseVerifier - inAppPurchase - onPlayStorePurchaseFinishedListener - output - flags - nameValue - service - nameValue - billingResponseCode - resolution - requestCode - resultCode - data - nameValue - service - nameValue - nameValue - service - nameValue - db - db - oldVersion - newVersion - adPositionBundle - adRequest - adSize - adUnitId - applicationInfo - packageInfo - querySpamSignals - sequenceNumber - sessionId - versionInfo - stats - nativeVersion - nativeTemplates - nativeCustomTemplateIds - contentInfo - useHTTPS - prefetchMessenger - screenWidth - screenHeight - screenDensity - viewHierarchy - correlationId - requestId - experimentIds - slotId - nativeAdOptionsParcel - connectionStartTime - capabilityParcel - anchorStatus - appVolume - targetApi - adapterViewPosition - partialAdRequestInfo - querySpamSignals - connectionStartTime - output - flags - errorCode - errorCode - refreshIntervalInMillis - adRequestInfo - baseUrl - body - clickUrls - impressionUrls - interstitialTimeoutInMillis - isMediation - mediationConfigCacheTimeInMillis - manualTrackingUrls - refreshIntervalInMillis - orientation - adSizeString - fetchTime - debugDialog - activeViewJSON - isCustomRenderAllowed - isNative - useHTTPS - contentUrlOptedOut - isPrefetched - panTokenStatus - gwsQueryId - isFluid - isNativeExpress - rewardItemParcel - rewardVideoStartUrls - rewardGrantedUrls - isUsingDisplayedImpression - adRequestInfo - baseUrl - body - clickUrls - impressionUrls - interstitialTimeoutInMillis - isMediation - mediationConfigCacheTimeInMillis - manualTrackingUrls - refreshIntervalInMillis - orientation - adSizeString - fetchTime - debugDialog - isJavascriptTag - passbackUrl - activeViewJSON - isCustomRenderAllowed - isNative - useHTTPS - contentUrlOptedOut - isPrefetched - panTokenStatus - gwsQueryId - isFluid - isNativeExpress - rewardItemParcel - rewardVideoStartUrls - rewardGrantedUrls - isUsingDisplayedImpression - output - flags - inAppPurchaseSupported - defaultInAppPurchaseSupported - appStreamingSupported - dest - flags - teleportee - dest - flags - content - dest - flags - connectionHint - result - cause - code - data - reply - flags - code - data - reply - flags - versionCode - adRequest - adUnitId - adRequest - adUnitId - output - flags - code - data - reply - flags - userId - code - data - reply - flags - code - data - reply - flags - errorCode - code - data - reply - flags - errorCode - adUnitId - adRequest - listener - userId - versionCode - theType - amount - rewardItem - rewardType - rewardAmount - other - output - flags - code - data - reply - flags - adapter - adapter - adapter - errorCode - adapter - adapter - adapter - adapter - errorCode - adapter - adapter - rewardItem - adapter - buddyApkVersion - clientJarVersion - isClientJar - output - flags - msg - context - listener - serverParameters - adSize - mediationAdRequest - customEventExtras - adapter - adapter - adapter - errorCode - adapter - adapter - adapter - context - listener - serverParameters - mediationAdRequest - customEventExtras - adapter - adapter - adapter - errorCode - adapter - adapter - adapter - context - listener - serverParameters - mediationAdRequest - customEventExtras - adapter - adapter - adapter - adapter - adapter - nativeAdMapper - adapter - view - extras - overrideClickHandling - overrideImpressionRecording - view - body - callToAction - headline - icon - images - price - starRating - store - advertiser - body - callToAction - headline - images - logo - extras - context - listener - serverParameters - adSize - mediationAdRequest - customEventExtras - context - listener - serverParameters - mediationAdRequest - customEventExtras - context - listener - serverParameters - mediationAdRequest - customEventExtras - view - label - label - value - billingResponseCode - resolution - requestCode - resultCode - data - savedInstanceState - adUnitId - adRequest - listener - userId - reward - errorCode - context - mediationAdRequest - userId - listener - serverParameters - networkExtras - mediationAdRequest - serverParameters - networkExtras - adapter - adapter - adapter - errorCode - adapter - adapter - adapter - adapter - errorCode - adapter - adapter - rewardItem - adapter - adapterClass - networkExtrasClass - adapterClass - context - adapterClass - customEventExtras - networkExtras - adapterClass - networkExtras - deviceId - anchorTextColor - backgroundColor - top - bottom - borderColor - borderThickness - borderType - callButtonColor - channelIds - descriptionTextColor - fontFace - headerTextColor - headerTextSize - location - query - requestAgent - tagForChildDirectedTreatment - context - context - attrs - context - attrs - defStyle - searchAdRequest - changed - left - top - right - bottom - widthMeasureSpec - heightMeasureSpec - adListener - adSize - adUnitId - oneByte - buffer - offset - len - objValue - activity - savedInstanceState - activity - activity - activity - activity - savedInstanceState - activity - activity - other - context - context - view - code - data - reply - flags - code - data - reply - flags - code - data - reply - flags - code - data - reply - flags - code - data - reply - flags - code - data - reply - flags - code - data - reply - flags - assetName - code - data - reply - flags - assetName - assetName - assetName - code - data - reply - flags - code - data - reply - flags - code - data - reply - flags - code - data - reply - flags - nameValue - info - manualImpressionsEnabled - useId - error - code - data - reply - flags - code - data - reply - flags - error - code - data - reply - flags - code - data - reply - flags - code - data - reply - flags - code - data - reply - flags - adapter - adapter - adapter - adapter - adapter - adapter - adapter - errorCode - adapter - errorCode - adapter - error - adapter - adapter - adapter - adapter - adapter - adapter - nativeAdMapper - adapter - adapter - adapter - adapter - adapter - adapter - adapter - errorCode - adapter - errorCode - adapter - adapter - adapter - adapter - adapter - adapter - activity - savedInstanceState - outState - code - data - reply - flags - code - data - reply - flags - context - callingPackage - context - adUnitId - callingPackage - context - callingPackage - context - adUnitId - callingPackage - msg - billingResponseCode - resolution - code - data - reply - flags - code - data - reply - flags - requestCode - resultCode - data - code - data - reply - flags - code - data - reply - flags - code - data - reply - flags - productId - code - data - reply - flags - activity - billingResponseCode - resolution - productId - thread - exception - userId - msg - msg - runnable - context - view - context - view - view - other - instance - mayInterruptIfRunning - timeout - unit - mayInterruptIfRunning - timeout - unit - includeDiskFiles - data - mimeType - encoding - baseUrl - data - mimeType - encoding - historyUrl - url - color - context - listener - listener - requestedOrientation - client - client - webView - url - webView - url - view - errorCode - description - failingUrl - view - handler - error - view - evt - webView - url - service - baseValue - intent - webView - consoleMessage - view - isDialog - isUserGesture - resultMsg - url - databaseIdentifier - currentQuota - estimatedSize - totalUsedQuota - quotaUpdater - origin - callback - webView - url - message - result - webView - url - message - result - webView - url - message - result - webView - url - message - defaultValue - result - spaceNeeded - totalUsedQuota - quotaUpdater - view - customViewCallback - webView - url - view - requestedOrientation - customViewCallback - view - url - view - url - view - url - nameValue - key diff --git a/ads/source/Transforms/Metadata.xml b/ads/source/Transforms/Metadata.xml index 64f695626..554cb10d3 100644 --- a/ads/source/Transforms/Metadata.xml +++ b/ads/source/Transforms/Metadata.xml @@ -19,6 +19,7 @@ Android.Gms.Ads.Purchase Android.Gms.Ads.Search Android.Gms.Internal + Android.Gms.Dynamite.Descriptors.Ads.Dynamite name data From e9a540153e660468b6a67f60dff719a1e363b91c Mon Sep 17 00:00:00 2001 From: Redth Date: Wed, 1 Jun 2016 13:46:25 -0400 Subject: [PATCH 013/178] Added iid bindings --- .../Xamarin.GooglePlayServices.Iid.nuspec | 25 ++++++ iid/source/Additions/AboutAdditions.txt | 48 +++++++++++ iid/source/Additions/Additions.cs | 38 ++++++++ iid/source/Additions/Manifest.cs | 5 ++ iid/source/Iid.csproj | 86 +++++++++++++++++++ iid/source/Jars/AboutJars.txt | 37 ++++++++ iid/source/Properties/AssemblyInfo.cs | 47 ++++++++++ iid/source/Transforms/EnumFields.xml | 18 ++++ iid/source/Transforms/EnumMethods.xml | 18 ++++ iid/source/Transforms/Metadata.generated.xml | 2 + iid/source/Transforms/Metadata.xml | 13 +++ iid/source/packages.config | 4 + 12 files changed, 341 insertions(+) create mode 100644 iid/nuget/Xamarin.GooglePlayServices.Iid.nuspec create mode 100644 iid/source/Additions/AboutAdditions.txt create mode 100644 iid/source/Additions/Additions.cs create mode 100644 iid/source/Additions/Manifest.cs create mode 100644 iid/source/Iid.csproj create mode 100644 iid/source/Jars/AboutJars.txt create mode 100644 iid/source/Properties/AssemblyInfo.cs create mode 100644 iid/source/Transforms/EnumFields.xml create mode 100644 iid/source/Transforms/EnumMethods.xml create mode 100644 iid/source/Transforms/Metadata.generated.xml create mode 100644 iid/source/Transforms/Metadata.xml create mode 100644 iid/source/packages.config diff --git a/iid/nuget/Xamarin.GooglePlayServices.Iid.nuspec b/iid/nuget/Xamarin.GooglePlayServices.Iid.nuspec new file mode 100644 index 000000000..21feee27e --- /dev/null +++ b/iid/nuget/Xamarin.GooglePlayServices.Iid.nuspec @@ -0,0 +1,25 @@ + + + + Xamarin.GooglePlayServices.Iid + Xamarin Google Play Services - IID + $version$ + Xamarin Inc. + Xamarin Inc. + true + + Xamarin.Android Bindings for Google Play Services - IID + + Copyright 2013-2016 + https://github.com/xamarin/GooglePlayServicesComponents/ + https://github.com/xamarin/GooglePlayServicesComponents/blob/master/LICENSE.md + https://xamarin-component-icons.s3.amazonaws.com/Xamarin.GooglePlayServices.Iid.png + + + + + + + + + diff --git a/iid/source/Additions/AboutAdditions.txt b/iid/source/Additions/AboutAdditions.txt new file mode 100644 index 000000000..c511f1d4e --- /dev/null +++ b/iid/source/Additions/AboutAdditions.txt @@ -0,0 +1,48 @@ +Additions allow you to add arbitrary C# to the generated classes +before they are compiled. This can be helpful for providing convenience +methods or adding pure C# classes. + +== Adding Methods to Generated Classes == + +Let's say the library being bound has a Rectangle class with a constructor +that takes an x and y position, and a width and length size. It will look like +this: + +public partial class Rectangle +{ + public Rectangle (int x, int y, int width, int height) + { + // JNI bindings + } +} + +Imagine we want to add a constructor to this class that takes a Point and +Size structure instead of 4 ints. We can add a new file called Rectangle.cs +with a partial class containing our new method: + +public partial class Rectangle +{ + public Rectangle (Point location, Size size) : + this (location.X, location.Y, size.Width, size.Height) + { + } +} + +At compile time, the additions class will be added to the generated class +and the final assembly will a Rectangle class with both constructors. + + +== Adding C# Classes == + +Another thing that can be done is adding fully C# managed classes to the +generated library. In the above example, let's assume that there isn't a +Point class available in Java or our library. The one we create doesn't need +to interact with Java, so we'll create it like a normal class in C#. + +By adding a Point.cs file with this class, it will end up in the binding library: + +public class Point +{ + public int X { get; set; } + public int Y { get; set; } +} diff --git a/iid/source/Additions/Additions.cs b/iid/source/Additions/Additions.cs new file mode 100644 index 000000000..19bfbaafe --- /dev/null +++ b/iid/source/Additions/Additions.cs @@ -0,0 +1,38 @@ +using System; +using System.Threading.Tasks; +using Android.OS; + +namespace Android.Gms.Iid +{ + public partial class InstanceID + { + public const string IntentFilterAction = "com.google.android.gms.iid.InstanceID"; + + public async Task GetTokenAsync (string authorizedEntity, string scope) + { + var taskCompletionSource = new TaskCompletionSource (); + + Task.Run (() => { + var token = this.GetToken (authorizedEntity, scope); + taskCompletionSource.SetResult (token); + }).ContinueWith (t => { + taskCompletionSource.SetException (t.Exception); + }, TaskContinuationOptions.OnlyOnFaulted); + return await taskCompletionSource.Task; + } + + public async Task GetTokenAsync (string authorizedEntity, string scope, Bundle extras) + { + var taskCompletionSource = new TaskCompletionSource (); + + Task.Run (() => { + var token = this.GetToken (authorizedEntity, scope, extras); + taskCompletionSource.SetResult (token); + }).ContinueWith (t => { + taskCompletionSource.SetException (t.Exception); + }, TaskContinuationOptions.OnlyOnFaulted); + + return await taskCompletionSource.Task; + } + } +} diff --git a/iid/source/Additions/Manifest.cs b/iid/source/Additions/Manifest.cs new file mode 100644 index 000000000..dc9623c32 --- /dev/null +++ b/iid/source/Additions/Manifest.cs @@ -0,0 +1,5 @@ +using System; +using Android.App; + +[assembly: UsesPermission ("com.google.android.c2dm.permission.RECEIVE")] +[assembly: UsesPermission (Android.Manifest.Permission.Internet)] diff --git a/iid/source/Iid.csproj b/iid/source/Iid.csproj new file mode 100644 index 000000000..fdac67774 --- /dev/null +++ b/iid/source/Iid.csproj @@ -0,0 +1,86 @@ + + + + Debug + AnyCPU + {EFBA0AD7-5A72-4C68-AF49-83D382785DCF};{10368E6C-D01B-4462-8E8B-01FC667A7035};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + 8.0.30703 + 2.0 + {9F7F996D-AF44-4947-8392-07B3ED2ED00D} + Library + GooglePlayServices.Iid + Resources + Assets + False + Xamarin.GooglePlayServices.Iid + v4.1 + ..\..\externals\docs\reference + + + + true + full + false + bin\Debug + DEBUG; + prompt + 4 + None + false + + + full + true + bin\Release + prompt + 4 + false + false + + + + + + + + ..\..\packages\Xamarin.Android.Support.v4.23.1.1.1\lib\MonoAndroid403\Xamarin.Android.Support.v4.dll + + + + + + Properties\GpsConsts.cs + + + + + + + + + + + + + + + + + + {3F6BAE25-ADEB-468C-8384-AD655623C341} + Base + + + {6A38FACF-F0C5-4A49-8A8A-7CE6634207CE} + Basement + + + + + + Jars\play-services-iid.jar + + + \ No newline at end of file diff --git a/iid/source/Jars/AboutJars.txt b/iid/source/Jars/AboutJars.txt new file mode 100644 index 000000000..320a154be --- /dev/null +++ b/iid/source/Jars/AboutJars.txt @@ -0,0 +1,37 @@ +This directory is for Android .jars. + +There are 4 types of jars that are supported: + +== Input Jar and Embedded Jar == + +This is the jar that bindings should be generated for. + +For example, if you were binding the Google Maps library, this would +be Google's "maps.jar". + +The difference between EmbeddedJar and InputJar is, EmbeddedJar is to be +embedded in the resulting dll as EmbeddedResource, while InputJar is not. +There are couple of reasons you wouldn't like to embed the target jar +in your dll (the ones that could be internally loaded by +feature e.g. maps.jar, or you cannot embed jars that are under some +proprietary license). + +Set the build action for these jars in the properties page to "InputJar". + + +== Reference Jar and Embedded Reference Jar == + +These are jars that are referenced by the input jar. C# bindings will +not be created for these jars. These jars will be used to resolve +types used by the input jar. + +NOTE: Do not add "android.jar" as a reference jar. It will be added automatically +based on the Target Framework selected. + +Set the build action for these jars in the properties page to "ReferenceJar". + +"EmbeddedJar" works like "ReferenceJar", but like "EmbeddedJar", it is +embedded in your dll. But at application build time, they are not included +in the final apk, like ReferenceJar files. + + diff --git a/iid/source/Properties/AssemblyInfo.cs b/iid/source/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..da0a48686 --- /dev/null +++ b/iid/source/Properties/AssemblyInfo.cs @@ -0,0 +1,47 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using Android.App; + +// Information about this assembly is defined by the following attributes. +// Change them to the values specific to your project. + +[assembly: AssemblyTitle ("Xamarin.GooglePlayServices.Iid")] +[assembly: AssemblyDescription ("")] +[assembly: AssemblyConfiguration ("")] +[assembly: AssemblyCompany ("Xamarin")] +[assembly: AssemblyProduct ("")] +[assembly: AssemblyCopyright ("Xamarin")] +[assembly: AssemblyTrademark ("")] +[assembly: AssemblyCulture ("")] + +// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}". +// The form "{Major}.{Minor}.*" will automatically update the build and revision, +// and "{Major}.{Minor}.{Build}.*" will update just the revision. + +[assembly: AssemblyVersion ("1.0.0")] + +// The following attributes are used to specify the signing key for the assembly, +// if desired. See the Mono documentation for more information about signing. + +//[assembly: AssemblyDelaySign(false)] +//[assembly: AssemblyKeyFile("")] + +[assembly: Java.Interop.JavaLibraryReference ("classes.jar", + PackageName = __Consts.PackageName, + SourceUrl = __GpsConsts.Url, + EmbeddedArchive = __Consts.AarPath, + Version = __GpsConsts.Version)] +// AppCompat-v7 resources +[assembly: Android.IncludeAndroidResourcesFromAttribute ("./", + PackageName = __Consts.PackageName, + SourceUrl = __GpsConsts.Url, + EmbeddedArchive = __Consts.AarPath, + Version = __GpsConsts.Version)] + +// Google Addon feed with GPS in it: +// https://dl-ssl.google.com/android/repository/addon.xml + +static class __Consts { + public const string PackageName = "GPS Iid"; + public const string AarPath = "m2repository/com/google/android/gms/play-services-iid/" + __GpsConsts.Version + "/play-services-iid-" + __GpsConsts.Version + ".aar"; +} diff --git a/iid/source/Transforms/EnumFields.xml b/iid/source/Transforms/EnumFields.xml new file mode 100644 index 000000000..e9af0eeb3 --- /dev/null +++ b/iid/source/Transforms/EnumFields.xml @@ -0,0 +1,18 @@ + + + diff --git a/iid/source/Transforms/EnumMethods.xml b/iid/source/Transforms/EnumMethods.xml new file mode 100644 index 000000000..2efa81467 --- /dev/null +++ b/iid/source/Transforms/EnumMethods.xml @@ -0,0 +1,18 @@ + + + diff --git a/iid/source/Transforms/Metadata.generated.xml b/iid/source/Transforms/Metadata.generated.xml new file mode 100644 index 000000000..26c2f6238 --- /dev/null +++ b/iid/source/Transforms/Metadata.generated.xml @@ -0,0 +1,2 @@ + + diff --git a/iid/source/Transforms/Metadata.xml b/iid/source/Transforms/Metadata.xml new file mode 100644 index 000000000..1616bec51 --- /dev/null +++ b/iid/source/Transforms/Metadata.xml @@ -0,0 +1,13 @@ + + + Android.Gms.Iid + + + + + + + + + + diff --git a/iid/source/packages.config b/iid/source/packages.config new file mode 100644 index 000000000..59cde6e53 --- /dev/null +++ b/iid/source/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file From b0d0cdf3c501b5254768b98d3a77172e9daf8168 Mon Sep 17 00:00:00 2001 From: Redth Date: Wed, 1 Jun 2016 13:47:11 -0400 Subject: [PATCH 014/178] Added auth-base and updated auth bindings auth now depends on auth-base --- ...amarin.GooglePlayServices.Auth.Base.nuspec | 25 +++ auth-base/source/Additions/AboutAdditions.txt | 48 ++++++ auth-base/source/Auth.Base.csproj | 84 ++++++++++ auth-base/source/Jars/AboutJars.txt | 37 +++++ auth-base/source/Properties/AssemblyInfo.cs | 47 ++++++ auth-base/source/Transforms/EnumFields.xml | 18 +++ auth-base/source/Transforms/EnumMethods.xml | 18 +++ .../source/Transforms/Metadata.generated.xml | 2 + auth-base/source/Transforms/Metadata.xml | 13 ++ auth-base/source/packages.config | 4 + auth/source/Auth.csproj | 4 + auth/source/Transforms/Metadata.generated.xml | 150 ------------------ auth/source/Transforms/Metadata.xml | 2 - 13 files changed, 300 insertions(+), 152 deletions(-) create mode 100644 auth-base/nuget/Xamarin.GooglePlayServices.Auth.Base.nuspec create mode 100644 auth-base/source/Additions/AboutAdditions.txt create mode 100644 auth-base/source/Auth.Base.csproj create mode 100644 auth-base/source/Jars/AboutJars.txt create mode 100644 auth-base/source/Properties/AssemblyInfo.cs create mode 100644 auth-base/source/Transforms/EnumFields.xml create mode 100644 auth-base/source/Transforms/EnumMethods.xml create mode 100644 auth-base/source/Transforms/Metadata.generated.xml create mode 100644 auth-base/source/Transforms/Metadata.xml create mode 100644 auth-base/source/packages.config diff --git a/auth-base/nuget/Xamarin.GooglePlayServices.Auth.Base.nuspec b/auth-base/nuget/Xamarin.GooglePlayServices.Auth.Base.nuspec new file mode 100644 index 000000000..e2f038299 --- /dev/null +++ b/auth-base/nuget/Xamarin.GooglePlayServices.Auth.Base.nuspec @@ -0,0 +1,25 @@ + + + + Xamarin.GooglePlayServices.Auth.Base + Xamarin Google Play Services - Auth Base + $version$ + Xamarin Inc. + Xamarin Inc. + true + + Xamarin.Android Bindings for Google Play Services - Auth Base + + Copyright 2013-2016 + https://github.com/xamarin/GooglePlayServicesComponents/ + https://github.com/xamarin/GooglePlayServicesComponents/blob/master/LICENSE.md + https://xamarin-component-icons.s3.amazonaws.com/Xamarin.GooglePlayServices.Auth.png + + + + + + + + + diff --git a/auth-base/source/Additions/AboutAdditions.txt b/auth-base/source/Additions/AboutAdditions.txt new file mode 100644 index 000000000..c511f1d4e --- /dev/null +++ b/auth-base/source/Additions/AboutAdditions.txt @@ -0,0 +1,48 @@ +Additions allow you to add arbitrary C# to the generated classes +before they are compiled. This can be helpful for providing convenience +methods or adding pure C# classes. + +== Adding Methods to Generated Classes == + +Let's say the library being bound has a Rectangle class with a constructor +that takes an x and y position, and a width and length size. It will look like +this: + +public partial class Rectangle +{ + public Rectangle (int x, int y, int width, int height) + { + // JNI bindings + } +} + +Imagine we want to add a constructor to this class that takes a Point and +Size structure instead of 4 ints. We can add a new file called Rectangle.cs +with a partial class containing our new method: + +public partial class Rectangle +{ + public Rectangle (Point location, Size size) : + this (location.X, location.Y, size.Width, size.Height) + { + } +} + +At compile time, the additions class will be added to the generated class +and the final assembly will a Rectangle class with both constructors. + + +== Adding C# Classes == + +Another thing that can be done is adding fully C# managed classes to the +generated library. In the above example, let's assume that there isn't a +Point class available in Java or our library. The one we create doesn't need +to interact with Java, so we'll create it like a normal class in C#. + +By adding a Point.cs file with this class, it will end up in the binding library: + +public class Point +{ + public int X { get; set; } + public int Y { get; set; } +} diff --git a/auth-base/source/Auth.Base.csproj b/auth-base/source/Auth.Base.csproj new file mode 100644 index 000000000..5169f4800 --- /dev/null +++ b/auth-base/source/Auth.Base.csproj @@ -0,0 +1,84 @@ + + + + Debug + AnyCPU + {EFBA0AD7-5A72-4C68-AF49-83D382785DCF};{10368E6C-D01B-4462-8E8B-01FC667A7035};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + 8.0.30703 + 2.0 + {B04C50F7-B0CC-4170-8820-9D584E1C0ED3} + Library + GooglePlayServices.Auth.Base + Resources + Assets + False + Xamarin.GooglePlayServices.Auth.Base + v4.1 + ..\..\externals\docs\reference + + + + true + full + false + bin\Debug + DEBUG; + prompt + 4 + None + false + + + full + true + bin\Release + prompt + 4 + false + false + + + + + + + + ..\..\packages\Xamarin.Android.Support.v4.23.1.1.1\lib\MonoAndroid403\Xamarin.Android.Support.v4.dll + + + + + + Properties\GpsConsts.cs + + + + + + + + + + + + + + + + {3F6BAE25-ADEB-468C-8384-AD655623C341} + Base + + + {6A38FACF-F0C5-4A49-8A8A-7CE6634207CE} + Basement + + + + + + Jars\play-services-auth-base.jar + + + \ No newline at end of file diff --git a/auth-base/source/Jars/AboutJars.txt b/auth-base/source/Jars/AboutJars.txt new file mode 100644 index 000000000..320a154be --- /dev/null +++ b/auth-base/source/Jars/AboutJars.txt @@ -0,0 +1,37 @@ +This directory is for Android .jars. + +There are 4 types of jars that are supported: + +== Input Jar and Embedded Jar == + +This is the jar that bindings should be generated for. + +For example, if you were binding the Google Maps library, this would +be Google's "maps.jar". + +The difference between EmbeddedJar and InputJar is, EmbeddedJar is to be +embedded in the resulting dll as EmbeddedResource, while InputJar is not. +There are couple of reasons you wouldn't like to embed the target jar +in your dll (the ones that could be internally loaded by +feature e.g. maps.jar, or you cannot embed jars that are under some +proprietary license). + +Set the build action for these jars in the properties page to "InputJar". + + +== Reference Jar and Embedded Reference Jar == + +These are jars that are referenced by the input jar. C# bindings will +not be created for these jars. These jars will be used to resolve +types used by the input jar. + +NOTE: Do not add "android.jar" as a reference jar. It will be added automatically +based on the Target Framework selected. + +Set the build action for these jars in the properties page to "ReferenceJar". + +"EmbeddedJar" works like "ReferenceJar", but like "EmbeddedJar", it is +embedded in your dll. But at application build time, they are not included +in the final apk, like ReferenceJar files. + + diff --git a/auth-base/source/Properties/AssemblyInfo.cs b/auth-base/source/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..9d8d99bd0 --- /dev/null +++ b/auth-base/source/Properties/AssemblyInfo.cs @@ -0,0 +1,47 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using Android.App; + +// Information about this assembly is defined by the following attributes. +// Change them to the values specific to your project. + +[assembly: AssemblyTitle ("Xamarin.GooglePlayServices.Auth.Base")] +[assembly: AssemblyDescription ("")] +[assembly: AssemblyConfiguration ("")] +[assembly: AssemblyCompany ("Xamarin")] +[assembly: AssemblyProduct ("")] +[assembly: AssemblyCopyright ("Xamarin")] +[assembly: AssemblyTrademark ("")] +[assembly: AssemblyCulture ("")] + +// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}". +// The form "{Major}.{Minor}.*" will automatically update the build and revision, +// and "{Major}.{Minor}.{Build}.*" will update just the revision. + +[assembly: AssemblyVersion ("1.0.0")] + +// The following attributes are used to specify the signing key for the assembly, +// if desired. See the Mono documentation for more information about signing. + +//[assembly: AssemblyDelaySign(false)] +//[assembly: AssemblyKeyFile("")] + +[assembly: Java.Interop.JavaLibraryReference ("classes.jar", + PackageName = __Consts.PackageName, + SourceUrl = __GpsConsts.Url, + EmbeddedArchive = __Consts.AarPath, + Version = __GpsConsts.Version)] +// AppCompat-v7 resources +[assembly: Android.IncludeAndroidResourcesFromAttribute ("./", + PackageName = __Consts.PackageName, + SourceUrl = __GpsConsts.Url, + EmbeddedArchive = __Consts.AarPath, + Version = __GpsConsts.Version)] + +// Google Addon feed with GPS in it: +// https://dl-ssl.google.com/android/repository/addon.xml + +static class __Consts { + public const string PackageName = "GPS Auth Base"; + public const string AarPath = "m2repository/com/google/android/gms/play-services-auth-base/" + __GpsConsts.Version + "/play-services-auth-base-" + __GpsConsts.Version + ".aar"; +} diff --git a/auth-base/source/Transforms/EnumFields.xml b/auth-base/source/Transforms/EnumFields.xml new file mode 100644 index 000000000..e9af0eeb3 --- /dev/null +++ b/auth-base/source/Transforms/EnumFields.xml @@ -0,0 +1,18 @@ + + + diff --git a/auth-base/source/Transforms/EnumMethods.xml b/auth-base/source/Transforms/EnumMethods.xml new file mode 100644 index 000000000..2efa81467 --- /dev/null +++ b/auth-base/source/Transforms/EnumMethods.xml @@ -0,0 +1,18 @@ + + + diff --git a/auth-base/source/Transforms/Metadata.generated.xml b/auth-base/source/Transforms/Metadata.generated.xml new file mode 100644 index 000000000..26c2f6238 --- /dev/null +++ b/auth-base/source/Transforms/Metadata.generated.xml @@ -0,0 +1,2 @@ + + diff --git a/auth-base/source/Transforms/Metadata.xml b/auth-base/source/Transforms/Metadata.xml new file mode 100644 index 000000000..143d42d19 --- /dev/null +++ b/auth-base/source/Transforms/Metadata.xml @@ -0,0 +1,13 @@ + + + Android.Gms.Auth + + + + + + + + + + diff --git a/auth-base/source/packages.config b/auth-base/source/packages.config new file mode 100644 index 000000000..59cde6e53 --- /dev/null +++ b/auth-base/source/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/auth/source/Auth.csproj b/auth/source/Auth.csproj index bff1a9827..e33735ffe 100644 --- a/auth/source/Auth.csproj +++ b/auth/source/Auth.csproj @@ -81,6 +81,10 @@ {6A38FACF-F0C5-4A49-8A8A-7CE6634207CE} Basement + + {B04C50F7-B0CC-4170-8820-9D584E1C0ED3} + Auth.Base + \ No newline at end of file diff --git a/auth/source/Transforms/Metadata.generated.xml b/auth/source/Transforms/Metadata.generated.xml index d14421bc2..26c2f6238 100644 --- a/auth/source/Transforms/Metadata.generated.xml +++ b/auth/source/Transforms/Metadata.generated.xml @@ -1,152 +1,2 @@ - dest - flags - other - output - flags - credential - id - accountType - nameValue - password - profilePictureUri - output - flags - forNewAccount - showAddAccountButton - showCancelButton - output - flags - accountTypes - config - config - passwordLoginSupported - supportsPasswordLogin - client - credential - client - client - request - client - request - client - credential - output - flags - accountTypes - emailAddressIdentifierSupported - hintPickerConfig - accountType - idToken - output - flags - output - flags - credential - output - flags - output - flags - credential - output - flags - client - credential - client - client - request - client - request - client - credential - code - data - reply - flags - code - data - reply - flags - client - request - parcel - flags - parcel - flags - url - nameValue - value - body - method - timeoutMillis - googlePlayServicesStatusCode - recoveryAction - statusCode - headers - body - responseCode - headers - body - googlePlayServicesStatusCode - recoveryAction - statusCode - headers - body - parcel - flags - client - data - client - client - client - statusCode - intent - objValue - output - flags - evt - requestCode - resultCode - data - savedInstanceState - outState - client - data - client - client - client - code - data - reply - flags - code - data - reply - flags - code - data - reply - flags - code - data - reply - flags - code - data - reply - flags - code - data - reply - flags - code - data - reply - flags - code - data - reply - flags - client - request diff --git a/auth/source/Transforms/Metadata.xml b/auth/source/Transforms/Metadata.xml index ff5b0171f..222d2524b 100644 --- a/auth/source/Transforms/Metadata.xml +++ b/auth/source/Transforms/Metadata.xml @@ -8,8 +8,6 @@ Android.Gms.Auth.Api.Proxy Android.Gms.Auth.Api.SignIn Android.Gms.Auth.Api.SignIn.Internal - - From 941f7aef289dcb731396fd16ffbc4fa14288f30b Mon Sep 17 00:00:00 2001 From: Redth Date: Wed, 1 Jun 2016 13:47:27 -0400 Subject: [PATCH 015/178] Updated appindexing binding --- appindexing/component/component.template.yaml | 16 +- appindexing/samples/AppIndexingSample.sln | 18 ++ .../AppIndexingSample.csproj | 12 ++ .../Additions/IPendingResultExtensions.cs | 5 + appindexing/source/AppIndexing.csproj | 14 ++ .../source/Transforms/Metadata.generated.xml | 169 ------------------ appindexing/source/Transforms/Metadata.xml | 2 + 7 files changed, 62 insertions(+), 174 deletions(-) diff --git a/appindexing/component/component.template.yaml b/appindexing/component/component.template.yaml index c73cf49fd..bb7d7a0b8 100644 --- a/appindexing/component/component.template.yaml +++ b/appindexing/component/component.template.yaml @@ -10,9 +10,11 @@ icons: - icons/googleplayservices-appindexing_512x512.png libraries: android: - - ../../output/Xamarin.GooglePlayServices.AppIndexing.dll - - ../../output/Xamarin.GooglePlayServices.Basement.dll - ../../output/Xamarin.GooglePlayServices.Base.dll + - ../../output/Xamarin.GooglePlayServices.Basement.dll + - ../../output/Xamarin.GooglePlayServices.Tasks.dll + - ../../output/Xamarin.Firebase.Common.dll + - ../../output/Xamarin.GooglePlayServices.AppIndexing.dll is_shell: true packages: android: @@ -21,14 +23,18 @@ samples: - name: "AppIndexing Sample" path: ../../appindexing/samples/AppIndexingSample.sln removeProjects: - - Xamarin.GooglePlayServices.Base - - Xamarin.GooglePlayServices.Basement - - Xamarin.GooglePlayServices.AppIndexing + - Base + - Basement + - Tasks + - Firebase-Common + - AppIndexing installNuGets: - project: AppIndexingSample packages: - Xamarin.GooglePlayServices.Base - Xamarin.GooglePlayServices.Basement + - Xamarin.GooglePlayServices.Tasks + - Xamarin.Firebase.Common - Xamarin.GooglePlayServices.AppIndexing local-nuget-repo: ../../output/ no_build: true diff --git a/appindexing/samples/AppIndexingSample.sln b/appindexing/samples/AppIndexingSample.sln index 6ed6d9f8c..0ce4fd24e 100644 --- a/appindexing/samples/AppIndexingSample.sln +++ b/appindexing/samples/AppIndexingSample.sln @@ -9,6 +9,12 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Basement", "..\..\basement\ EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AppIndexing", "..\source\AppIndexing.csproj", "{A069B942-EE12-4283-8C4C-F46549D3978A}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Base", "..\..\base\source\Base.csproj", "{3F6BAE25-ADEB-468C-8384-AD655623C341}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Firebase-Common", "..\..\firebase-common\source\Firebase-Common.csproj", "{865652D3-8D1A-4779-92FC-4C54719286B7}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tasks", "..\..\tasks\source\Tasks.csproj", "{53F87D88-8871-41A2-9F81-B79AB02FEC24}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -31,5 +37,17 @@ Global {AC99F948-17A9-464E-8033-429D6C1D23F2}.Debug|Any CPU.Build.0 = Debug|Any CPU {AC99F948-17A9-464E-8033-429D6C1D23F2}.Release|Any CPU.ActiveCfg = Release|Any CPU {AC99F948-17A9-464E-8033-429D6C1D23F2}.Release|Any CPU.Build.0 = Release|Any CPU + {3F6BAE25-ADEB-468C-8384-AD655623C341}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3F6BAE25-ADEB-468C-8384-AD655623C341}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3F6BAE25-ADEB-468C-8384-AD655623C341}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3F6BAE25-ADEB-468C-8384-AD655623C341}.Release|Any CPU.Build.0 = Release|Any CPU + {865652D3-8D1A-4779-92FC-4C54719286B7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {865652D3-8D1A-4779-92FC-4C54719286B7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {865652D3-8D1A-4779-92FC-4C54719286B7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {865652D3-8D1A-4779-92FC-4C54719286B7}.Release|Any CPU.Build.0 = Release|Any CPU + {53F87D88-8871-41A2-9F81-B79AB02FEC24}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {53F87D88-8871-41A2-9F81-B79AB02FEC24}.Debug|Any CPU.Build.0 = Debug|Any CPU + {53F87D88-8871-41A2-9F81-B79AB02FEC24}.Release|Any CPU.ActiveCfg = Release|Any CPU + {53F87D88-8871-41A2-9F81-B79AB02FEC24}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection EndGlobal diff --git a/appindexing/samples/AppIndexingSample/AppIndexingSample.csproj b/appindexing/samples/AppIndexingSample/AppIndexingSample.csproj index 7fb595ff6..3da6d3644 100644 --- a/appindexing/samples/AppIndexingSample/AppIndexingSample.csproj +++ b/appindexing/samples/AppIndexingSample/AppIndexingSample.csproj @@ -82,5 +82,17 @@ {A069B942-EE12-4283-8C4C-F46549D3978A} AppIndexing + + {3F6BAE25-ADEB-468C-8384-AD655623C341} + Base + + + {865652D3-8D1A-4779-92FC-4C54719286B7} + Firebase-Common + + + {53F87D88-8871-41A2-9F81-B79AB02FEC24} + Tasks + \ No newline at end of file diff --git a/appindexing/source/Additions/IPendingResultExtensions.cs b/appindexing/source/Additions/IPendingResultExtensions.cs index 66593337e..d93f56ef1 100644 --- a/appindexing/source/Additions/IPendingResultExtensions.cs +++ b/appindexing/source/Additions/IPendingResultExtensions.cs @@ -15,21 +15,26 @@ public static async Task EndAsync (this IAppIndexApi api, GoogleApiCli public static async Task StartAsync (this IAppIndexApi api, GoogleApiClient apiClient, global::Android.Gms.AppIndexing.Action action) { return (await api.Start (apiClient, action)).JavaCast (); } + [Obsolete] public static async Task ViewAsync (this IAppIndexApi api, GoogleApiClient apiClient, Android.App.Activity activity, Android.Content.Intent viewIntent, string title, Android.Net.Uri webUrl, IList outLinks) { return (await api.View (apiClient, activity, viewIntent, title, webUrl, outLinks)).JavaCast (); } + [Obsolete] public static async Task ViewAsync (this IAppIndexApi api, GoogleApiClient apiClient, Android.App.Activity activity, Android.Net.Uri appIndexingUrl, string title, Android.Net.Uri webUrl, IList outLinks) { return (await api.View (apiClient, activity, appIndexingUrl, title, webUrl, outLinks)).JavaCast (); } + [Obsolete] public static async Task ViewEndAsync (this IAppIndexApi api, GoogleApiClient apiClient, Android.App.Activity activity, Android.Content.Intent viewIntent) { return (await api.ViewEnd (apiClient, activity, viewIntent)).JavaCast (); } + [Obsolete] public static async Task ViewEndAsync (this IAppIndexApi api, GoogleApiClient apiClient, Android.App.Activity activity, Android.Net.Uri appUri) { return (await api.ViewEnd (apiClient, activity, appUri)).JavaCast (); } } public static partial class IAppIndexApiActionResultExtensions { + [Obsolete] public static async Task EndAsync (this IAppIndexApiActionResult api, GoogleApiClient apiClient) { return (await api.End (apiClient)).JavaCast (); } diff --git a/appindexing/source/AppIndexing.csproj b/appindexing/source/AppIndexing.csproj index db858161b..567974e85 100644 --- a/appindexing/source/AppIndexing.csproj +++ b/appindexing/source/AppIndexing.csproj @@ -16,6 +16,8 @@ + 8.0.30703 + 2.0 true @@ -75,6 +77,18 @@ {6A38FACF-F0C5-4A49-8A8A-7CE6634207CE} Basement + + {3F6BAE25-ADEB-468C-8384-AD655623C341} + Base + + + {53F87D88-8871-41A2-9F81-B79AB02FEC24} + Tasks + + + {865652D3-8D1A-4779-92FC-4C54719286B7} + Firebase-Common + \ No newline at end of file diff --git a/appindexing/source/Transforms/Metadata.generated.xml b/appindexing/source/Transforms/Metadata.generated.xml index 4a1755177..26c2f6238 100644 --- a/appindexing/source/Transforms/Metadata.generated.xml +++ b/appindexing/source/Transforms/Metadata.generated.xml @@ -1,171 +1,2 @@ - dest - flags - packageName - corpusName - uri - dest - flags - content - sectionInfo - content - sectionInfo - globalSearchSectionType - blobContent - sectionInfo - dest - flags - dest - flags - filterAccount - includeDeviceOnlyData - includeThirdPartyContext - includeUsageEnded - filterPackageName - output - flags - output - flags - output - flags - packageName - viewIntent - title - webUrl - schemaOrgType - outLinks - eventStatus - dest - flags - actionType - objectName - objectAppUri - actionType - objectName - objectId - objectAppUri - actionType - key - value - key - value - key - value - key - values - key - values - actionStatusType - nameValue - thing - url - objectValue - uri - packageName - deepLink - apiClient - action - apiClient - action - apiClient - action - apiClient - activity - viewIntent - title - webUrl - outLinks - apiClient - activity - appIndexingUrl - title - webUrl - outLinks - apiClient - activity - viewIntent - apiClient - activity - appUri - apiClient - appUri - webUrl - view - appUri - view - key - value - key - value - key - value - key - values - key - values - description - id - nameValue - theType - url - code - data - reply - flags - code - data - reply - flags - apiClient - action - apiClient - action - apiClient - action - apiClient - activity - viewIntent - title - webUrl - outLinks - apiClient - activity - appIndexingUrl - title - webUrl - outLinks - apiClient - activity - viewIntent - apiClient - activity - appUri - oValue - output - oValue - output - oValue - output - oValue - output - oValue - output - code - data - reply - flags - code - data - reply - flags - client - accessToken - client - webAppClientId - parcel - iValue - client - accessToken - client - webAppClientId diff --git a/appindexing/source/Transforms/Metadata.xml b/appindexing/source/Transforms/Metadata.xml index bd25a99e7..d575f877d 100644 --- a/appindexing/source/Transforms/Metadata.xml +++ b/appindexing/source/Transforms/Metadata.xml @@ -3,7 +3,9 @@ Android.Gms.AppIndexing Android.Gms.AppDataSearch Android.Gms.Search + Firebase.AppIndexing.Internal + From 1dbc8e8a9a7bc506f42dcb273795cc3561c9174c Mon Sep 17 00:00:00 2001 From: Redth Date: Wed, 1 Jun 2016 13:47:42 -0400 Subject: [PATCH 016/178] Updated appinvite-binding --- appinvite/component/component.template.yaml | 14 ++++++++++---- appinvite/source/Additions/Manifest.cs | 3 ++- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/appinvite/component/component.template.yaml b/appinvite/component/component.template.yaml index 5f5230226..5735f6383 100644 --- a/appinvite/component/component.template.yaml +++ b/appinvite/component/component.template.yaml @@ -10,9 +10,11 @@ icons: - icons/googleplayservices-appinvite_512x512.png libraries: android: - - ../../output/Xamarin.GooglePlayServices.AppInvite.dll - ../../output/Xamarin.GooglePlayServices.Base.dll - ../../output/Xamarin.GooglePlayServices.Basement.dll + - ../../output/Xamarin.GooglePlayServices.Tasks.dll + - ../../output/Xamarin.Firebase.Common.dll + - ../../output/Xamarin.GooglePlayServices.AppInvite.dll is_shell: true packages: android: @@ -21,14 +23,18 @@ samples: - name: "AppInvite Sample" path: ../../appinvite/samples/AppInviteSample.sln removeProjects: - - Xamarin.GooglePlayServices.Base - - Xamarin.GooglePlayServices.Basement - - Xamarin.GooglePlayServices.AppInvite + - Base + - Basement + - Tasks + - Firebase-Common + - AppInvite installNuGets: - project: AppInviteSample packages: - Xamarin.GooglePlayServices.Base - Xamarin.GooglePlayServices.Basement + - Xamarin.GooglePlayServices.Tasks + - Xamarin.Firebase.Common - Xamarin.GooglePlayServices.AppInvite local-nuget-repo: ../../output/ no_build: true diff --git a/appinvite/source/Additions/Manifest.cs b/appinvite/source/Additions/Manifest.cs index 8853c9679..bf22b025f 100644 --- a/appinvite/source/Additions/Manifest.cs +++ b/appinvite/source/Additions/Manifest.cs @@ -2,6 +2,8 @@ using Android.Runtime; using Android.App; +[assembly: UsesPermission (Android.Manifest.Permission.Internet)] + namespace Android.Gms.AppInvite { // PACKAGE: com.google.android.gms.appinvite @@ -22,6 +24,5 @@ namespace Android.Gms.AppInvite [IntentFilter (new [] { "com.google.android.gms.appinvite.ACTION_PREVIEW" }, Categories = new [] { global::Android.Content.Intent.CategoryDefault })] partial class PreviewActivity { } - } From 35d2e52b9dbbe2eceb41c39f6c3c799dfc34539f Mon Sep 17 00:00:00 2001 From: Redth Date: Wed, 1 Jun 2016 13:47:51 -0400 Subject: [PATCH 017/178] Updated cast binding and sample --- cast/component/component.template.yaml | 12 +- cast/samples/CastingCall.sln | 18 +- cast/samples/CastingCall/CastingCall.csproj | 11 +- cast/source/Transforms/Metadata.generated.xml | 424 ------------------ 4 files changed, 33 insertions(+), 432 deletions(-) diff --git a/cast/component/component.template.yaml b/cast/component/component.template.yaml index 297ddc400..8ab07e46c 100644 --- a/cast/component/component.template.yaml +++ b/cast/component/component.template.yaml @@ -12,6 +12,8 @@ libraries: android: - ../../output/Xamarin.GooglePlayServices.Base.dll - ../../output/Xamarin.GooglePlayServices.Basement.dll + - ../../output/Xamarin.GooglePlayServices.Tasks.dll + - ../../output/Xamarin.Firebase.Common.dll - ../../output/Xamarin.GooglePlayServices.Cast.dll is_shell: true packages: @@ -21,14 +23,18 @@ samples: - name: "Casting Call" path: ../../cast/samples/CastingCall.sln removeProjects: - - Xamarin.GooglePlayServices.Base - - Xamarin.GooglePlayServices.Basement - - Xamarin.GooglePlayServices.Cast + - Base + - Basement + - Tasks + - Firebase-Common + - Cast installNuGets: - project: CastingCall packages: - Xamarin.GooglePlayServices.Base - Xamarin.GooglePlayServices.Basement + - Xamarin.GooglePlayServices.Tasks + - Xamarin.Firebase.Common - Xamarin.GooglePlayServices.Cast local-nuget-repo: ../../output/ no_build: true diff --git a/cast/samples/CastingCall.sln b/cast/samples/CastingCall.sln index 8967340bf..02492e844 100644 --- a/cast/samples/CastingCall.sln +++ b/cast/samples/CastingCall.sln @@ -5,11 +5,15 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CastingCall.UITests", "Cast EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CastingCall", "CastingCall\CastingCall.csproj", "{3FB8C922-3AFB-47F6-BCD4-D5F34E375573}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.GooglePlayServices.Base", "..\..\base\source\Base.csproj", "{3F6BAE25-ADEB-468C-8384-AD655623C341}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Base", "..\..\base\source\Base.csproj", "{3F6BAE25-ADEB-468C-8384-AD655623C341}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.GooglePlayServices.Cast", "..\source\Cast.csproj", "{C1A9C587-B744-44D2-AD42-14386D424667}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Cast", "..\source\Cast.csproj", "{C1A9C587-B744-44D2-AD42-14386D424667}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.GooglePlayServices.Basement", "..\..\basement\source\Basement.csproj", "{6A38FACF-F0C5-4A49-8A8A-7CE6634207CE}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Basement", "..\..\basement\source\Basement.csproj", "{6A38FACF-F0C5-4A49-8A8A-7CE6634207CE}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tasks", "..\..\tasks\source\Tasks.csproj", "{53F87D88-8871-41A2-9F81-B79AB02FEC24}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Firebase-Common", "..\..\firebase-common\source\Firebase-Common.csproj", "{865652D3-8D1A-4779-92FC-4C54719286B7}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -37,5 +41,13 @@ Global {C1A9C587-B744-44D2-AD42-14386D424667}.Debug|Any CPU.Build.0 = Debug|Any CPU {C1A9C587-B744-44D2-AD42-14386D424667}.Release|Any CPU.ActiveCfg = Release|Any CPU {C1A9C587-B744-44D2-AD42-14386D424667}.Release|Any CPU.Build.0 = Release|Any CPU + {53F87D88-8871-41A2-9F81-B79AB02FEC24}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {53F87D88-8871-41A2-9F81-B79AB02FEC24}.Debug|Any CPU.Build.0 = Debug|Any CPU + {53F87D88-8871-41A2-9F81-B79AB02FEC24}.Release|Any CPU.ActiveCfg = Release|Any CPU + {53F87D88-8871-41A2-9F81-B79AB02FEC24}.Release|Any CPU.Build.0 = Release|Any CPU + {865652D3-8D1A-4779-92FC-4C54719286B7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {865652D3-8D1A-4779-92FC-4C54719286B7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {865652D3-8D1A-4779-92FC-4C54719286B7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {865652D3-8D1A-4779-92FC-4C54719286B7}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection EndGlobal diff --git a/cast/samples/CastingCall/CastingCall.csproj b/cast/samples/CastingCall/CastingCall.csproj index 656980ef6..69b89057a 100644 --- a/cast/samples/CastingCall/CastingCall.csproj +++ b/cast/samples/CastingCall/CastingCall.csproj @@ -16,6 +16,7 @@ False CastingCall v4.2 + armeabi;armeabi-v7a;x86;arm64-v8a;x86_64 true @@ -27,7 +28,6 @@ 4 None false - armeabi;armeabi-v7a;x86;arm64-v8a;x86_64 False @@ -38,7 +38,6 @@ 4 false false - armeabi;armeabi-v7a;x86;arm64-v8a;x86_64 True @@ -94,6 +93,14 @@ {6A38FACF-F0C5-4A49-8A8A-7CE6634207CE} Basement + + {865652D3-8D1A-4779-92FC-4C54719286B7} + Firebase-Common + + + {53F87D88-8871-41A2-9F81-B79AB02FEC24} + Tasks + \ No newline at end of file diff --git a/cast/source/Transforms/Metadata.generated.xml b/cast/source/Transforms/Metadata.generated.xml index de1d535df..26c2f6238 100644 --- a/cast/source/Transforms/Metadata.generated.xml +++ b/cast/source/Transforms/Metadata.generated.xml @@ -1,426 +1,2 @@ - namespaces - objValue - nameSpace - output - flags - client - client - client - client - client - client - client - client - applicationId - client - applicationId - sessionId - client - applicationId - client - applicationId - options - client - applicationId - relaunchIfRunning - client - client - nameSpace - client - client - nameSpace - message - client - nameSpace - callbacks - client - mute - client - volume - client - client - sessionId - client - client - client - client - client - client - client - client - applicationId - client - applicationId - sessionId - client - applicationId - client - applicationId - options - client - applicationId - relaunchIfRunning - client - client - nameSpace - client - client - nameSpace - message - client - nameSpace - callbacks - client - mute - client - volume - client - client - sessionId - castDevice - castListener - castDevice - castListener - enabled - activeInputState - statusCode - applicationMetadata - standbyState - castDevice - nameSpace - message - objValue - extras - preferredWidth - preferredHeight - capabilities - capability - castDevice - bundle - output - flags - applicationId - applicationId - namespaces - namespaces - applicationId - locale - serviceContext - display - serviceContext - display - theme - castDevice - callbacks - status - apiClient - appId - apiClient - intent - intent - flags - startId - activityContext - serviceClass - applicationId - device - notificationSettings - callbacks - notificationSettings - notification - notificationPendingIntent - notificationText - notificationTitle - statusCode - objValue - output - flags - objValue - language - relaunchIfRunning - output - flags - locale - relaunchIfRunning - other - textTrackStyle - contentId - contentType - customData - mediaTracks - metadata - duration - streamType - textTrackStyle - mediaType - image - key - other - key - key - key - key - key - key - value - key - value - key - value - key - value - other - media - item - json - activeTrackIds - autoplay - customData - playbackDuration - preloadTime - startTime - json - index - itemId - mediaCommand - other - contentId - contentType - trackId - trackType - contentId - contentType - customData - language - locale - trackName - subtype - apiClient - mediaInfo - apiClient - mediaInfo - autoplay - apiClient - mediaInfo - autoplay - playPosition - apiClient - mediaInfo - autoplay - playPosition - customData - apiClient - mediaInfo - autoplay - playPosition - activeTrackIds - customData - castDevice - nameSpace - message - apiClient - apiClient - customData - apiClient - apiClient - customData - apiClient - item - customData - apiClient - item - insertBeforeItemId - playPosition - customData - apiClient - item - insertBeforeItemId - customData - apiClient - itemsToInsert - insertBeforeItemId - customData - apiClient - itemId - playPosition - customData - apiClient - itemId - customData - apiClient - items - startIndex - repeatMode - playPosition - customData - apiClient - items - startIndex - repeatMode - customData - apiClient - itemId - newIndex - customData - apiClient - customData - apiClient - customData - apiClient - itemId - customData - apiClient - itemIdsToRemove - customData - apiClient - itemIdsToReorder - insertBeforeItemId - customData - apiClient - repeatMode - customData - apiClient - itemsToUpdate - customData - apiClient - apiClient - position - apiClient - position - resumeState - apiClient - position - resumeState - customData - apiClient - trackIds - listener - listener - listener - listener - apiClient - muteState - apiClient - muteState - customData - apiClient - volume - apiClient - volume - customData - apiClient - trackStyle - apiClient - apiClient - customData - other - context - backgroundColor - customData - edgeColor - edgeType - fontFamily - fontGenericFamily - fontScale - fontStyle - foregroundColor - windowColor - windowCornerRadius - windowType - channel - googleApiClient - castSessionId - playerId - extraMessageData - extraMessageData - playerId - extraMessageData - extraMessageData - playerId - extraMessageData - extraMessageData - playerId - extraMessageData - extraMessageData - playerId - extraMessageData - extraMessageData - playerId - extraMessageData - extraMessageData - playerId - extraMessageData - extraMessageData - listener - sessionLabel - other - playerId - playerState - other - other - other - other - playerId - other - playerId - other - playerId - other - objValue - output - flags - objValue - output - flags - sessionLabel - result - code - data - reply - flags - statusCode - code - data - reply - flags - playerId - extraMessageData - playerId - extraMessageData - listener - otherObj - other - playerId - playerState - other - other - other - other - playerId - other - playerId - other - playerId - other - otherObj - otherObj - apiClient - appId - apiClient - statusCode - statusCode - statusCode - code - data - reply - flags - code - data - reply - flags - code - data - reply - flags From 36db9133dd236c0952d8f9c9d49e152f4d4cd24a Mon Sep 17 00:00:00 2001 From: Redth Date: Wed, 1 Jun 2016 13:48:01 -0400 Subject: [PATCH 018/178] Updated drive binding and sample --- drive/component/component.template.yaml | 12 +- drive/samples/DriveSample.sln | 26 +- drive/samples/DriveSample/DriveSample.csproj | 15 +- drive/source/Drive.csproj | 8 + .../source/Transforms/Metadata.generated.xml | 618 ------------------ 5 files changed, 47 insertions(+), 632 deletions(-) diff --git a/drive/component/component.template.yaml b/drive/component/component.template.yaml index a39a6ed86..cf5b83dfb 100644 --- a/drive/component/component.template.yaml +++ b/drive/component/component.template.yaml @@ -12,6 +12,8 @@ libraries: android: - ../../output/Xamarin.GooglePlayServices.Base.dll - ../../output/Xamarin.GooglePlayServices.Basement.dll + - ../../output/Xamarin.GooglePlayServices.Tasks.dll + - ../../output/Xamarin.Firebase.Common.dll - ../../output/Xamarin.GooglePlayServices.Drive.dll is_shell: true packages: @@ -21,14 +23,18 @@ samples: - name: "Drive Sample" path: ../../drive/samples/DriveSample.sln removeProjects: - - Xamarin.GooglePlayServices.Base - - Xamarin.GooglePlayServices.Basement - - Xamarin.GooglePlayServices.Drive + - Base + - Basement + - Tasks + - Firebase-Common + - Drive installNuGets: - project: DriveSample packages: - Xamarin.GooglePlayServices.Base - Xamarin.GooglePlayServices.Basement + - Xamarin.GooglePlayServices.Tasks + - Xamarin.Firebase.Common - Xamarin.GooglePlayServices.Drive local-nuget-repo: ../../output/ no_build: true diff --git a/drive/samples/DriveSample.sln b/drive/samples/DriveSample.sln index 249dafb46..6c040ddb5 100644 --- a/drive/samples/DriveSample.sln +++ b/drive/samples/DriveSample.sln @@ -5,11 +5,15 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DriveSample", "DriveSample\ EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DriveSample.UITests", "DriveSample.UITests\DriveSample.UITests.csproj", "{929B6BAA-0E43-45BE-AC1A-3D9648887078}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.GooglePlayServices.Base", "..\..\base\source\Base.csproj", "{3F6BAE25-ADEB-468C-8384-AD655623C341}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Base", "..\..\base\source\Base.csproj", "{3F6BAE25-ADEB-468C-8384-AD655623C341}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.GooglePlayServices.Drive", "..\source\drive\Drive.csproj", "{8BAFA1ED-B5D9-49ED-A553-E557D2A0357F}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Basement", "..\..\basement\source\Basement.csproj", "{6A38FACF-F0C5-4A49-8A8A-7CE6634207CE}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xamarin.GooglePlayServices.Basement", "..\..\basement\source\Basement.csproj", "{6A38FACF-F0C5-4A49-8A8A-7CE6634207CE}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tasks", "..\..\tasks\source\Tasks.csproj", "{53F87D88-8871-41A2-9F81-B79AB02FEC24}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Firebase-Common", "..\..\firebase-common\source\Firebase-Common.csproj", "{865652D3-8D1A-4779-92FC-4C54719286B7}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Drive", "..\source\Drive.csproj", "{8BAFA1ED-B5D9-49ED-A553-E557D2A0357F}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -29,13 +33,21 @@ Global {6A38FACF-F0C5-4A49-8A8A-7CE6634207CE}.Debug|Any CPU.Build.0 = Debug|Any CPU {6A38FACF-F0C5-4A49-8A8A-7CE6634207CE}.Release|Any CPU.ActiveCfg = Release|Any CPU {6A38FACF-F0C5-4A49-8A8A-7CE6634207CE}.Release|Any CPU.Build.0 = Release|Any CPU - {8BAFA1ED-B5D9-49ED-A553-E557D2A0357F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8BAFA1ED-B5D9-49ED-A553-E557D2A0357F}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8BAFA1ED-B5D9-49ED-A553-E557D2A0357F}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8BAFA1ED-B5D9-49ED-A553-E557D2A0357F}.Release|Any CPU.Build.0 = Release|Any CPU {929B6BAA-0E43-45BE-AC1A-3D9648887078}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {929B6BAA-0E43-45BE-AC1A-3D9648887078}.Debug|Any CPU.Build.0 = Debug|Any CPU {929B6BAA-0E43-45BE-AC1A-3D9648887078}.Release|Any CPU.ActiveCfg = Release|Any CPU {929B6BAA-0E43-45BE-AC1A-3D9648887078}.Release|Any CPU.Build.0 = Release|Any CPU + {53F87D88-8871-41A2-9F81-B79AB02FEC24}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {53F87D88-8871-41A2-9F81-B79AB02FEC24}.Debug|Any CPU.Build.0 = Debug|Any CPU + {53F87D88-8871-41A2-9F81-B79AB02FEC24}.Release|Any CPU.ActiveCfg = Release|Any CPU + {53F87D88-8871-41A2-9F81-B79AB02FEC24}.Release|Any CPU.Build.0 = Release|Any CPU + {865652D3-8D1A-4779-92FC-4C54719286B7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {865652D3-8D1A-4779-92FC-4C54719286B7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {865652D3-8D1A-4779-92FC-4C54719286B7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {865652D3-8D1A-4779-92FC-4C54719286B7}.Release|Any CPU.Build.0 = Release|Any CPU + {8BAFA1ED-B5D9-49ED-A553-E557D2A0357F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8BAFA1ED-B5D9-49ED-A553-E557D2A0357F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8BAFA1ED-B5D9-49ED-A553-E557D2A0357F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8BAFA1ED-B5D9-49ED-A553-E557D2A0357F}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection EndGlobal diff --git a/drive/samples/DriveSample/DriveSample.csproj b/drive/samples/DriveSample/DriveSample.csproj index 0febcf89f..920666726 100644 --- a/drive/samples/DriveSample/DriveSample.csproj +++ b/drive/samples/DriveSample/DriveSample.csproj @@ -15,7 +15,8 @@ True True DriveSample - v5.1 + v6.0 + armeabi;armeabi-v7a;x86;arm64-v8a;x86_64 true @@ -27,7 +28,6 @@ 4 None false - armeabi;armeabi-v7a;x86;arm64-v8a;x86_64 full @@ -37,7 +37,6 @@ 4 false false - armeabi;armeabi-v7a;x86;arm64-v8a;x86_64 @@ -68,7 +67,7 @@ - + {3F6BAE25-ADEB-468C-8384-AD655623C341} @@ -82,5 +81,13 @@ {6A38FACF-F0C5-4A49-8A8A-7CE6634207CE} Basement + + {865652D3-8D1A-4779-92FC-4C54719286B7} + Firebase-Common + + + {53F87D88-8871-41A2-9F81-B79AB02FEC24} + Tasks + \ No newline at end of file diff --git a/drive/source/Drive.csproj b/drive/source/Drive.csproj index 62540611c..88c9f79e5 100644 --- a/drive/source/Drive.csproj +++ b/drive/source/Drive.csproj @@ -82,6 +82,14 @@ {6A38FACF-F0C5-4A49-8A8A-7CE6634207CE} Basement + + {865652D3-8D1A-4779-92FC-4C54719286B7} + Firebase-Common + + + {53F87D88-8871-41A2-9F81-B79AB02FEC24} + Tasks + \ No newline at end of file diff --git a/drive/source/Transforms/Metadata.generated.xml b/drive/source/Transforms/Metadata.generated.xml index 712fced35..26c2f6238 100644 --- a/drive/source/Transforms/Metadata.generated.xml +++ b/drive/source/Transforms/Metadata.generated.xml @@ -1,620 +1,2 @@ - objValue - output - flags - dest - flags - apiClient - folder - title - driveContents - metadataChangeSet - apiClient - trackingTags - apiClient - resourceId - apiClient - apiClient - driveId - apiClient - driveId - apiClient - apiClient - apiClient - apiClient - query - apiClient - apiClient - changeSet - apiClient - changeSet - executionOptions - apiClient - apiClient - apiClient - mode - listener - bytesDownloaded - bytesExpected - dest - flags - apiClient - changeSet - driveContents - apiClient - changeSet - driveContents - executionOptions - apiClient - changeSet - apiClient - apiClient - query - resourceId - sqlId - databaseInstanceId - resourceType - sValue - objValue - output - flags - apiClient - apiClient - fileUploadPreferences - apiClient - listener - apiClient - apiClient - apiClient - apiClient - apiClient - listener - apiClient - apiClient - parentIds - apiClient - apiClient - apiClient - changeSet - oValue - output - flags - statusCode - trackingTag - notifyOnCompletion - conflictStrategy - oValue - strategy - notify - trackingTag - batteryUsagePreference - networkTypePreference - allowRoaming - dataHolder - rowValue - bag - key - key - value - description - text - date - mimeType - pinned - starred - title - viewed - apiClient - folder - title - mimeTypes - filter - oValue - dest - flags - dest - flags - permissionId - displayName - pictureUrl - isAuthenticatedUser - emailAddress - dest - flags - dest - flags - dest - flags - evt - oValue - dest - flags - oValue - dest - flags - dest - flags - evt - nameValue - intent - evt - evt - intent - oValue - dest - flags - oValue - dest - flags - oValue - dest - flags - oValue - dest - flags - oValue - dest - flags - oValue - oValue - eventType - id - dest - flags - dest - flags - dest - flags - trackingTags - dest - flags - dest - flags - dest - flags - id - metadataChangeSet - contentsRequestId - isContentsValidForConflictDetection - fileUpdateOptions - dest - flags - contentsRequestId - saveResults - dest - flags - dest - flags - mode - dest - flags - metadata - requestId - title - startFolder - fileType - dest - flags - parentDriveId - metadata - openContentsRequestId - fileType - fileCreationOptions - dest - flags - parentDriveId - metadata - dest - flags - id - dest - flags - dest - flags - dest - flags - dest - flags - batteryUsagePreference - networkTypePreference - allowRoaming - parcel - flags - dest - flags - dest - flags - id - forceFromServer - dest - flags - dest - flags - dest - flags - id - dest - flags - dest - flags - dest - flags - dest - flags - dest - flags - dest - flags - dest - flags - dest - flags - dest - flags - dest - flags - dest - flags - dest - flags - dest - flags - dest - flags - id - mode - baseRequestId - dest - flags - title - mimeTypes - startFolder - filterHolder - dest - flags - dest - flags - query - dest - flags - id - eventType - dest - flags - dest - flags - preferences - dest - flags - dest - flags - targetId - parentIds - dest - flags - dest - flags - dest - flags - id - dest - flags - dest - flags - id - dest - flags - id - metadataChangeSet - dest - flags - dest - flags - apiClient - apiClient - fileUploadPreferences - apiClient - listener - apiClient - apiClient - apiClient - apiClient - apiClient - listener - apiClient - apiClient - parentIds - apiClient - apiClient - apiClient - changeSet - code - data - reply - flags - status - code - data - reply - flags - code - data - reply - flags - code - data - reply - flags - oValue - output - oValue - output - oValue - output - status - status - apiClient - apiClient - trackingTags - apiClient - resourceId - apiClient - apiClient - driveId - apiClient - driveId - apiClient - apiClient - apiClient - apiClient - query - apiClient - apiClient - changeSet - apiClient - changeSet - executionOptions - apiClient - apiClient - apiClient - mode - listener - apiClient - changeSet - driveContents - apiClient - changeSet - driveContents - executionOptions - apiClient - changeSet - apiClient - apiClient - query - key - visibility - objValue - jsonObject - dest - flags - oValue - dest - flags - key - value - oValue - dest - flags - objValue - context - dest - flags - output - flags - resourceId - sqlId - resourceType - output - flags - oValue - filter - additionalFilters - filters - field - value - key - value - field - value - field - value - field - value - field - value - field - value - field - value - toNegate - filter - additionalFilters - filters - output - flags - query - filter - token - sortOrder - output - flags - sortField - sortField - operatorValue - field - value - output - flags - field - output - flags - fieldName - isSortAscending - output - flags - filter - output - flags - output - flags - field - value - output - flags - field - value - output - flags - operatorValue - filter - additionalFilters - operatorValue - filters - output - flags - output - flags - toNegate - output - flags - objValue - output - flags - output - flags - dest - flags - dest - flags - dest - flags - objValue - dest - flags - dest - flags - status - code - data - reply - flags - code - data - reply - flags - status - code - data - reply - flags - status - code - data - reply - flags - status - code - data - reply - flags - code - data - reply - flags - status - code - data - reply - flags - status - code - data - reply - flags - status - code - data - reply - flags - status - code - data - reply - flags - code - data - reply - flags - status - code - data - reply - flags - status - code - data - reply - flags - dest - flags - dest - flags - dest - flags - dest - flags - dest - flags - dest - flags - dest - flags - dest - flags - dest - flags - dest - flags - dest - flags - context - resource - context - resource - textViewResourceId - context - resource - textViewResourceId - objects - context - resource - textViewResourceId - buffers - context - resource - objects - context - resource - buffers - buffer - position - convertView - parent - position - position - position - convertView - parent - resource - notifyOnChange From 0b758257699cb3b9efaa017c4bda6c4de353f697 Mon Sep 17 00:00:00 2001 From: Redth Date: Wed, 1 Jun 2016 13:48:10 -0400 Subject: [PATCH 019/178] Updated fitness binding and sample --- fitness/component/component.template.yaml | 20 +- fitness/samples/BasicSensorsApi.sln | 12 + .../BasicSensorsApi/BasicSensorsApi.csproj | 13 +- .../source/Transforms/Metadata.generated.xml | 786 ------------------ 4 files changed, 35 insertions(+), 796 deletions(-) diff --git a/fitness/component/component.template.yaml b/fitness/component/component.template.yaml index c5dfd60c5..c10cb92f7 100644 --- a/fitness/component/component.template.yaml +++ b/fitness/component/component.template.yaml @@ -12,9 +12,11 @@ libraries: android: - ../../output/Xamarin.GooglePlayServices.Base.dll - ../../output/Xamarin.GooglePlayServices.Basement.dll - - ../../output/Xamarin.GooglePlayServices.Fitness.dll - - ../../output/Xamarin.GooglePlayServices.Maps.dll + - ../../output/Xamarin.GooglePlayServices.Tasks.dll + - ../../output/Xamarin.Firebase.Common.dll - ../../output/Xamarin.GooglePlayServices.Location.dll + - ../../output/Xamarin.GooglePlayServices.Maps.dll + - ../../output/Xamarin.GooglePlayServices.Fitness.dll is_shell: true packages: android: @@ -23,16 +25,20 @@ samples: - name: "Basic Sensors API" path: ../../fitness/samples/BasicSensorsApi.sln removeProjects: - - Xamarin.GooglePlayServices.Base - - Xamarin.GooglePlayServices.Basement - - Xamarin.GooglePlayServices.Location - - Xamarin.GooglePlayServices.Maps - - Xamarin.GooglePlayServices.Fitness + - Base + - Basement + - Tasks + - Firebase-Common + - Location + - Maps + - Fitness installNuGets: - project: BasicSensorsApi packages: - Xamarin.GooglePlayServices.Base - Xamarin.GooglePlayServices.Basement + - Xamarin.GooglePlayServices.Tasks + - Xamarin.Firebase.Common - Xamarin.GooglePlayServices.Location - Xamarin.GooglePlayServices.Maps - Xamarin.GooglePlayServices.Fitness diff --git a/fitness/samples/BasicSensorsApi.sln b/fitness/samples/BasicSensorsApi.sln index 8648b917a..449fec7cc 100644 --- a/fitness/samples/BasicSensorsApi.sln +++ b/fitness/samples/BasicSensorsApi.sln @@ -15,6 +15,10 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Maps", "..\..\maps\source\M EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Basement", "..\..\basement\source\Basement.csproj", "{6A38FACF-F0C5-4A49-8A8A-7CE6634207CE}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tasks", "..\..\tasks\source\Tasks.csproj", "{53F87D88-8871-41A2-9F81-B79AB02FEC24}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Firebase-Common", "..\..\firebase-common\source\Firebase-Common.csproj", "{865652D3-8D1A-4779-92FC-4C54719286B7}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -49,5 +53,13 @@ Global {F666DC89-9CE4-491C-8450-6FBC70298FA3}.Debug|Any CPU.Build.0 = Debug|Any CPU {F666DC89-9CE4-491C-8450-6FBC70298FA3}.Release|Any CPU.ActiveCfg = Release|Any CPU {F666DC89-9CE4-491C-8450-6FBC70298FA3}.Release|Any CPU.Build.0 = Release|Any CPU + {53F87D88-8871-41A2-9F81-B79AB02FEC24}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {53F87D88-8871-41A2-9F81-B79AB02FEC24}.Debug|Any CPU.Build.0 = Debug|Any CPU + {53F87D88-8871-41A2-9F81-B79AB02FEC24}.Release|Any CPU.ActiveCfg = Release|Any CPU + {53F87D88-8871-41A2-9F81-B79AB02FEC24}.Release|Any CPU.Build.0 = Release|Any CPU + {865652D3-8D1A-4779-92FC-4C54719286B7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {865652D3-8D1A-4779-92FC-4C54719286B7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {865652D3-8D1A-4779-92FC-4C54719286B7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {865652D3-8D1A-4779-92FC-4C54719286B7}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection EndGlobal diff --git a/fitness/samples/BasicSensorsApi/BasicSensorsApi.csproj b/fitness/samples/BasicSensorsApi/BasicSensorsApi.csproj index e07545d83..33227731b 100644 --- a/fitness/samples/BasicSensorsApi/BasicSensorsApi.csproj +++ b/fitness/samples/BasicSensorsApi/BasicSensorsApi.csproj @@ -16,6 +16,7 @@ False BasicSensorsApi v5.0 + armeabi;armeabi-v7a;x86;arm64-v8a;x86_64 true @@ -27,7 +28,6 @@ 4 None false - armeabi;armeabi-v7a;x86;arm64-v8a;x86_64 full @@ -37,7 +37,6 @@ 4 false false - armeabi;armeabi-v7a;x86;arm64-v8a;x86_64 @@ -74,7 +73,7 @@ - + @@ -103,5 +102,13 @@ {6A38FACF-F0C5-4A49-8A8A-7CE6634207CE} Basement + + {865652D3-8D1A-4779-92FC-4C54719286B7} + Firebase-Common + + + {53F87D88-8871-41A2-9F81-B79AB02FEC24} + Tasks + \ No newline at end of file diff --git a/fitness/source/Transforms/Metadata.generated.xml b/fitness/source/Transforms/Metadata.generated.xml index 822f33762..26c2f6238 100644 --- a/fitness/source/Transforms/Metadata.generated.xml +++ b/fitness/source/Transforms/Metadata.generated.xml @@ -1,788 +1,2 @@ - client - bleDevice - client - deviceAddress - client - client - request - client - callback - client - bleDevice - client - deviceAddress - client - request - client - client - dataTypeName - intent - timeUnit - intent - timeUnit - activity - activity - client - request - client - dataSet - client - dataType - client - request - client - request - context - dataType - dataSource - packageName - start - end - timeUnit - client - client - dataType - client - dataSource - client - dataType - client - dataSource - client - dataType - client - subscription - client - request - intent - client - request - listener - client - request - client - pendingIntent - client - listener - client - request - client - request - client - intent - client - session - client - identifier - client - intent - context - packageName - session - packageName - version - domainName - that - parcel - flags - oValue - parcel - flags - bucket - uniqueDataSources - oValue - dataType - timeUnit - timeUnit - dest - flags - dataSource - originalDataSource - rawDataPoint - dataSource - oValue - intent - timeUnit - timeUnit - timeUnit - field - values - values - startTime - endTime - timeUnit - timestamp - timeUnit - parcel - flags - dataSource - dataSet - uniqueDataSources - dataPoint - dataPoints - dataSource - oValue - parcel - flags - that - intent - parcel - flags - appContext - packageName - dataType - device - nameValue - streamName - theType - nameValue - fields - that - inputDataType - dataType - field - dest - flags - oValue - intent - timeUnit - timeUnit - dest - flags - manufacturer - model - uid - theType - manufacturer - model - version - uid - theType - platformType - that - context - parcel - flags - that - dest - flags - format - value - oValue - dest - flags - versionCode - startTimeMillis - endTimeMillis - session - activity - dataSets - bucketType - serverHasMoreData - bucket - uniqueDataSources - uniqueDataTypes - oValue - parcel - flags - versionCode - timestampNanos - startTimeNanos - values - dataSourceIndex - originalDataSourceIndex - rawTimestamp - insertionTimeMillis - oValue - parcel - flags - versionCode - dataSourceIndex - dataTypeIndex - rawDataPoints - serverHasMoreData - dataSet - uniqueDataSources - uniqueDataTypes - oValue - parcel - flags - startTimeMillis - endTimeMillis - nameValue - identifier - description - activityType - application - activeTimeMillis - oValue - intent - timeUnit - timeUnit - activity - timeUnit - dest - flags - time - timeUnit - activity - description - time - timeUnit - identifier - nameValue - time - timeUnit - oValue - dest - flags - that - dest - flags - format - key - oValue - key - activity - value - value - key - value - value - dest - flags - code - data - reply - flags - parcel - flags - parcel - flags - code - data - reply - flags - deviceAddress - bleDevice - callback - parcel - flags - callback - dataType - parcel - flags - startTimeMillis - endTimeMillis - dataSources - dataTypes - sessions - deleteAllData - deleteAllSessions - callback - request - callback - oValue - timeUnit - timeUnit - dest - flags - dataSource - dataType - session - startTime - endTime - timeUnit - dataSet - callback - skipSync - oValue - dest - flags - request - callback - dataTypes - dataSources - startTimeMillis - endTimeMillis - aggregatedDataTypes - aggregatedDataSources - bucketType - bucketDurationMillis - activityDataSource - limit - flushBeforeRead - serverQueriesEnabled - callback - filteredDevices - that - timeUnit - timeUnit - timeUnit - dest - flags - dataSource - outputDataType - inputDataType - outputDataType - minDuration - timeUnit - minDuration - timeUnit - activityDataSource - minDuration - timeUnit - minDuration - timeUnit - activityDataSource - minDuration - timeUnit - duration - timeUnit - dataSource - dataType - limit - start - end - timeUnit - dest - flags - request - callback - dataTypes - dataSourceTypes - includeDbOnlySources - callback - parcel - flags - dataSourceTypes - dataTypes - request - callback - nameValue - fields - callback - oValue - dest - flags - field - nameValue - format - nameValue - nameValue - callback - oValue - dest - flags - dataSource - dataType - pendingIntent - callback - that - parcel - flags - dataSource - dataType - pendingIntent - oValue - parcel - flags - startTimeMillis - endTimeMillis - dataSet - callback - request - callback - oValue - timeUnit - timeUnit - dest - flags - dataSet - startTimeMillis - endTimeMillis - timeUnit - parcel - flags - callback - parcel - flags - parcel - flags - callback - parcel - flags - dataType - callback - parcel - flags - parcel - flags - parcel - flags - dataSource - dataType - listener - pendingIntent - samplingIntervalMicros - fastestIntervalMicros - maxDeliveryLatencyMicros - accuracyMode - locationRequests - clientIdentities - registrationTimeOutMicros - callback - request - listener - intent - callback - that - parcel - flags - that - dataSource - locationRequest - timeUnit - timeUnit - timeUnit - accuracyMode - dataSource - dataType - fastestInterval - unit - interval - unit - interval - unit - timeout - timeUnit - listener - pendingIntent - callback - parcel - flags - session - dataSets - aggregateDataPoints - callback - request - callback - oValue - dest - flags - aggregateDataPoint - dataSet - session - request - callback - sessionName - sessionId - startTimeMillis - endTimeMillis - dataTypes - dataSources - getSessionsFromAllApps - serverQueriesEnabled - excludedPackages - callback - oValue - timeUnit - timeUnit - dest - flags - appPackageName - dataSource - dataType - sessionId - sessionName - startTime - endTime - timeUnit - pendingIntent - callback - sessionRegistrationOption - that - parcel - flags - session - callback - oValue - dest - flags - nameValue - identifier - callback - oValue - dest - flags - pendingIntent - callback - that - parcel - flags - request - callback - dataTypes - bleScanCallback - timeoutSecs - callback - parcel - flags - bleScanCallback - dataTypes - stopTimeSecs - bleScanCallback - callback - bleScanCallback - callback - parcel - flags - subscription - serverOnly - callback - dest - flags - deviceAddress - callback - parcel - flags - dataType - dataSource - callback - oValue - parcel - flags - device - device - code - data - reply - flags - bleDevices - status - that - dataType - dest - flags - dataSet - status - that - dest - flags - dataSets - buckets - status - that - dataSource - dataType - dest - flags - dataSources - status - that - dataType - dest - flags - dest - flags - dest - flags - status - dataType - that - dest - flags - subscriptions - status - that - dataType - dest - flags - dest - flags - sessions - sessionDataSets - status - that - session - session - dataType - dest - flags - status - sessions - oValue - dest - flags - that - dest - flags - intent - that - timeUnit - timeUnit - parcel - flags - dataPoint - dataPoints - nameValue - code - data - reply - flags - code - data - reply - flags - code - data - reply - flags - code - data - reply - flags - code - data - reply - flags - code - data - reply - flags - code - data - reply - flags - code - data - reply - flags - code - data - reply - flags - code - data - reply - flags - code - data - reply - flags - code - data - reply - flags - code - data - reply - flags - code - data - reply - flags - code - data - reply - flags - code - data - reply - flags - code - data - reply - flags - code - data - reply - flags - client - bleDevice - client - deviceAddress - client - client - request - client - requestCallback - client - bleDevice - client - deviceAddress - client - request - client - client - dataTypeName - client - request - client - dataSet - client - dataType - client - request - client - request - client - client - dataType - client - dataSource - client - dataType - client - dataSource - client - dataType - client - subscription - client - request - intent - client - request - listener - client - request - client - pendingIntent - client - listener - client - request - client - request - client - intent - client - session - client - identifier - client - intent - client - bleDevice - client - deviceAddress - client - client - request - client - callback - client - bleDevice - client - deviceAddress - code - data - reply - flags - oValue - output - oValue - output From d6390185fe19ae7e160ee0d1f46fa5cce7c615e2 Mon Sep 17 00:00:00 2001 From: Redth Date: Wed, 1 Jun 2016 13:48:29 -0400 Subject: [PATCH 020/178] Updated games binding and sample --- games/component/component.template.yaml | 19 +- games/samples/BeGenerous.sln | 18 + games/samples/BeGenerous/BeGenerous.csproj | 19 +- games/source/Additions/BugWorkarounds.cs | 51 + games/source/Additions/DataBufferAdditions.cs | 168 +-- .../Additions/IPendingResultExtensions.cs | 16 +- games/source/Games.csproj | 4 + .../source/Transforms/Metadata.generated.xml | 1099 ----------------- games/source/Transforms/Metadata.xml | 9 +- 9 files changed, 200 insertions(+), 1203 deletions(-) diff --git a/games/component/component.template.yaml b/games/component/component.template.yaml index 8bc9d482c..d61e97304 100644 --- a/games/component/component.template.yaml +++ b/games/component/component.template.yaml @@ -12,6 +12,9 @@ libraries: android: - ../../output/Xamarin.GooglePlayServices.Base.dll - ../../output/Xamarin.GooglePlayServices.Basement.dll + - ../../output/Xamarin.GooglePlayServices.Auth.Base.dll + - ../../output/Xamarin.GooglePlayServices.Tasks.dll + - ../../output/Xamarin.Firebase.Common.dll - ../../output/Xamarin.GooglePlayServices.Games.dll - ../../output/Xamarin.GooglePlayServices.Drive.dll - ../../output/Xamarin.GooglePlayServices.Plus.dll @@ -23,16 +26,22 @@ samples: - name: "Games Sample" path: ../../games/samples/BeGenerous.sln removeProjects: - - Xamarin.GooglePlayServices.Base - - Xamarin.GooglePlayServices.Basement - - Xamarin.GooglePlayServices.Games - - Xamarin.GooglePlayServices.Drive - - Xamarin.GooglePlayServices.Plus + - Base + - Basement + - Tasks + - Auth.Base + - Firebase-Common + - Games + - Drive + - Plus installNuGets: - project: BeGenerous packages: - Xamarin.GooglePlayServices.Base - Xamarin.GooglePlayServices.Basement + - Xamarin.GooglePlayServices.Tasks + - Xamarin.GooglePlayServices.Auth.Base + - Xamarin.Firebase.Common - Xamarin.GooglePlayServices.Games - Xamarin.GooglePlayServices.Drive - Xamarin.GooglePlayServices.Plus diff --git a/games/samples/BeGenerous.sln b/games/samples/BeGenerous.sln index f2cb0ec33..fa889122e 100644 --- a/games/samples/BeGenerous.sln +++ b/games/samples/BeGenerous.sln @@ -15,6 +15,12 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Plus", "..\..\plus\source\P EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Basement", "..\..\basement\source\Basement.csproj", "{6A38FACF-F0C5-4A49-8A8A-7CE6634207CE}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Auth.Base", "..\..\auth-base\source\Auth.Base.csproj", "{B04C50F7-B0CC-4170-8820-9D584E1C0ED3}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Firebase-Common", "..\..\firebase-common\source\Firebase-Common.csproj", "{865652D3-8D1A-4779-92FC-4C54719286B7}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tasks", "..\..\tasks\source\Tasks.csproj", "{53F87D88-8871-41A2-9F81-B79AB02FEC24}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -49,5 +55,17 @@ Global {C9356F99-4E2C-48E2-A6EE-106DDD420452}.Debug|Any CPU.Build.0 = Debug|Any CPU {C9356F99-4E2C-48E2-A6EE-106DDD420452}.Release|Any CPU.ActiveCfg = Release|Any CPU {C9356F99-4E2C-48E2-A6EE-106DDD420452}.Release|Any CPU.Build.0 = Release|Any CPU + {B04C50F7-B0CC-4170-8820-9D584E1C0ED3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B04C50F7-B0CC-4170-8820-9D584E1C0ED3}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B04C50F7-B0CC-4170-8820-9D584E1C0ED3}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B04C50F7-B0CC-4170-8820-9D584E1C0ED3}.Release|Any CPU.Build.0 = Release|Any CPU + {865652D3-8D1A-4779-92FC-4C54719286B7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {865652D3-8D1A-4779-92FC-4C54719286B7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {865652D3-8D1A-4779-92FC-4C54719286B7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {865652D3-8D1A-4779-92FC-4C54719286B7}.Release|Any CPU.Build.0 = Release|Any CPU + {53F87D88-8871-41A2-9F81-B79AB02FEC24}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {53F87D88-8871-41A2-9F81-B79AB02FEC24}.Debug|Any CPU.Build.0 = Debug|Any CPU + {53F87D88-8871-41A2-9F81-B79AB02FEC24}.Release|Any CPU.ActiveCfg = Release|Any CPU + {53F87D88-8871-41A2-9F81-B79AB02FEC24}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection EndGlobal diff --git a/games/samples/BeGenerous/BeGenerous.csproj b/games/samples/BeGenerous/BeGenerous.csproj index 9ae22f0bd..75f2fe819 100644 --- a/games/samples/BeGenerous/BeGenerous.csproj +++ b/games/samples/BeGenerous/BeGenerous.csproj @@ -15,7 +15,8 @@ True True BeGenerous - v5.1 + v6.0 + armeabi;armeabi-v7a;x86;arm64-v8a;x86_64 true @@ -27,7 +28,6 @@ 4 None false - armeabi;armeabi-v7a;x86;arm64-v8a;x86_64 full @@ -37,7 +37,6 @@ 4 false false - armeabi;armeabi-v7a;x86;arm64-v8a;x86_64 @@ -92,7 +91,7 @@ - + {3F6BAE25-ADEB-468C-8384-AD655623C341} @@ -114,6 +113,18 @@ {6A38FACF-F0C5-4A49-8A8A-7CE6634207CE} Basement + + {B04C50F7-B0CC-4170-8820-9D584E1C0ED3} + Auth.Base + + + {865652D3-8D1A-4779-92FC-4C54719286B7} + Firebase-Common + + + {53F87D88-8871-41A2-9F81-B79AB02FEC24} + Tasks + diff --git a/games/source/Additions/BugWorkarounds.cs b/games/source/Additions/BugWorkarounds.cs index 1e8c35b81..3ef25a12a 100644 --- a/games/source/Additions/BugWorkarounds.cs +++ b/games/source/Additions/BugWorkarounds.cs @@ -288,6 +288,56 @@ public override Java.Lang.Object Get (int position) } } } +//path="/api/package[@name='com.google.android.gms.games.social']/class[@name='SocialInviteBuffer']" +namespace Android.Gms.Games.Social +{ + internal static class FreezeMethodImplementor + { + internal static Java.Lang.Object Freeze (ref IntPtr id_freeze, IntPtr class_ref, IntPtr Handle) + { + if (id_freeze == IntPtr.Zero) + id_freeze = JNIEnv.GetMethodID (class_ref, "freeze", "()Ljava/lang/Object;"); + return (Java.Lang.Object)global::Java.Lang.Object.GetObject (JNIEnv.CallObjectMethod (Handle, id_freeze), JniHandleOwnership.TransferLocalRef); + } + } + + public sealed partial class SocialInviteBuffer + { + IntPtr id_get; + + internal static IntPtr this_java_class_handle; + internal static IntPtr this_class_ref { + get { + return JNIEnv.FindClass ("com/google/android/gms/games/social/SocialInviteBuffer", ref this_java_class_handle); + } + } + + public override Java.Lang.Object Get (int position) + { + if (id_get == IntPtr.Zero) + id_get = JNIEnv.GetMethodID (this_class_ref, "get", "(I)Ljava/lang/Object;"); + return (Java.Lang.Object)global::Java.Lang.Object.GetObject (JNIEnv.CallObjectMethod (Handle, id_get, new JValue (position)), JniHandleOwnership.TransferLocalRef); + } + } + + public partial class SocialInviteEntity + { + IntPtr id_freeze; + public Java.Lang.Object Freeze () + { + return FreezeMethodImplementor.Freeze (ref id_freeze, class_ref, Handle); + } + } + + public partial class SocialInviteRef + { + IntPtr id_freeze; + public Java.Lang.Object Freeze () + { + return FreezeMethodImplementor.Freeze (ref id_freeze, class_ref, Handle); + } + } +} namespace Android.Gms.Games.Video { @@ -318,6 +368,7 @@ public Java.Lang.Object Freeze () return FreezeMethodImplementor.Freeze (ref id_freeze, class_ref, Handle); } } + public sealed partial class VideoBuffer { IntPtr id_get; diff --git a/games/source/Additions/DataBufferAdditions.cs b/games/source/Additions/DataBufferAdditions.cs index 751a4ddf6..f5d0c8d05 100644 --- a/games/source/Additions/DataBufferAdditions.cs +++ b/games/source/Additions/DataBufferAdditions.cs @@ -49,18 +49,18 @@ System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() namespace Android.Gms.Games.AppContent { - public partial class AppContentSectionBuffer : IEnumerable - { - public IEnumerator GetEnumerator() - { - return this.ToEnumerable ().GetEnumerator(); - } - - System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() - { - return this.GetEnumerator(); - } - } + //public partial class AppContentSectionBuffer : IEnumerable + //{ + // public IEnumerator GetEnumerator() + // { + // return this.ToEnumerable ().GetEnumerator(); + // } + + // System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() + // { + // return this.GetEnumerator(); + // } + //} } namespace Android.Gms.Games.Event @@ -81,18 +81,18 @@ System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() namespace Android.Gms.Games.LeaderBoard { - public partial class LeaderboardBuffer : IEnumerable - { - public IEnumerator GetEnumerator() - { - return this.ToEnumerable ().GetEnumerator(); - } - - System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() - { - return this.GetEnumerator(); - } - } + //public partial class LeaderboardBuffer : IEnumerable + //{ + // public IEnumerator GetEnumerator() + // { + // return this.ToEnumerable ().GetEnumerator(); + // } + + // System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() + // { + // return this.GetEnumerator(); + // } + //} public partial class LeaderboardScoreBuffer : IEnumerable { @@ -123,50 +123,50 @@ System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() } } - public partial class InvitationBuffer : IEnumerable - { - public IEnumerator GetEnumerator() - { - return this.ToEnumerable ().GetEnumerator(); - } - - System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() - { - return this.GetEnumerator(); - } - } + //public partial class InvitationBuffer : IEnumerable + //{ + // public IEnumerator GetEnumerator() + // { + // return this.ToEnumerable ().GetEnumerator(); + // } + + // System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() + // { + // return this.GetEnumerator(); + // } + //} } namespace Android.Gms.Games.MultiPlayer.RealTime { - public partial class RoomBuffer : IEnumerable - { - public IEnumerator GetEnumerator() - { - return this.ToEnumerable ().GetEnumerator(); - } - - System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() - { - return this.GetEnumerator(); - } - } + //public partial class RoomBuffer : IEnumerable + //{ + // public IEnumerator GetEnumerator() + // { + // return this.ToEnumerable ().GetEnumerator(); + // } + + // System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() + // { + // return this.GetEnumerator(); + // } + //} } namespace Android.Gms.Games.MultiPlayer.TurnBased { - public partial class TurnBasedMatchBuffer : IEnumerable - { - public IEnumerator GetEnumerator() - { - return this.ToEnumerable ().GetEnumerator(); - } - - System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() - { - return this.GetEnumerator(); - } - } + //public partial class TurnBasedMatchBuffer : IEnumerable + //{ + // public IEnumerator GetEnumerator() + // { + // return this.ToEnumerable ().GetEnumerator(); + // } + + // System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() + // { + // return this.GetEnumerator(); + // } + //} } namespace Android.Gms.Games.Request @@ -184,18 +184,18 @@ System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() } } - public partial class GameRequestBuffer : IEnumerable - { - public IEnumerator GetEnumerator() - { - return this.ToEnumerable ().GetEnumerator(); - } - - System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() - { - return this.GetEnumerator(); - } - } + //public partial class GameRequestBuffer : IEnumerable + //{ + // public IEnumerator GetEnumerator() + // { + // return this.ToEnumerable ().GetEnumerator(); + // } + + // System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() + // { + // return this.GetEnumerator(); + // } + //} } namespace Android.Gms.Games.Snapshot @@ -245,18 +245,18 @@ System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() } } - public partial class QuestBuffer : IEnumerable - { - public IEnumerator GetEnumerator() - { - return this.ToEnumerable ().GetEnumerator(); - } - - System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() - { - return this.GetEnumerator(); - } - } + //public partial class QuestBuffer : IEnumerable + //{ + // public IEnumerator GetEnumerator() + // { + // return this.ToEnumerable ().GetEnumerator(); + // } + + // System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() + // { + // return this.GetEnumerator(); + // } + //} } namespace Android.Gms.Games.Video diff --git a/games/source/Additions/IPendingResultExtensions.cs b/games/source/Additions/IPendingResultExtensions.cs index 308f2335a..bbafef258 100644 --- a/games/source/Additions/IPendingResultExtensions.cs +++ b/games/source/Additions/IPendingResultExtensions.cs @@ -272,10 +272,10 @@ namespace Android.Gms.Games.Snapshot { public static partial class ISnapshotsExtensions { - public static async Task CommitAndCloseAsync (this ISnapshots api, GoogleApiClient apiClient, ISnapshot snapshot, SnapshotMetadataChange metadataChange) - { - return (await api.CommitAndClose (apiClient, snapshot, metadataChange)).JavaCast (); - } + //public static async Task CommitAndCloseAsync (this ISnapshots api, GoogleApiClient apiClient, ISnapshot snapshot, SnapshotMetadataChange metadataChange) + //{ + // return (await api.CommitAndClose (apiClient, snapshot, metadataChange)).JavaCast (); + //} public static async Task DeleteAsync (this ISnapshots api, GoogleApiClient apiClient, ISnapshotMetadata metadata) { return (await api.Delete (apiClient, metadata)).JavaCast (); @@ -304,10 +304,10 @@ public static async Task ResolveConflictAsync (thi { return (await api.ResolveConflict (apiClient, conflictId, snapshot)).JavaCast (); } - public static async Task ResolveConflictAsync (this ISnapshots api, GoogleApiClient apiClient, string conflictId, string snapshotId, SnapshotMetadataChange metadataChange, ISnapshotContents snapshotContents) - { - return (await api.ResolveConflict (apiClient, conflictId, snapshotId, metadataChange, snapshotContents)).JavaCast (); - } + //public static async Task ResolveConflictAsync (this ISnapshots api, GoogleApiClient apiClient, string conflictId, string snapshotId, SnapshotMetadataChange metadataChange, ISnapshotContents snapshotContents) + //{ + // return (await api.ResolveConflict (apiClient, conflictId, snapshotId, metadataChange, snapshotContents)).JavaCast (); + //} } } diff --git a/games/source/Games.csproj b/games/source/Games.csproj index ce49e569a..c59f198d6 100644 --- a/games/source/Games.csproj +++ b/games/source/Games.csproj @@ -86,6 +86,10 @@ {6A38FACF-F0C5-4A49-8A8A-7CE6634207CE} Basement + + {B04C50F7-B0CC-4170-8820-9D584E1C0ED3} + Auth.Base + \ No newline at end of file diff --git a/games/source/Transforms/Metadata.generated.xml b/games/source/Transforms/Metadata.generated.xml index 695f2ebdc..26c2f6238 100644 --- a/games/source/Transforms/Metadata.generated.xml +++ b/games/source/Transforms/Metadata.generated.xml @@ -1,1101 +1,2 @@ - dataOut - dataOut - dataOut - dataHolder - position - game - objValue - dataOut - dataOut - dataOut - dest - flags - holder - dataRow - objValue - dataOut - dataOut - dataOut - dest - flags - apiClient - apiClient - apiClient - serverClientId - apiClient - apiClient - apiClient - gravity - apiClient - gamesContentView - apiClient - googleApiClient - requireGooglePlus - variant - showConnectingPopup - showConnectingPopup - gravity - apiClient - apiClient - statusCode - apiClient - notificationTypes - apiClient - dataOut - dataOut - dataHolder - position - player - player - isPlusEnabled - objValue - dataOut - dataOut - dest - flags - value - minXp - maxXp - objValue - output - flags - currentXpTotal - lastLevelUpTimestamp - currentLevel - nextLevel - objValue - output - flags - holder - dataRow - holder - dataRow - prefix - objValue - dataOut - dataOut - dest - flags - apiClient - player - apiClient - apiClient - apiClient - apiClient - forceReload - apiClient - pageSize - forceReload - apiClient - pageSize - apiClient - pageSize - apiClient - playerId - apiClient - playerId - forceReload - apiClient - pageSize - forceReload - dataOut - dataOut - dataOut - dataOut - dataHolder - position - achievement - objValue - dataOut - dataOut - dataOut - dataOut - dest - flags - dataOut - dataOut - dataOut - dataOut - dest - flags - apiClient - apiClient - id - numSteps - apiClient - id - numSteps - apiClient - forceReload - apiClient - id - apiClient - id - apiClient - id - numSteps - apiClient - id - numSteps - apiClient - id - apiClient - id - action - objValue - output - flags - objValue - dest - flags - annotation - objValue - output - flags - objValue - dest - flags - card - objValue - output - flags - objValue - dest - flags - condition - objValue - output - flags - objValue - dest - flags - section - objValue - output - flags - objValue - dest - flags - tuple - objValue - output - flags - objValue - dest - flags - dataHolderCollection - indexForRef - dataRow - dataOut - dataOut - dataOut - dataHolder - position - evt - objValue - dataOut - dataOut - dataOut - output - flags - parcel - sizeValue - objValue - dataOut - dataOut - dataOut - dest - flags - apiClient - eventId - incrementAmount - apiClient - forceReload - apiClient - forceReload - eventIds - invitationId - statusCode - roomId - participantId - participantId - message - requestId - matchId - versionCode - clientAddress - registrationLatency - output - flags - context - looper - clientSettings - options - connectedListener - connectionFailedListener - result - dataHolder - invitationId - statusCode - roomId - participantId - participantId - message - requestId - matchId - code - data - reply - flags - code - data - reply - flags - code - data - reply - flags - popupLocationInfo - output - flags - gravity - apiClient - apiClient - id - numSteps - apiClient - id - numSteps - apiClient - forceReload - apiClient - id - apiClient - id - apiClient - id - numSteps - apiClient - id - numSteps - apiClient - id - apiClient - id - apiClient - eventId - incrementAmount - apiClient - forceReload - apiClient - forceReload - eventIds - apiClient - apiClient - apiClient - apiClient - apiClient - sortOrder - apiClient - listener - apiClient - apiClient - apiClient - leaderboardId - apiClient - leaderboardId - timeSpan - apiClient - leaderboardId - timeSpan - collection - apiClient - leaderboardId - span - leaderboardCollection - apiClient - leaderboardId - forceReload - apiClient - forceReload - apiClient - buffer - maxResults - pageDirection - apiClient - leaderboardId - span - leaderboardCollection - maxResults - apiClient - leaderboardId - span - leaderboardCollection - maxResults - forceReload - apiClient - leaderboardId - span - leaderboardCollection - maxResults - apiClient - leaderboardId - span - leaderboardCollection - maxResults - forceReload - apiClient - leaderboardId - score - apiClient - leaderboardId - score - scoreTag - apiClient - leaderboardId - score - apiClient - leaderboardId - score - scoreTag - googleApiClient - apiClient - notificationTypes - apiClient - apiClient - player - apiClient - apiClient - apiClient - apiClient - forceReload - apiClient - pageSize - forceReload - apiClient - pageSize - apiClient - pageSize - apiClient - playerId - apiClient - playerId - forceReload - apiClient - pageSize - forceReload - apiClient - questId - apiClient - questId - milestoneId - apiClient - questId - apiClient - questSelectors - apiClient - questSelectors - sortOrder - forceReload - apiClient - forceReload - questIds - apiClient - listener - apiClient - questId - apiClient - apiClient - config - apiClient - invitationId - apiClient - invitationId - apiClient - minPlayers - maxPlayers - apiClient - minPlayers - maxPlayers - allowAutomatch - apiClient - room - minParticipantsToStart - apiClient - config - apiClient - listener - roomId - apiClient - callback - messageData - roomId - recipientParticipantId - apiClient - messageData - roomId - recipientParticipantId - apiClient - messageData - roomId - recipientParticipantIds - apiClient - messageData - roomId - apiClient - requestId - apiClient - requestIds - apiClient - requestId - apiClient - requestIds - extras - response - apiClient - apiClient - apiClient - apiClient - theType - payload - requestLifetimeDays - icon - description - apiClient - requestDirection - types - sortOrder - apiClient - listener - apiClient - apiClient - snapshot - metadataChange - apiClient - metadata - apiClient - snapshot - apiClient - apiClient - apiClient - title - allowAddButton - allowDelete - maxSnapshots - extras - apiClient - forceReload - apiClient - metadata - apiClient - metadata - conflictPolicy - apiClient - fileName - createIfNotFound - apiClient - fileName - createIfNotFound - conflictPolicy - apiClient - conflictId - snapshot - apiClient - conflictId - snapshotId - metadataChange - snapshotContents - apiClient - forceReload - apiClient - invitationId - apiClient - matchId - apiClient - config - apiClient - invitationId - apiClient - invitationId - apiClient - matchId - apiClient - matchId - apiClient - matchId - matchData - results - apiClient - matchId - matchData - results - apiClient - apiClient - apiClient - minPlayers - maxPlayers - apiClient - minPlayers - maxPlayers - allowAutomatch - apiClient - matchId - apiClient - matchId - pendingParticipantId - apiClient - matchId - apiClient - invitationSortOrder - matchTurnStatuses - apiClient - matchTurnStatuses - apiClient - listener - apiClient - matchId - apiClient - matchId - matchData - pendingParticipantId - apiClient - matchId - matchData - pendingParticipantId - results - apiClient - matchId - matchData - pendingParticipantId - results - apiClient - result - outcome - looper - flushIntervalMillis - dataHolder - holder - dataRow - gameBadge - objValue - dest - flags - holder - dataRow - objValue - dest - flags - dataHolder - dataHolder - objValue - dest - flags - info - objValue - output - flags - holder - dataRow - columnNames - objValue - dest - flags - prefix - objValue - playerId - playerId - dest - flags - requestId - dataOut - dataHolder - leaderboard - objValue - dataOut - objValue - dataOut - apiClient - apiClient - leaderboardId - apiClient - leaderboardId - timeSpan - apiClient - leaderboardId - timeSpan - collection - apiClient - leaderboardId - span - leaderboardCollection - apiClient - leaderboardId - forceReload - apiClient - forceReload - apiClient - buffer - maxResults - pageDirection - apiClient - leaderboardId - span - leaderboardCollection - maxResults - apiClient - leaderboardId - span - leaderboardCollection - maxResults - forceReload - apiClient - leaderboardId - span - leaderboardCollection - maxResults - apiClient - leaderboardId - span - leaderboardCollection - maxResults - forceReload - apiClient - leaderboardId - score - apiClient - leaderboardId - score - scoreTag - apiClient - leaderboardId - score - apiClient - leaderboardId - score - scoreTag - dataOut - dataOut - dataOut - dataHolder - position - bundle - score - objValue - dataOut - dataOut - dataOut - objValue - dataOut - dataOut - dataOut - variant - objValue - objValue - dataHolder - timeSpan - rawScore - formattedScore - scoreTag - newBest - dataHolder - objValue - dest - flags - objValue - dest - flags - apiClient - apiClient - apiClient - sortOrder - apiClient - listener - apiClient - dataOut - position - participant - objValue - dataOut - dest - flags - holder - dataRow - objValue - dataOut - dest - flags - versionCode - participantId - result - placing - participantId - result - placing - output - flags - participants - playerId - senderParticipantId - messageData - isReliable - parcel - flag - apiClient - config - apiClient - invitationId - apiClient - invitationId - apiClient - minPlayers - maxPlayers - apiClient - minPlayers - maxPlayers - allowAutomatch - apiClient - room - minParticipantsToStart - apiClient - config - apiClient - listener - roomId - apiClient - callback - messageData - roomId - recipientParticipantId - apiClient - messageData - roomId - recipientParticipantId - apiClient - messageData - roomId - recipientParticipantIds - apiClient - messageData - roomId - dataOut - participantId - playerId - participantId - dataHolder - listener - minAutoMatchPlayers - maxAutoMatchPlayers - exclusiveBitMask - playerIds - playerIds - autoMatchCriteria - invitationId - listener - listener - variant - room - objValue - dataOut - participantId - playerId - participantId - dest - flags - objValue - dataOut - participantId - playerId - participantId - dest - flags - matchData - dataOut - participantId - playerId - participantId - dataHolder - minAutoMatchPlayers - maxAutoMatchPlayers - exclusiveBitMask - playerId - playerIds - autoMatchCriteria - variant - match - objValue - dataOut - participantId - playerId - participantId - output - flags - objValue - dataOut - participantId - playerId - participantId - dest - flags - apiClient - invitationId - apiClient - matchId - apiClient - config - apiClient - invitationId - apiClient - invitationId - apiClient - matchId - apiClient - matchId - apiClient - matchId - matchData - results - apiClient - matchId - matchData - results - apiClient - apiClient - apiClient - minPlayers - maxPlayers - apiClient - minPlayers - maxPlayers - allowAutomatch - apiClient - matchId - apiClient - matchId - pendingParticipantId - apiClient - matchId - apiClient - invitationSortOrder - matchTurnStatuses - apiClient - matchTurnStatuses - apiClient - listener - apiClient - matchId - apiClient - matchId - matchData - pendingParticipantId - apiClient - matchId - matchData - pendingParticipantId - results - apiClient - matchId - matchData - pendingParticipantId - results - apiClient - position - milestone - objValue - output - flags - objValue - dest - flags - dataOut - dataOut - dataHolder - quest - objValue - dataOut - dataOut - output - flags - objValue - dataOut - dataOut - dest - flags - apiClient - questId - apiClient - questId - milestoneId - apiClient - questId - apiClient - questSelectors - apiClient - questSelectors - sortOrder - forceReload - apiClient - forceReload - questIds - apiClient - listener - apiClient - questId - apiClient - playerId - playerId - dataHolder - request - objValue - playerId - playerId - dest - flags - holder - dataRow - numChildren - objValue - playerId - playerId - dest - flags - holder - dataRow - apiClient - requestId - apiClient - requestIds - apiClient - requestId - apiClient - requestIds - extras - response - apiClient - apiClient - apiClient - apiClient - theType - payload - requestLifetimeDays - icon - description - apiClient - requestDirection - types - sortOrder - apiClient - listener - apiClient - requestType - requestId - dstOffset - content - srcOffset - count - content - contents - dstOffset - content - srcOffset - count - content - output - flags - metadata - contents - objValue - output - flags - dataOut - dataHolder - position - metadata - coverImage - description - playedTimeMillis - progressValue - output - flags - snapshotMetadata - objValue - dataOut - output - flags - holder - dataRow - objValue - dataOut - dest - flags - apiClient - snapshot - metadataChange - apiClient - metadata - apiClient - snapshot - apiClient - apiClient - apiClient - title - allowAddButton - allowDelete - maxSnapshots - extras - apiClient - forceReload - apiClient - metadata - apiClient - metadata - conflictPolicy - apiClient - fileName - createIfNotFound - apiClient - fileName - createIfNotFound - conflictPolicy - apiClient - conflictId - snapshot - apiClient - conflictId - snapshotId - metadataChange - snapshotContents - dataHolder - playerStats - objValue - output - flags - objValue - dest - flags - apiClient - forceReload - dataHolder - versionCode - isCameraSupported - isMicSupported - isWriteStorageSupported - supportedCaptureModes - supportedQualityLevels - objValue - output - flags - versionCode - qualityLevel - captureMode - streamUrl - streamKey - output - flags - video - objValue - dest - flags - dest - flags diff --git a/games/source/Transforms/Metadata.xml b/games/source/Transforms/Metadata.xml index 00f100f5d..c63d34ee9 100644 --- a/games/source/Transforms/Metadata.xml +++ b/games/source/Transforms/Metadata.xml @@ -10,7 +10,8 @@ Android.Gms.Games.MultiPlayer.TurnBased Android.Gms.Games.Quest Android.Gms.Games.Request - Android.Gms.Games.Snapshot + Android.Gms.Games.Snapshot + Android.Gms.Games.Social Android.Gms.Games.Stats Android.Gms.Games.Video Android.Gms.Games.Internal @@ -112,6 +113,8 @@ public override Java.Lang.Object + public override + Java.Lang.Object @@ -139,6 +142,7 @@ + @@ -181,8 +185,6 @@ Java.Lang.Object Java.Lang.Object - - , Java.Lang.Object @@ -195,4 +197,5 @@ + From afab61840dbaf4ac1f70459f902415c655298953 Mon Sep 17 00:00:00 2001 From: Redth Date: Wed, 1 Jun 2016 13:48:42 -0400 Subject: [PATCH 021/178] Updated gcm binding and sample --- gcm/component/component.template.yaml | 18 ++-- gcm/samples/GCMSample.sln | 22 ++++- gcm/samples/GCMSample/GCMSample.csproj | 14 ++- gcm/samples/GCMSample/MainActivity.cs | 2 +- gcm/source/Additions/Additions.cs | 36 ------- gcm/source/Additions/Manifest.cs | 13 +-- gcm/source/Gcm.csproj | 10 +- gcm/source/Transforms/Metadata.generated.xml | 99 -------------------- 8 files changed, 52 insertions(+), 162 deletions(-) diff --git a/gcm/component/component.template.yaml b/gcm/component/component.template.yaml index ae3992f53..95d96e869 100644 --- a/gcm/component/component.template.yaml +++ b/gcm/component/component.template.yaml @@ -12,8 +12,10 @@ libraries: android: - ../../output/Xamarin.GooglePlayServices.Base.dll - ../../output/Xamarin.GooglePlayServices.Basement.dll + - ../../output/Xamarin.GooglePlayServices.Tasks.dll + - ../../output/Xamarin.Firebase.Common.dll - ../../output/Xamarin.GooglePlayServices.Gcm.dll - - ../../output/Xamarin.GooglePlayServices.Measurement.dll + - ../../output/Xamarin.GooglePlayServices.Iid.dll is_shell: true packages: android: @@ -22,16 +24,20 @@ samples: - name: "GCM Sample" path: ../../gcm/samples/GCMSample.sln removeProjects: - - Xamarin.GooglePlayServices.Base - - Xamarin.GooglePlayServices.Basement - - Xamarin.GooglePlayServices.Gcm - - Xamarin.GooglePlayServices.Measurement + - Base + - Basement + - Tasks + - Firebase-Common + - Gcm + - Iid installNuGets: - project: GCMSample packages: - Xamarin.GooglePlayServices.Base - Xamarin.GooglePlayServices.Basement + - Xamarin.GooglePlayServices.Tasks + - Xamarin.Firebase.Common - Xamarin.GooglePlayServices.Gcm - - Xamarin.GooglePlayServices.Measurement + - Xamarin.GooglePlayServices.Iid local-nuget-repo: ../../output/ no_build: true diff --git a/gcm/samples/GCMSample.sln b/gcm/samples/GCMSample.sln index e1901ec8e..2dded1c7d 100644 --- a/gcm/samples/GCMSample.sln +++ b/gcm/samples/GCMSample.sln @@ -11,7 +11,11 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Base", "..\..\base\source\B EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Basement", "..\..\basement\source\Basement.csproj", "{6A38FACF-F0C5-4A49-8A8A-7CE6634207CE}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Measurement", "..\..\measurement\source\Measurement.csproj", "{5C4C77A3-4523-4E2B-895B-6EFE4A6A1617}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Firebase-Common", "..\..\firebase-common\source\Firebase-Common.csproj", "{865652D3-8D1A-4779-92FC-4C54719286B7}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Iid", "..\..\iid\source\Iid.csproj", "{9F7F996D-AF44-4947-8392-07B3ED2ED00D}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tasks", "..\..\tasks\source\Tasks.csproj", "{53F87D88-8871-41A2-9F81-B79AB02FEC24}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -27,10 +31,6 @@ Global {3F6BAE25-ADEB-468C-8384-AD655623C341}.Debug|Any CPU.Build.0 = Debug|Any CPU {3F6BAE25-ADEB-468C-8384-AD655623C341}.Release|Any CPU.ActiveCfg = Release|Any CPU {3F6BAE25-ADEB-468C-8384-AD655623C341}.Release|Any CPU.Build.0 = Release|Any CPU - {5C4C77A3-4523-4E2B-895B-6EFE4A6A1617}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {5C4C77A3-4523-4E2B-895B-6EFE4A6A1617}.Debug|Any CPU.Build.0 = Debug|Any CPU - {5C4C77A3-4523-4E2B-895B-6EFE4A6A1617}.Release|Any CPU.ActiveCfg = Release|Any CPU - {5C4C77A3-4523-4E2B-895B-6EFE4A6A1617}.Release|Any CPU.Build.0 = Release|Any CPU {6A38FACF-F0C5-4A49-8A8A-7CE6634207CE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {6A38FACF-F0C5-4A49-8A8A-7CE6634207CE}.Debug|Any CPU.Build.0 = Debug|Any CPU {6A38FACF-F0C5-4A49-8A8A-7CE6634207CE}.Release|Any CPU.ActiveCfg = Release|Any CPU @@ -43,5 +43,17 @@ Global {D16727E4-FD03-46F7-99C3-C1EC4D8F5016}.Debug|Any CPU.Build.0 = Debug|Any CPU {D16727E4-FD03-46F7-99C3-C1EC4D8F5016}.Release|Any CPU.ActiveCfg = Release|Any CPU {D16727E4-FD03-46F7-99C3-C1EC4D8F5016}.Release|Any CPU.Build.0 = Release|Any CPU + {865652D3-8D1A-4779-92FC-4C54719286B7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {865652D3-8D1A-4779-92FC-4C54719286B7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {865652D3-8D1A-4779-92FC-4C54719286B7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {865652D3-8D1A-4779-92FC-4C54719286B7}.Release|Any CPU.Build.0 = Release|Any CPU + {9F7F996D-AF44-4947-8392-07B3ED2ED00D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9F7F996D-AF44-4947-8392-07B3ED2ED00D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9F7F996D-AF44-4947-8392-07B3ED2ED00D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9F7F996D-AF44-4947-8392-07B3ED2ED00D}.Release|Any CPU.Build.0 = Release|Any CPU + {53F87D88-8871-41A2-9F81-B79AB02FEC24}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {53F87D88-8871-41A2-9F81-B79AB02FEC24}.Debug|Any CPU.Build.0 = Debug|Any CPU + {53F87D88-8871-41A2-9F81-B79AB02FEC24}.Release|Any CPU.ActiveCfg = Release|Any CPU + {53F87D88-8871-41A2-9F81-B79AB02FEC24}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection EndGlobal diff --git a/gcm/samples/GCMSample/GCMSample.csproj b/gcm/samples/GCMSample/GCMSample.csproj index b2f619723..5f7807b2e 100644 --- a/gcm/samples/GCMSample/GCMSample.csproj +++ b/gcm/samples/GCMSample/GCMSample.csproj @@ -80,9 +80,17 @@ {6A38FACF-F0C5-4A49-8A8A-7CE6634207CE} Basement - - {5C4C77A3-4523-4E2B-895B-6EFE4A6A1617} - Measurement + + {865652D3-8D1A-4779-92FC-4C54719286B7} + Firebase-Common + + + {9F7F996D-AF44-4947-8392-07B3ED2ED00D} + Iid + + + {53F87D88-8871-41A2-9F81-B79AB02FEC24} + Tasks diff --git a/gcm/samples/GCMSample/MainActivity.cs b/gcm/samples/GCMSample/MainActivity.cs index b7966783a..d8a551064 100644 --- a/gcm/samples/GCMSample/MainActivity.cs +++ b/gcm/samples/GCMSample/MainActivity.cs @@ -6,7 +6,7 @@ using Android.Views; using Android.Widget; using Android.OS; -using Android.Gms.Gcm.Iid; +using Android.Gms.Iid; using Android.Gms.Gcm; // @PACKAGE_NAME@ will inject your own package name into the value diff --git a/gcm/source/Additions/Additions.cs b/gcm/source/Additions/Additions.cs index 4434816db..9c5ee256b 100644 --- a/gcm/source/Additions/Additions.cs +++ b/gcm/source/Additions/Additions.cs @@ -2,42 +2,6 @@ using System.Threading.Tasks; using Android.OS; -namespace Android.Gms.Gcm.Iid -{ - public partial class InstanceID - { - public const string IntentFilterAction = "com.google.android.gms.iid.InstanceID"; - - public async Task GetTokenAsync (string authorizedEntity, string scope) - { - var taskCompletionSource = new TaskCompletionSource (); - - System.Threading.Tasks.Task.Factory.StartNew (() => { - var token = this.GetToken (authorizedEntity, scope); - taskCompletionSource.SetResult (token); - }).ContinueWith (t => { - taskCompletionSource.SetException (t.Exception); - }, TaskContinuationOptions.OnlyOnFaulted); - - return await taskCompletionSource.Task; - } - - public async Task GetTokenAsync (string authorizedEntity, string scope, Bundle extras) - { - var taskCompletionSource = new TaskCompletionSource (); - - System.Threading.Tasks.Task.Factory.StartNew (() => { - var token = this.GetToken (authorizedEntity, scope, extras); - taskCompletionSource.SetResult (token); - }).ContinueWith (t => { - taskCompletionSource.SetException (t.Exception); - }, TaskContinuationOptions.OnlyOnFaulted); - - return await taskCompletionSource.Task; - } - } -} - namespace Android.Gms.Gcm { public partial class GoogleCloudMessaging diff --git a/gcm/source/Additions/Manifest.cs b/gcm/source/Additions/Manifest.cs index a3118e8ae..d8607749e 100644 --- a/gcm/source/Additions/Manifest.cs +++ b/gcm/source/Additions/Manifest.cs @@ -1,17 +1,12 @@ -// using System; -// using Android.Runtime; -// using Android.App; -// using Android.Content; +using System; +using Android.App; -// [assembly: UsesPermission ("com.google.android.c2dm.permission.RECEIVE")] +[assembly: UsesPermission ("com.google.android.c2dm.permission.RECEIVE")] +[assembly: UsesPermission (Android.Manifest.Permission.Internet)] // [assembly: Permission (Name="@PACKAGE_NAME@.permission.C2D_MESSAGE")] // [assembly: UsesPermission ("@PACKAGE_NAME@.permission.C2D_MESSAGE")] -// [assembly: UsesPermission (Android.Manifest.Permission.Internet)] -// [assembly: UsesPermission (Android.Manifest.Permission.WakeLock)] - - // namespace Android.Gms.Gcm // { // [Register ("com/google/android/gms/gcm/GcmReceiver", DoNotGenerateAcw=true)] diff --git a/gcm/source/Gcm.csproj b/gcm/source/Gcm.csproj index 63ce970e3..35c7c9eae 100644 --- a/gcm/source/Gcm.csproj +++ b/gcm/source/Gcm.csproj @@ -77,9 +77,13 @@ {3F6BAE25-ADEB-468C-8384-AD655623C341} Base - - {5C4C77A3-4523-4E2B-895B-6EFE4A6A1617} - Measurement + + {9F7F996D-AF44-4947-8392-07B3ED2ED00D} + Iid + + + {6A38FACF-F0C5-4A49-8A8A-7CE6634207CE} + Basement diff --git a/gcm/source/Transforms/Metadata.generated.xml b/gcm/source/Transforms/Metadata.generated.xml index 80c641fd3..26c2f6238 100644 --- a/gcm/source/Transforms/Metadata.generated.xml +++ b/gcm/source/Transforms/Metadata.generated.xml @@ -1,101 +1,2 @@ - intent - from - data - msgId - msgId - error - intent - flags - startId - gcmTaskService - tag - gcmTaskService - context - task - context - registrationToken - topic - extras - registrationToken - topic - context - intent - intent - intent - flags - startId - context - intent - senderIds - toValue - msgId - timeToLive - data - toValue - msgId - data - bundle - parcel - flags - windowStartDelaySeconds - windowEndDelaySeconds - extras - isPersisted - requiredNetworkState - requiresCharging - gcmTaskService - tag - updateCurrent - inValue - parcel - iValue - bundle - parcel - flags - extras - flexInSeconds - periodInSeconds - isPersisted - requiredNetworkState - requiresCharging - gcmTaskService - tag - updateCurrent - bundle - parcel - iValue - tag - tag - extras - code - data - reply - flags - context - subtype - options - authorizedEntity - scope - context - authorizedEntity - scope - authorizedEntity - scope - extras - intent - intent - flags - startId - handler - target - otherObj - message - output - flags - msg - code - data - reply - flags From 6d54a014eaf07ed48a3274bfeef267d79833a7ec Mon Sep 17 00:00:00 2001 From: Redth Date: Wed, 1 Jun 2016 13:48:57 -0400 Subject: [PATCH 022/178] Updated identity binding --- .../source/Transforms/Metadata.generated.xml | 22 ------------------- 1 file changed, 22 deletions(-) diff --git a/identity/source/Transforms/Metadata.generated.xml b/identity/source/Transforms/Metadata.generated.xml index 505f5cf4b..26c2f6238 100644 --- a/identity/source/Transforms/Metadata.generated.xml +++ b/identity/source/Transforms/Metadata.generated.xml @@ -1,24 +1,2 @@ - googleApiClient - request - requestCode - theme - output - flags - countrySpecification - countrySpecifications - countryCode - dest - flags - data - output - flags - code - data - reply - flags - code - data - reply - flags From 006ef3acc57297db29e5b3e7ef82e8981f82b141 Mon Sep 17 00:00:00 2001 From: Redth Date: Wed, 1 Jun 2016 13:49:11 -0400 Subject: [PATCH 023/178] Updated location binding and sample --- location/component/component.template.yaml | 26 +- location/samples/LocationSample.sln | 12 + .../LocationSample/LocationSample.csproj | 8 + location/samples/PlacesAsync.sln | 12 + .../samples/PlacesAsync/PlacesAsync.csproj | 13 +- .../PlacesAsync/PlacesAutocompleteAdapter.cs | 2 +- location/source/Location.csproj | 2 + .../source/Transforms/Metadata.generated.xml | 481 ------------------ location/source/Transforms/Metadata.xml | 3 +- 9 files changed, 65 insertions(+), 494 deletions(-) diff --git a/location/component/component.template.yaml b/location/component/component.template.yaml index 4d4f304e6..fb7a57346 100644 --- a/location/component/component.template.yaml +++ b/location/component/component.template.yaml @@ -12,6 +12,8 @@ libraries: android: - ../../output/Xamarin.GooglePlayServices.Base.dll - ../../output/Xamarin.GooglePlayServices.Basement.dll + - ../../output/Xamarin.GooglePlayServices.Tasks.dll + - ../../output/Xamarin.Firebase.Common.dll - ../../output/Xamarin.GooglePlayServices.Location.dll - ../../output/Xamarin.GooglePlayServices.Maps.dll is_shell: true @@ -22,29 +24,37 @@ samples: - name: "Location Sample" path: ../../location/samples/LocationSample.sln removeProjects: - - Xamarin.GooglePlayServices.Base - - Xamarin.GooglePlayServices.Basement - - Xamarin.GooglePlayServices.Location - - Xamarin.GooglePlayServices.Maps + - Base + - Basement + - Tasks + - Firebase-Common + - Location + - Maps installNuGets: - project: LocationSample packages: - Xamarin.GooglePlayServices.Base - Xamarin.GooglePlayServices.Basement + - Xamarin.GooglePlayServices.Tasks + - Xamarin.Firebase.Common - Xamarin.GooglePlayServices.Location - Xamarin.GooglePlayServices.Maps - name: "Places Async Sample" path: ../../location/samples/PlacesAsync.sln removeProjects: - - Xamarin.GooglePlayServices.Base - - Xamarin.GooglePlayServices.Basement - - Xamarin.GooglePlayServices.Location - - Xamarin.GooglePlayServices.Maps + - Base + - Basement + - Tasks + - Firebase-Common + - Location + - Maps installNuGets: - project: PlacesAsync packages: - Xamarin.GooglePlayServices.Base - Xamarin.GooglePlayServices.Basement + - Xamarin.GooglePlayServices.Tasks + - Xamarin.Firebase.Common - Xamarin.GooglePlayServices.Location - Xamarin.GooglePlayServices.Maps local-nuget-repo: ../../output/ diff --git a/location/samples/LocationSample.sln b/location/samples/LocationSample.sln index 5d333badc..0ca36979c 100644 --- a/location/samples/LocationSample.sln +++ b/location/samples/LocationSample.sln @@ -13,6 +13,10 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Maps", "..\..\maps\source\M EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Location", "..\source\Location.csproj", "{F666DC89-9CE4-491C-8450-6FBC70298FA3}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tasks", "..\..\tasks\source\Tasks.csproj", "{53F87D88-8871-41A2-9F81-B79AB02FEC24}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Firebase-Common", "..\..\firebase-common\source\Firebase-Common.csproj", "{865652D3-8D1A-4779-92FC-4C54719286B7}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -43,5 +47,13 @@ Global {F666DC89-9CE4-491C-8450-6FBC70298FA3}.Debug|Any CPU.Build.0 = Debug|Any CPU {F666DC89-9CE4-491C-8450-6FBC70298FA3}.Release|Any CPU.ActiveCfg = Release|Any CPU {F666DC89-9CE4-491C-8450-6FBC70298FA3}.Release|Any CPU.Build.0 = Release|Any CPU + {53F87D88-8871-41A2-9F81-B79AB02FEC24}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {53F87D88-8871-41A2-9F81-B79AB02FEC24}.Debug|Any CPU.Build.0 = Debug|Any CPU + {53F87D88-8871-41A2-9F81-B79AB02FEC24}.Release|Any CPU.ActiveCfg = Release|Any CPU + {53F87D88-8871-41A2-9F81-B79AB02FEC24}.Release|Any CPU.Build.0 = Release|Any CPU + {865652D3-8D1A-4779-92FC-4C54719286B7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {865652D3-8D1A-4779-92FC-4C54719286B7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {865652D3-8D1A-4779-92FC-4C54719286B7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {865652D3-8D1A-4779-92FC-4C54719286B7}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection EndGlobal diff --git a/location/samples/LocationSample/LocationSample.csproj b/location/samples/LocationSample/LocationSample.csproj index 00eacd5aa..a744fe3f1 100644 --- a/location/samples/LocationSample/LocationSample.csproj +++ b/location/samples/LocationSample/LocationSample.csproj @@ -85,5 +85,13 @@ {F666DC89-9CE4-491C-8450-6FBC70298FA3} Location + + {865652D3-8D1A-4779-92FC-4C54719286B7} + Firebase-Common + + + {53F87D88-8871-41A2-9F81-B79AB02FEC24} + Tasks + \ No newline at end of file diff --git a/location/samples/PlacesAsync.sln b/location/samples/PlacesAsync.sln index 831025a42..7eb04fcd2 100644 --- a/location/samples/PlacesAsync.sln +++ b/location/samples/PlacesAsync.sln @@ -13,6 +13,10 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PlacesAsync.UITests", "Plac EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Basement", "..\..\basement\source\Basement.csproj", "{6A38FACF-F0C5-4A49-8A8A-7CE6634207CE}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Firebase-Common", "..\..\firebase-common\source\Firebase-Common.csproj", "{865652D3-8D1A-4779-92FC-4C54719286B7}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tasks", "..\..\tasks\source\Tasks.csproj", "{53F87D88-8871-41A2-9F81-B79AB02FEC24}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -43,5 +47,13 @@ Global {F666DC89-9CE4-491C-8450-6FBC70298FA3}.Debug|Any CPU.Build.0 = Debug|Any CPU {F666DC89-9CE4-491C-8450-6FBC70298FA3}.Release|Any CPU.ActiveCfg = Release|Any CPU {F666DC89-9CE4-491C-8450-6FBC70298FA3}.Release|Any CPU.Build.0 = Release|Any CPU + {865652D3-8D1A-4779-92FC-4C54719286B7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {865652D3-8D1A-4779-92FC-4C54719286B7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {865652D3-8D1A-4779-92FC-4C54719286B7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {865652D3-8D1A-4779-92FC-4C54719286B7}.Release|Any CPU.Build.0 = Release|Any CPU + {53F87D88-8871-41A2-9F81-B79AB02FEC24}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {53F87D88-8871-41A2-9F81-B79AB02FEC24}.Debug|Any CPU.Build.0 = Debug|Any CPU + {53F87D88-8871-41A2-9F81-B79AB02FEC24}.Release|Any CPU.ActiveCfg = Release|Any CPU + {53F87D88-8871-41A2-9F81-B79AB02FEC24}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection EndGlobal diff --git a/location/samples/PlacesAsync/PlacesAsync.csproj b/location/samples/PlacesAsync/PlacesAsync.csproj index 1838f68c5..ac1f9f176 100644 --- a/location/samples/PlacesAsync/PlacesAsync.csproj +++ b/location/samples/PlacesAsync/PlacesAsync.csproj @@ -16,6 +16,7 @@ False PlacesAsync v4.2 + armeabi;armeabi-v7a;x86;arm64-v8a;x86_64 true @@ -27,7 +28,6 @@ 4 None false - armeabi;armeabi-v7a;x86;arm64-v8a;x86_64 full @@ -37,7 +37,6 @@ 4 false false - armeabi;armeabi-v7a;x86;arm64-v8a;x86_64 @@ -71,7 +70,7 @@ - + {3F6BAE25-ADEB-468C-8384-AD655623C341} @@ -89,5 +88,13 @@ {6A38FACF-F0C5-4A49-8A8A-7CE6634207CE} Basement + + {865652D3-8D1A-4779-92FC-4C54719286B7} + Firebase-Common + + + {53F87D88-8871-41A2-9F81-B79AB02FEC24} + Tasks + \ No newline at end of file diff --git a/location/samples/PlacesAsync/PlacesAutocompleteAdapter.cs b/location/samples/PlacesAsync/PlacesAutocompleteAdapter.cs index 9c4ea01ed..8581f0a95 100644 --- a/location/samples/PlacesAsync/PlacesAutocompleteAdapter.cs +++ b/location/samples/PlacesAsync/PlacesAutocompleteAdapter.cs @@ -111,7 +111,7 @@ async Task> getAutocomplete (Java.Lang.ICharSequence constraint) } // Copy the results into our own list, because we can't hold onto the buffer - var list = autocompletePredictions.Select (p => new PlaceInfo { PlaceId = p.PlaceId, Description = p.Description }) + var list = autocompletePredictions.Select (p => new PlaceInfo { PlaceId = p.PlaceId, Description = p.GetPrimaryTextFormatted (null).ToString() }) .ToList (); // Release the buffer now that all data has been copied. diff --git a/location/source/Location.csproj b/location/source/Location.csproj index 683f4aeb0..267b3d8f6 100644 --- a/location/source/Location.csproj +++ b/location/source/Location.csproj @@ -17,6 +17,8 @@ + 8.0.30703 + 2.0 true diff --git a/location/source/Transforms/Metadata.generated.xml b/location/source/Transforms/Metadata.generated.xml index d3d0904d6..26c2f6238 100644 --- a/location/source/Transforms/Metadata.generated.xml +++ b/location/source/Transforms/Metadata.generated.xml @@ -1,483 +1,2 @@ - oValue - output - client - callbackIntent - client - detectionIntervalMillis - callbackIntent - versionCode - probableActivities - timeMillis - elapsedRealtimeMillis - detectorInfoId - extras - mostProbableActivity - time - elapsedRealtimeMillis - mostProbableActivity - time - elapsedRealtimeMillis - detectorInfoId - extra - probableActivities - time - elapsedRealtimeMillis - probableActivities - time - elapsedRealtimeMillis - detectorInfoId - extras - oValue - intent - activityType - intent - output - flags - parcel - sizeValue - activityType - confidence - versionCode - activityType - confidence - oValue - output - flags - parcel - sizeValue - client - client - client - client - callbackIntent - client - callback - client - listener - client - request - callbackIntent - client - request - callback - looper - client - request - listener - client - request - listener - looper - client - mockLocation - client - isMockMode - latitude - longitude - radius - durationMillis - loiteringDelayMs - notificationResponsivenessMs - requestId - transitionTypes - statusCode - client - geofencingRequest - pendingIntent - client - geofences - pendingIntent - client - pendingIntent - client - geofenceRequestIds - intent - dest - flags - geofence - geofences - initialTrigger - output - flags - other - intent - intent - parcel - flags - parcel - sizeValue - locationAvailability - result - objectValue - millis - millis - millis - millis - millis - numUpdates - priority - smallestDisplacementMeters - parcel - flags - parcel - sizeValue - locations - other - intent - intent - parcel - flags - dest - flags - requests - request - show - needBle - status - dest - flags - intent - dest - flags - client - request - state - result - code - data - reply - flags - location - code - data - reply - flags - oValue - parcel - flags - status - dest - flags - other - parcel - flags - parcel - flags - version - requestId - transitionTypes - theType - latitude - longitude - radius - expireAt - notificationResponsiveness - loiteringDelayMillis - requestId - transitionTypes - theType - latitude - longitude - radius - expireAt - notificationResponsiveness - loiteringDelayMillis - objValue - parcel - flags - client - callbackIntent - client - detectionIntervalMillis - callbackIntent - client - client - client - client - callbackIntent - client - callback - client - listener - client - request - callbackIntent - client - request - callback - looper - client - request - listener - client - request - listener - looper - client - mockLocation - client - isMockMode - client - geofencingRequest - pendingIntent - client - geofences - pendingIntent - client - pendingIntent - client - geofenceRequestIds - code - data - reply - flags - code - data - reply - flags - code - data - reply - flags - code - data - reply - flags - client - request - nameValue - latLng - address - placeTypes - uri - nameValue - latLng - address - placeTypes - phoneNumber - nameValue - latLng - address - placeTypes - phoneNumber - uri - parcel - flags - placeTypes - objectValue - parcel - flags - typeFilter - matchStyle - matchStyle - matchStyle - dataHolder - position - client - addPlaceRequest - client - query - bounds - filter - client - placeIds - client - placeId - objectValue - parcel - flags - objectValue - parcel - flags - dataHolder - context - position - client - filter - client - report - restrictToPlaceTypes - requireOpenNow - restrictToPlaceIds - requestedUserDataTypes - requireOpenNow - restrictToPlaceIds - objectValue - parcel - flags - dataHolder - source - context - position - client - client - width - height - dataHolder - position - status - dataHolder - parcel - flags - status - teleporter - parcel - flags - placeId - tag - that - output - flags - versionCode - filter - interval - priority - expireAt - objectValue - parcel - flags - statusCode - objectValue - parcel - flags - objectValue - matchStyle - matchStyle - matchStyle - parcel - flags - versionCode - offset - length - objectValue - parcel - flags - objectValue - locale - parcel - flags - objectValue - parcel - flags - versionCode - nameValue - address - internationalPhoneNumber - regularOpenHours - attributions - objectValue - parcel - flags - versionCode - clientPackageName - localeString - accountName - gCoreClientName - gCoreClientJarVersion - requestSource - clientPackageName - locale - accountName - clientPackageName - locale - accountName - gCoreClientName - requestSource - objectValue - output - flags - matchStyle - matchStyle - matchStyle - client - addPlaceRequest - client - query - bounds - filter - client - placeIds - client - placeId - code - data - reply - flags - code - data - reply - flags - code - data - reply - flags - code - data - reply - flags - client - filter - client - report - other - client - client - width - height - client - client - width - height - objectValue - parcel - flags - parcel - flags - objectValue - parcel - flags - code - data - reply - flags - context - intent - context - intent - mode - activity - bounds - filter - requestCode - resultCode - data - inflater - container - savedInstanceState - bounds - filter - hint - listener - text - intent - intent - context - intent - intent - context - activity - latLngBounds - requestCode - resultCode - data - inflater - container - savedInstanceState - bounds - filter - hint - listener - text - activity diff --git a/location/source/Transforms/Metadata.xml b/location/source/Transforms/Metadata.xml index 9ccc6f902..99f8e230e 100644 --- a/location/source/Transforms/Metadata.xml +++ b/location/source/Transforms/Metadata.xml @@ -26,9 +26,10 @@ - + + location From b2e0a501a7f9554f1ca099175fedeb7ea738448d Mon Sep 17 00:00:00 2001 From: Redth Date: Wed, 1 Jun 2016 13:49:26 -0400 Subject: [PATCH 024/178] Updated maps binding and sample --- maps/component/component.template.yaml | 12 +- maps/samples/MapsSample.sln | 12 + maps/samples/MapsSample/MapsSample.csproj | 15 +- maps/source/Maps.csproj | 2 + maps/source/Transforms/Metadata.generated.xml | 792 ------------------ 5 files changed, 34 insertions(+), 799 deletions(-) diff --git a/maps/component/component.template.yaml b/maps/component/component.template.yaml index c91713231..2ba7db890 100644 --- a/maps/component/component.template.yaml +++ b/maps/component/component.template.yaml @@ -12,6 +12,8 @@ libraries: android: - ../../output/Xamarin.GooglePlayServices.Base.dll - ../../output/Xamarin.GooglePlayServices.Basement.dll + - ../../output/Xamarin.GooglePlayServices.Tasks.dll + - ../../output/Xamarin.Firebase.Common.dll - ../../output/Xamarin.GooglePlayServices.Maps.dll is_shell: true packages: @@ -21,14 +23,18 @@ samples: - name: "Maps Sample" path: ../../maps/samples/MapsSample.sln removeProjects: - - Xamarin.GooglePlayServices.Base - - Xamarin.GooglePlayServices.Basement - - Xamarin.GooglePlayServices.Maps + - Base + - Basement + - Tasks + - Firebase-Common + - Maps installNuGets: - project: MapsSample packages: - Xamarin.GooglePlayServices.Base - Xamarin.GooglePlayServices.Basement + - Xamarin.GooglePlayServices.Tasks + - Xamarin.Firebase.Common - Xamarin.GooglePlayServices.Maps local-nuget-repo: ../../output/ no_build: true diff --git a/maps/samples/MapsSample.sln b/maps/samples/MapsSample.sln index 527fa17b9..1ac51c15f 100644 --- a/maps/samples/MapsSample.sln +++ b/maps/samples/MapsSample.sln @@ -11,6 +11,10 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Maps", "..\source\Maps.cspr EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Basement", "..\..\Basement\source\Basement.csproj", "{6A38FACF-F0C5-4A49-8A8A-7CE6634207CE}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tasks", "..\..\tasks\source\Tasks.csproj", "{53F87D88-8871-41A2-9F81-B79AB02FEC24}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Firebase-Common", "..\..\firebase-common\source\Firebase-Common.csproj", "{865652D3-8D1A-4779-92FC-4C54719286B7}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -37,5 +41,13 @@ Global {8F7D2AC9-C3BB-4698-886C-610A582691E4}.Debug|Any CPU.Build.0 = Debug|Any CPU {8F7D2AC9-C3BB-4698-886C-610A582691E4}.Release|Any CPU.ActiveCfg = Release|Any CPU {8F7D2AC9-C3BB-4698-886C-610A582691E4}.Release|Any CPU.Build.0 = Release|Any CPU + {53F87D88-8871-41A2-9F81-B79AB02FEC24}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {53F87D88-8871-41A2-9F81-B79AB02FEC24}.Debug|Any CPU.Build.0 = Debug|Any CPU + {53F87D88-8871-41A2-9F81-B79AB02FEC24}.Release|Any CPU.ActiveCfg = Release|Any CPU + {53F87D88-8871-41A2-9F81-B79AB02FEC24}.Release|Any CPU.Build.0 = Release|Any CPU + {865652D3-8D1A-4779-92FC-4C54719286B7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {865652D3-8D1A-4779-92FC-4C54719286B7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {865652D3-8D1A-4779-92FC-4C54719286B7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {865652D3-8D1A-4779-92FC-4C54719286B7}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection EndGlobal diff --git a/maps/samples/MapsSample/MapsSample.csproj b/maps/samples/MapsSample/MapsSample.csproj index 709f3d703..d56483a85 100644 --- a/maps/samples/MapsSample/MapsSample.csproj +++ b/maps/samples/MapsSample/MapsSample.csproj @@ -15,7 +15,8 @@ True True MapsSample - v5.1 + v6.0 + armeabi;armeabi-v7a;x86;arm64-v8a;x86_64 true @@ -27,7 +28,6 @@ 4 None false - armeabi;armeabi-v7a;x86;arm64-v8a;x86_64 full @@ -37,7 +37,6 @@ 4 false false - armeabi;armeabi-v7a;x86;arm64-v8a;x86_64 @@ -140,7 +139,7 @@ - + {3F6BAE25-ADEB-468C-8384-AD655623C341} @@ -154,5 +153,13 @@ {6A38FACF-F0C5-4A49-8A8A-7CE6634207CE} Basement + + {865652D3-8D1A-4779-92FC-4C54719286B7} + Firebase-Common + + + {53F87D88-8871-41A2-9F81-B79AB02FEC24} + Tasks + \ No newline at end of file diff --git a/maps/source/Maps.csproj b/maps/source/Maps.csproj index 9e087996f..d35101eba 100644 --- a/maps/source/Maps.csproj +++ b/maps/source/Maps.csproj @@ -16,6 +16,8 @@ + 8.0.30703 + 2.0 true diff --git a/maps/source/Transforms/Metadata.generated.xml b/maps/source/Transforms/Metadata.generated.xml index 20b1a6975..26c2f6238 100644 --- a/maps/source/Transforms/Metadata.generated.xml +++ b/maps/source/Transforms/Metadata.generated.xml @@ -1,794 +1,2 @@ - cameraPosition - latLng - bounds - padding - bounds - width - height - padding - latLng - zoom - xPixel - yPixel - amount - amount - focus - zoom - map - options - options - options - options - options - options - update - update - durationMs - callback - update - callback - update - enabled - description - enabled - adapter - source - theType - enabled - listener - listener - listener - listener - listener - listener - listener - callback - listener - listener - listener - listener - listener - listener - listener - left - top - right - bottom - enabled - callback - callback - bitmap - enabled - camera - enabled - context - attrs - enabled - enabled - mapType - enabled - enabled - enabled - useViewLifecycleInFragment - output - flags - enabled - enabled - zOrderOnTop - location - callback - options - savedInstanceState - activity - savedInstanceState - inflater - container - savedInstanceState - ambientDetails - activity - attrs - savedInstanceState - outState - args - context - context - context - attrs - context - attrs - defStyle - context - options - callback - savedInstanceState - ambientDetails - outState - point - location - sv - camera - duration - orientation - point - listener - listener - listener - listener - enablePanning - position - position - radius - panoId - enableStreetNames - enableUserNavigation - enableZoom - callback - options - savedInstanceState - activity - savedInstanceState - inflater - container - savedInstanceState - activity - attrs - savedInstanceState - outState - args - enabled - camera - panoId - position - position - radius - enabled - enabled - useViewLifecycleInFragment - output - flags - enabled - context - context - attrs - context - attrs - defStyle - context - options - callback - savedInstanceState - outState - callback - options - savedInstanceState - activity - savedInstanceState - inflater - container - savedInstanceState - ambientDetails - activity - attrs - savedInstanceState - outState - args - callback - options - savedInstanceState - activity - savedInstanceState - inflater - container - savedInstanceState - activity - attrs - savedInstanceState - outState - args - enabled - enabled - enabled - enabled - enabled - enabled - enabled - enabled - enabled - enabled - cameraPosition - latLng - bounds - padding - bounds - width - height - padding - latLng - zoom - xPixel - yPixel - amount - amount - screenFocusX - screenFocusY - zoom - code - data - reply - flags - options - options - options - options - options - options - update - update - callback - update - durationMs - callback - callback - update - bundle - ambientDetails - outState - enabled - description - enabled - adapter - source - theType - enabled - listener - listener - listener - listener - listener - listener - listener - callback - listener - listener - listener - listener - listener - listener - listener - listener - left - top - right - bottom - enabled - callback - bitmap - code - data - reply - flags - listener - code - data - reply - flags - callback - savedInstanceState - inflaterWrapper - containerWrapper - savedInstanceState - ambientDetails - activityWrapper - options - savedInstanceState - outState - code - data - reply - flags - callback - savedInstanceState - ambientDetails - outState - code - data - reply - flags - point - location - code - data - reply - flags - camera - duration - enablePanning - enableStreetNames - enableUserNavigation - enableZoom - orientation - point - listener - listener - listener - listener - position - panoId - position - radius - code - data - reply - flags - callback - savedInstanceState - inflaterWrapper - containerWrapper - savedInstanceState - activityWrapper - options - savedInstanceState - outState - code - data - reply - flags - callback - savedInstanceState - outState - code - data - reply - flags - enabled - enabled - enabled - enabled - enabled - enabled - enabled - enabled - enabled - enabled - code - data - reply - flags - callback - callback - code - data - reply - flags - snapshot - code - data - reply - flags - code - data - reply - flags - resources - code - data - reply - flags - code - data - reply - flags - position - code - data - reply - flags - code - data - reply - flags - code - data - reply - flags - code - data - reply - flags - code - data - reply - flags - code - data - reply - flags - code - data - reply - flags - point - code - data - reply - flags - code - data - reply - flags - point - code - data - reply - flags - code - data - reply - flags - code - data - reply - flags - code - data - reply - flags - code - data - reply - flags - code - data - reply - flags - code - data - reply - flags - code - data - reply - flags - code - data - reply - flags - camera - code - data - reply - flags - location - code - data - reply - flags - orientation - code - data - reply - flags - orientation - code - data - reply - flags - remoteObject - hue - assetName - image - fileName - absolutePath - resourceId - target - zoom - tilt - bearing - camera - context - attrs - oValue - target - zoom - output - flags - previous - bearing - location - tilt - zoom - delegateValue - other - center - color - radius - color - width - visible - zIndex - center - color - radius - color - width - visible - output - flags - zIndex - delegateValue - other - bearing - clickable - width - width - height - image - latLng - bounds - transparency - visible - zIndex - uValue - vValue - bearing - clickable - image - location - width - location - width - height - bounds - transparency - visible - output - flags - zIndex - delegateValue - other - delegateValue - other - latitude - longitude - oValue - output - flags - southwest - northeast - point - oValue - point - output - flags - point - delegateValue - other - alpha - anchorU - anchorV - draggable - flat - icon - anchorU - anchorV - latlng - rotation - snippet - title - visible - alpha - uValue - vValue - draggable - flat - icon - uValue - vValue - position - rotation - snippet - title - visible - output - flags - output - flags - delegateValue - other - clickable - color - geodesic - holes - points - color - width - visible - zIndex - point - points - points - points - clickable - color - geodesic - color - width - visible - output - flags - zIndex - delegateValue - other - clickable - color - geodesic - points - visible - width - zIndex - point - points - points - clickable - color - geodesic - visible - width - output - flags - zIndex - eValue - zoom - tilt - bearing - camera - oValue - output - flags - previous - bearing - orientation - tilt - zoom - oValue - output - flags - links - position - panoId - oValue - output - flags - tilt - bearing - orientation - oValue - output - flags - previous - bearing - tilt - width - height - data - output - flags - delegateValue - other - fadeIn - visible - zIndex - fadeIn - tileProvider - visible - output - flags - zIndex - xValue - yValue - zoom - width - height - xValue - yValue - zoom - nearLeft - nearRight - farLeft - farRight - latLngBounds - oValue - output - flags - other - clickable - color - geodesic - points - visible - width - zIndex - code - data - reply - flags - code - data - reply - flags - center - color - radius - color - width - visible - zIndex - code - data - reply - flags - bearing - clickable - width - latlng - bounds - transparency - visible - zIndex - code - data - reply - flags - code - data - reply - flags - code - data - reply - flags - alpha - anchorU - anchorV - draggable - flat - anchorU - anchorV - latlng - rotation - snippet - title - visible - code - data - reply - flags - clickable - color - geodesic - holes - points - color - width - visible - zIndex - code - data - reply - flags - fadeIn - visible - zIndex - code - data - reply - flags - xValue - yValue - zoom - code - data - reply - flags From 1629d14007ee7ee0863521cb38745d65a61108cf Mon Sep 17 00:00:00 2001 From: Redth Date: Wed, 1 Jun 2016 13:49:36 -0400 Subject: [PATCH 025/178] Updated nearby binding and sample --- nearby/component/component.template.yaml | 12 +- nearby/samples/NearbySample.sln | 12 + .../samples/NearbySample/NearbySample.csproj | 15 +- .../Additions/IPendingResultExtensions.cs | 16 +- .../source/Transforms/Metadata.generated.xml | 393 ------------------ nearby/source/Transforms/Metadata.xml | 1 + 6 files changed, 34 insertions(+), 415 deletions(-) diff --git a/nearby/component/component.template.yaml b/nearby/component/component.template.yaml index cc9fc363c..4e5bcc6b7 100644 --- a/nearby/component/component.template.yaml +++ b/nearby/component/component.template.yaml @@ -12,6 +12,8 @@ libraries: android: - ../../output/Xamarin.GooglePlayServices.Base.dll - ../../output/Xamarin.GooglePlayServices.Basement.dll + - ../../output/Xamarin.GooglePlayServices.Tasks.dll + - ../../output/Xamarin.Firebase.Common.dll - ../../output/Xamarin.GooglePlayServices.Nearby.dll is_shell: true packages: @@ -21,14 +23,18 @@ samples: - name: "Nearby Sample" path: ../../nearby/samples/NearbySample.sln removeProjects: - - Xamarin.GooglePlayServices.Base - - Xamarin.GooglePlayServices.Basement - - Xamarin.GooglePlayServices.Nearby + - Base + - Basement + - Tasks + - Firebase-Common + - Nearby installNuGets: - project: NearbySample packages: - Xamarin.GooglePlayServices.Base - Xamarin.GooglePlayServices.Basement + - Xamarin.GooglePlayServices.Tasks + - Xamarin.Firebase.Common - Xamarin.GooglePlayServices.Nearby local-nuget-repo: ../../output/ no_build: true diff --git a/nearby/samples/NearbySample.sln b/nearby/samples/NearbySample.sln index 9a1a11abf..1dc833677 100644 --- a/nearby/samples/NearbySample.sln +++ b/nearby/samples/NearbySample.sln @@ -11,6 +11,10 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Nearby", "..\source\Nearby. EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Basement", "..\..\basement\source\Basement.csproj", "{6A38FACF-F0C5-4A49-8A8A-7CE6634207CE}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tasks", "..\..\tasks\source\Tasks.csproj", "{53F87D88-8871-41A2-9F81-B79AB02FEC24}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Firebase-Common", "..\..\firebase-common\source\Firebase-Common.csproj", "{865652D3-8D1A-4779-92FC-4C54719286B7}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -37,5 +41,13 @@ Global {A7ADD277-FCAB-46D5-8F18-2E4BFFDA3AE7}.Debug|Any CPU.Build.0 = Debug|Any CPU {A7ADD277-FCAB-46D5-8F18-2E4BFFDA3AE7}.Release|Any CPU.ActiveCfg = Release|Any CPU {A7ADD277-FCAB-46D5-8F18-2E4BFFDA3AE7}.Release|Any CPU.Build.0 = Release|Any CPU + {53F87D88-8871-41A2-9F81-B79AB02FEC24}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {53F87D88-8871-41A2-9F81-B79AB02FEC24}.Debug|Any CPU.Build.0 = Debug|Any CPU + {53F87D88-8871-41A2-9F81-B79AB02FEC24}.Release|Any CPU.ActiveCfg = Release|Any CPU + {53F87D88-8871-41A2-9F81-B79AB02FEC24}.Release|Any CPU.Build.0 = Release|Any CPU + {865652D3-8D1A-4779-92FC-4C54719286B7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {865652D3-8D1A-4779-92FC-4C54719286B7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {865652D3-8D1A-4779-92FC-4C54719286B7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {865652D3-8D1A-4779-92FC-4C54719286B7}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection EndGlobal diff --git a/nearby/samples/NearbySample/NearbySample.csproj b/nearby/samples/NearbySample/NearbySample.csproj index 0e5984e59..60334a0e0 100644 --- a/nearby/samples/NearbySample/NearbySample.csproj +++ b/nearby/samples/NearbySample/NearbySample.csproj @@ -15,7 +15,8 @@ True True NearbySample - v5.1 + v6.0 + armeabi;armeabi-v7a;x86;arm64-v8a;x86_64 true @@ -27,7 +28,6 @@ 4 None false - armeabi;armeabi-v7a;x86;arm64-v8a;x86_64 full @@ -37,7 +37,6 @@ 4 false false - armeabi;armeabi-v7a;x86;arm64-v8a;x86_64 @@ -73,7 +72,7 @@ - + {3F6BAE25-ADEB-468C-8384-AD655623C341} @@ -87,5 +86,13 @@ {6A38FACF-F0C5-4A49-8A8A-7CE6634207CE} Basement + + {865652D3-8D1A-4779-92FC-4C54719286B7} + Firebase-Common + + + {53F87D88-8871-41A2-9F81-B79AB02FEC24} + Tasks + \ No newline at end of file diff --git a/nearby/source/Additions/IPendingResultExtensions.cs b/nearby/source/Additions/IPendingResultExtensions.cs index 43574f271..68f08cc40 100644 --- a/nearby/source/Additions/IPendingResultExtensions.cs +++ b/nearby/source/Additions/IPendingResultExtensions.cs @@ -34,6 +34,7 @@ namespace Android.Gms.Nearby.Messages { public static partial class IMessagesExtensions { + [Obsolete] public static async Task GetPermissionStatusAsync (this IMessages api, GoogleApiClient client) { return (await api.GetPermissionStatus (client)).JavaCast (); @@ -46,11 +47,6 @@ public static async Task PublishAsync (this IMessages api, GoogleApiCl { return (await api.Publish (client, message, options)).JavaCast (); } - [Obsolete] - public static async Task PublishAsync (this IMessages api, GoogleApiClient client, Android.Gms.Nearby.Messages.Message message, Android.Gms.Nearby.Messages.Strategy strategy) - { - return (await api.Publish (client, message, strategy)).JavaCast (); - } public static async Task RegisterStatusCallbackAsync (this IMessages api, GoogleApiClient client, Android.Gms.Nearby.Messages.StatusCallback statusCallback) { return (await api.RegisterStatusCallback (client, statusCallback)).JavaCast (); @@ -59,16 +55,6 @@ public static async Task SubscribeAsync (this IMessages api, GoogleApi { return (await api.Subscribe (client, listener)).JavaCast (); } - [Obsolete] - public static async Task SubscribeAsync (this IMessages api, GoogleApiClient client, Android.Gms.Nearby.Messages.MessageListener listener, Android.Gms.Nearby.Messages.Strategy strategy) - { - return (await api.Subscribe (client, listener, strategy)).JavaCast (); - } - [Obsolete] - public static async Task SubscribeAsync (this IMessages api, GoogleApiClient client, Android.Gms.Nearby.Messages.MessageListener listener, Android.Gms.Nearby.Messages.Strategy strategy, Android.Gms.Nearby.Messages.MessageFilter filter) - { - return (await api.Subscribe (client, listener, strategy, filter)).JavaCast (); - } public static async Task SubscribeAsync (this IMessages api, GoogleApiClient client, Android.Gms.Nearby.Messages.MessageListener listener, Android.Gms.Nearby.Messages.SubscribeOptions options) { return (await api.Subscribe (client, listener, options)).JavaCast (); diff --git a/nearby/source/Transforms/Metadata.generated.xml b/nearby/source/Transforms/Metadata.generated.xml index 09e94f57c..26c2f6238 100644 --- a/nearby/source/Transforms/Metadata.generated.xml +++ b/nearby/source/Transforms/Metadata.generated.xml @@ -1,395 +1,2 @@ - errorCode - code - data - reply - flags - errorCode - code - data - reply - flags - code - data - reply - flags - code - data - reply - flags - errorCode - code - data - reply - flags - remoteEndpointId - remoteDeviceId - remoteEndpointName - payload - remoteEndpointId - endpointId - deviceId - applicationId - nameValue - endpointId - remoteEndpointId - payload - isReliable - apiClient - remoteEndpointId - payload - messageListener - apiClient - remoteEndpointId - apiClient - apiClient - apiClient - remoteEndpointId - apiClient - nameValue - remoteEndpointId - payload - connectionResponseCallback - messageListener - apiClient - remoteEndpointId - payload - apiClient - remoteEndpointIds - payload - apiClient - remoteEndpointId - payload - apiClient - remoteEndpointIds - payload - apiClient - nameValue - appMetadata - durationMillis - connectionRequestListener - apiClient - serviceId - durationMillis - listener - apiClient - apiClient - apiClient - serviceId - remoteEndpointId - remoteDeviceId - remoteEndpointName - payload - remoteEndpointId - endpointId - deviceId - serviceId - nameValue - endpointId - remoteEndpointId - payload - isReliable - code - data - reply - flags - code - data - reply - flags - output - flags - output - flags - output - flags - output - flags - output - flags - output - flags - output - flags - output - flags - output - flags - identifier - output - flags - appIdentifiers - output - flags - apiClient - remoteEndpointId - payload - messageListener - apiClient - remoteEndpointId - apiClient - apiClient - apiClient - remoteEndpointId - apiClient - nameValue - remoteEndpointId - payload - connectionResponseCallback - messageListener - apiClient - remoteEndpointId - payload - apiClient - remoteEndpointIds - payload - apiClient - remoteEndpointId - payload - apiClient - remoteEndpointIds - payload - apiClient - nameValue - appMetadata - durationMillis - connectionRequestListener - apiClient - serviceId - durationMillis - listener - apiClient - apiClient - apiClient - serviceId - statusCode - content - content - theType - content - nameSpace - theType - content - nameSpace - theType - devices - objectValue - output - flags - oValue - dest - flags - filter - nameSpace - theType - message - client - intent - messageListener - client - message - client - message - options - client - message - strategy - client - statusCallback - client - pendingIntent - client - pendingIntent - options - client - listener - client - listener - strategy - client - listener - strategy - filter - client - listener - options - client - message - client - statusCallback - client - pendingIntent - client - listener - statusCode - callback - strategy - permissionGranted - other - output - flags - discoveryMode - distanceType - ttlSeconds - callback - filter - strategy - handle - ids - urls - oValue - output - flags - output - flags - oValue - output - flags - oValue - oValue - realClientPackageName - zeroPartyIdentifier - realClientPackageName - zeroPartyIdentifier - useRealClientApiKey - realClientPackageName - zeroPartyIdentifier - useRealClientApiKey - callingContext - other - dest - flags - dest - flags - clientAppContext - clientLifecycleEvent - dest - flags - nameSpace - theType - oValue - dest - flags - oValue - output - flags - dest - flags - dest - flags - messageListener - strategy - callbackAsBinder - filter - pendingIntent - messageListenerKey - hint - isIgnoreNearbyPermission - subscribeCallbackAsBinder - clientAppContext - dest - flags - dest - flags - dest - flags - code - data - reply - flags - code - data - reply - flags - code - data - reply - flags - code - data - reply - flags - permissionGranted - code - data - reply - flags - code - data - reply - flags - client - intent - messageListener - client - message - client - message - options - client - message - strategy - client - statusCallback - client - pendingIntent - client - pendingIntent - options - client - listener - client - listener - strategy - client - listener - strategy - filter - client - listener - options - client - message - client - statusCallback - client - pendingIntent - client - listener - oValue - dest - flags - oValue - dest - flags - oValue - dest - flags - oValue - dest - flags - dest - flags - dest - flags - dest - flags - dest - flags - code - data - reply - flags - code - data - reply - flags - code - data - reply - flags - code - data - reply - flags diff --git a/nearby/source/Transforms/Metadata.xml b/nearby/source/Transforms/Metadata.xml index 590e1724f..24ccf2436 100644 --- a/nearby/source/Transforms/Metadata.xml +++ b/nearby/source/Transforms/Metadata.xml @@ -3,6 +3,7 @@ Android.Gms.Nearby.Bootstrap Android.Gms.Nearby.Bootstrap.Request Android.Gms.Nearby.Connection + Android.Gms.Nearby.Internal.Connection Android.Gms.Nearby.Messages Android.Gms.Nearby.Messages.Devices Android.Gms.Nearby.Sharing From 6f917d2c7c45aea5bb47499ed39bf2afaa735fdc Mon Sep 17 00:00:00 2001 From: Redth Date: Wed, 1 Jun 2016 13:49:47 -0400 Subject: [PATCH 026/178] Updated panorama binding and sample --- panorama/component/component.template.yaml | 12 +++++++++--- panorama/samples/PanoramaSample.sln | 12 ++++++++++++ .../samples/PanoramaSample/PanoramaSample.csproj | 15 +++++++++++---- .../source/Transforms/Metadata.generated.xml | 16 ---------------- 4 files changed, 32 insertions(+), 23 deletions(-) diff --git a/panorama/component/component.template.yaml b/panorama/component/component.template.yaml index b4efb9fe4..35b324414 100644 --- a/panorama/component/component.template.yaml +++ b/panorama/component/component.template.yaml @@ -12,6 +12,8 @@ libraries: android: - ../../output/Xamarin.GooglePlayServices.Base.dll - ../../output/Xamarin.GooglePlayServices.Basement.dll + - ../../output/Xamarin.GooglePlayServices.Tasks.dll + - ../../output/Xamarin.Firebase.Common.dll - ../../output/Xamarin.GooglePlayServices.Panorama.dll is_shell: true packages: @@ -21,14 +23,18 @@ samples: - name: "Panorama Sample" path: ../../panorama/samples/PanoramaSample.sln removeProjects: - - Xamarin.GooglePlayServices.Base - - Xamarin.GooglePlayServices.Basement - - Xamarin.GooglePlayServices.Panorama + - Base + - Basement + - Tasks + - Firebase-Common + - Panorama installNuGets: - project: PanoramaSample packages: - Xamarin.GooglePlayServices.Base - Xamarin.GooglePlayServices.Basement + - Xamarin.GooglePlayServices.Tasks + - Xamarin.Firebase.Common - Xamarin.GooglePlayServices.Panorama local-nuget-repo: ../../output/ no_build: true diff --git a/panorama/samples/PanoramaSample.sln b/panorama/samples/PanoramaSample.sln index 8a880997d..ffb61e822 100644 --- a/panorama/samples/PanoramaSample.sln +++ b/panorama/samples/PanoramaSample.sln @@ -11,6 +11,10 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Panorama", "..\source\Panor EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Basement", "..\..\basement\source\Basement.csproj", "{6A38FACF-F0C5-4A49-8A8A-7CE6634207CE}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tasks", "..\..\tasks\source\Tasks.csproj", "{53F87D88-8871-41A2-9F81-B79AB02FEC24}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Firebase-Common", "..\..\firebase-common\source\Firebase-Common.csproj", "{865652D3-8D1A-4779-92FC-4C54719286B7}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -37,5 +41,13 @@ Global {AEBA328F-E4A7-4E7E-AAD3-2808A5118FCE}.Debug|Any CPU.Build.0 = Debug|Any CPU {AEBA328F-E4A7-4E7E-AAD3-2808A5118FCE}.Release|Any CPU.ActiveCfg = Release|Any CPU {AEBA328F-E4A7-4E7E-AAD3-2808A5118FCE}.Release|Any CPU.Build.0 = Release|Any CPU + {53F87D88-8871-41A2-9F81-B79AB02FEC24}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {53F87D88-8871-41A2-9F81-B79AB02FEC24}.Debug|Any CPU.Build.0 = Debug|Any CPU + {53F87D88-8871-41A2-9F81-B79AB02FEC24}.Release|Any CPU.ActiveCfg = Release|Any CPU + {53F87D88-8871-41A2-9F81-B79AB02FEC24}.Release|Any CPU.Build.0 = Release|Any CPU + {865652D3-8D1A-4779-92FC-4C54719286B7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {865652D3-8D1A-4779-92FC-4C54719286B7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {865652D3-8D1A-4779-92FC-4C54719286B7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {865652D3-8D1A-4779-92FC-4C54719286B7}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection EndGlobal diff --git a/panorama/samples/PanoramaSample/PanoramaSample.csproj b/panorama/samples/PanoramaSample/PanoramaSample.csproj index d5a0f140a..fb0b1c9a5 100644 --- a/panorama/samples/PanoramaSample/PanoramaSample.csproj +++ b/panorama/samples/PanoramaSample/PanoramaSample.csproj @@ -15,7 +15,8 @@ True PanoramaSample Properties\AndroidManifest.xml - v5.1 + v6.0 + armeabi;armeabi-v7a;x86;arm64-v8a;x86_64 true @@ -27,7 +28,6 @@ 4 None false - armeabi;armeabi-v7a;x86;arm64-v8a;x86_64 full @@ -37,7 +37,6 @@ 4 false false - armeabi;armeabi-v7a;x86;arm64-v8a;x86_64 @@ -69,7 +68,7 @@ - + {3F6BAE25-ADEB-468C-8384-AD655623C341} @@ -83,5 +82,13 @@ {6A38FACF-F0C5-4A49-8A8A-7CE6634207CE} Basement + + {865652D3-8D1A-4779-92FC-4C54719286B7} + Firebase-Common + + + {53F87D88-8871-41A2-9F81-B79AB02FEC24} + Tasks + \ No newline at end of file diff --git a/panorama/source/Transforms/Metadata.generated.xml b/panorama/source/Transforms/Metadata.generated.xml index 950d1a56e..26c2f6238 100644 --- a/panorama/source/Transforms/Metadata.generated.xml +++ b/panorama/source/Transforms/Metadata.generated.xml @@ -1,18 +1,2 @@ - code - data - reply - flags - code - data - reply - flags - client - uri - client - uri - client - uri - client - uri From 3d9fa557de8ba2cc3b8d78ac6d8741137fe9b146 Mon Sep 17 00:00:00 2001 From: Redth Date: Wed, 1 Jun 2016 13:50:35 -0400 Subject: [PATCH 027/178] Updated plus binding and sample --- plus/component/component.template.yaml | 12 +- plus/samples/PlusSample.sln | 18 + .../PlusSample/ListConnectedPeopleActivity.cs | 6 +- .../samples/PlusSample/ListMomentsActivity.cs | 454 +++++++++--------- .../PlusSample/ListVisiblePeopleActivity.cs | 4 +- plus/samples/PlusSample/MomentActivity.cs | 426 ++++++++-------- plus/samples/PlusSample/MomentUtil.cs | 188 ++++---- plus/samples/PlusSample/PlusSample.csproj | 19 +- plus/samples/PlusSample/PlusSampleActivity.cs | 4 +- plus/samples/PlusSample/SignInActivity.cs | 4 +- plus/source/Additions/DataBufferAdditions.cs | 28 +- .../Additions/IPendingResultExtensions.cs | 38 +- plus/source/Plus.csproj | 4 + plus/source/Transforms/Metadata.generated.xml | 292 ----------- 14 files changed, 622 insertions(+), 875 deletions(-) diff --git a/plus/component/component.template.yaml b/plus/component/component.template.yaml index 419a76125..45dadb820 100644 --- a/plus/component/component.template.yaml +++ b/plus/component/component.template.yaml @@ -12,6 +12,8 @@ libraries: android: - ../../output/Xamarin.GooglePlayServices.Base.dll - ../../output/Xamarin.GooglePlayServices.Basement.dll + - ../../output/Xamarin.GooglePlayServices.Tasks.dll + - ../../output/Xamarin.Firebase.Common.dll - ../../output/Xamarin.GooglePlayServices.Plus.dll is_shell: true packages: @@ -21,14 +23,18 @@ samples: - name: "Plus Sample" path: ../../plus/samples/PlusSample.sln removeProjects: - - Xamarin.GooglePlayServices.Base - - Xamarin.GooglePlayServices.Basement - - Xamarin.GooglePlayServices.Plus + - Base + - Basement + - Tasks + - Firebase-Common + - Plus installNuGets: - project: PlusSample packages: - Xamarin.GooglePlayServices.Base - Xamarin.GooglePlayServices.Basement + - Xamarin.GooglePlayServices.Tasks + - Xamarin.Firebase.Common - Xamarin.GooglePlayServices.Plus local-nuget-repo: ../../output/ no_build: true diff --git a/plus/samples/PlusSample.sln b/plus/samples/PlusSample.sln index 453a61fa3..8dc48ef47 100644 --- a/plus/samples/PlusSample.sln +++ b/plus/samples/PlusSample.sln @@ -11,6 +11,12 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Plus", "..\source\Plus.cspr EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Basement", "..\..\basement\source\Basement.csproj", "{6A38FACF-F0C5-4A49-8A8A-7CE6634207CE}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Firebase-Common", "..\..\firebase-common\source\Firebase-Common.csproj", "{865652D3-8D1A-4779-92FC-4C54719286B7}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Auth.Base", "..\..\auth-base\source\Auth.Base.csproj", "{B04C50F7-B0CC-4170-8820-9D584E1C0ED3}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tasks", "..\..\tasks\source\Tasks.csproj", "{53F87D88-8871-41A2-9F81-B79AB02FEC24}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -37,5 +43,17 @@ Global {CC84F8DA-BA44-4388-B7C6-B10804BDFB96}.Debug|Any CPU.Build.0 = Debug|Any CPU {CC84F8DA-BA44-4388-B7C6-B10804BDFB96}.Release|Any CPU.ActiveCfg = Release|Any CPU {CC84F8DA-BA44-4388-B7C6-B10804BDFB96}.Release|Any CPU.Build.0 = Release|Any CPU + {865652D3-8D1A-4779-92FC-4C54719286B7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {865652D3-8D1A-4779-92FC-4C54719286B7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {865652D3-8D1A-4779-92FC-4C54719286B7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {865652D3-8D1A-4779-92FC-4C54719286B7}.Release|Any CPU.Build.0 = Release|Any CPU + {B04C50F7-B0CC-4170-8820-9D584E1C0ED3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B04C50F7-B0CC-4170-8820-9D584E1C0ED3}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B04C50F7-B0CC-4170-8820-9D584E1C0ED3}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B04C50F7-B0CC-4170-8820-9D584E1C0ED3}.Release|Any CPU.Build.0 = Release|Any CPU + {53F87D88-8871-41A2-9F81-B79AB02FEC24}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {53F87D88-8871-41A2-9F81-B79AB02FEC24}.Debug|Any CPU.Build.0 = Debug|Any CPU + {53F87D88-8871-41A2-9F81-B79AB02FEC24}.Release|Any CPU.ActiveCfg = Release|Any CPU + {53F87D88-8871-41A2-9F81-B79AB02FEC24}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection EndGlobal diff --git a/plus/samples/PlusSample/ListConnectedPeopleActivity.cs b/plus/samples/PlusSample/ListConnectedPeopleActivity.cs index 5a4ed9625..cc9a49622 100644 --- a/plus/samples/PlusSample/ListConnectedPeopleActivity.cs +++ b/plus/samples/PlusSample/ListConnectedPeopleActivity.cs @@ -38,13 +38,13 @@ protected override void OnCreate (Bundle savedInstanceState) base.OnCreate (savedInstanceState); SetContentView (Resource.Layout.person_list_activity); - var options = new PlusClass.PlusOptions.Builder () - .AddActivityTypes (MomentUtil.ACTIONS).Build(); + //var options = new PlusClass.PlusOptions.Builder () + // .AddActivityTypes (MomentUtil.ACTIONS).Build(); mGoogleApiClient = new GoogleApiClient.Builder (this) .AddConnectionCallbacks (this) .AddOnConnectionFailedListener (this) - .AddApi (PlusClass.API, options) + .AddApi (PlusClass.API)//, options) .AddScope (PlusClass.ScopePlusLogin) .Build(); diff --git a/plus/samples/PlusSample/ListMomentsActivity.cs b/plus/samples/PlusSample/ListMomentsActivity.cs index 37c572cdd..23803a23e 100644 --- a/plus/samples/PlusSample/ListMomentsActivity.cs +++ b/plus/samples/PlusSample/ListMomentsActivity.cs @@ -1,265 +1,265 @@ -using System; -using Android.App; -using Android.Widget; -using System.Collections.Generic; -using Android.OS; -using Android.Views; -using Android.Content; -using Android.Gms.Plus; -using Android.Gms.Common.Apis; -using Android.Gms.Common; -using Java.Interop; -using Android.Gms.Plus.Model.People; -using Android.Gms.Plus.Model.Moments; +//using System; +//using Android.App; +//using Android.Widget; +//using System.Collections.Generic; +//using Android.OS; +//using Android.Views; +//using Android.Content; +//using Android.Gms.Plus; +//using Android.Gms.Common.Apis; +//using Android.Gms.Common; +//using Java.Interop; +//using Android.Gms.Plus.Model.People; +//using Android.Gms.Plus.Model.Moments; -namespace PlusSample -{ - [Activity (Label = "Moments")] - public class ListMomentsActivity : Activity, - GoogleApiClient.IConnectionCallbacks, - GoogleApiClient.IOnConnectionFailedListener, - IDialogInterfaceOnCancelListener - { - const string STATE_RESOLVING_ERROR = "resolving_error"; +//namespace PlusSample +//{ +// [Activity (Label = "Moments")] +// public class ListMomentsActivity : Activity, +// GoogleApiClient.IConnectionCallbacks, +// GoogleApiClient.IOnConnectionFailedListener, +// IDialogInterfaceOnCancelListener +// { +// const string STATE_RESOLVING_ERROR = "resolving_error"; - const int DIALOG_GET_GOOGLE_PLAY_SERVICES = 1; - const int REQUEST_CODE_SIGN_IN = 1; - const int REQUEST_CODE_GET_GOOGLE_PLAY_SERVICES = 2; +// const int DIALOG_GET_GOOGLE_PLAY_SERVICES = 1; +// const int REQUEST_CODE_SIGN_IN = 1; +// const int REQUEST_CODE_GET_GOOGLE_PLAY_SERVICES = 2; - ListView mMomentListView; - MomentListAdapter mMomentListAdapter; - List mListItems; - bool mResolvingError; +// ListView mMomentListView; +// MomentListAdapter mMomentListAdapter; +// List mListItems; +// bool mResolvingError; - GoogleApiClient mGoogleApiClient; +// GoogleApiClient mGoogleApiClient; - protected override void OnCreate (Bundle savedInstanceState) - { - base.OnCreate (savedInstanceState); - SetContentView (Resource.Layout.list_moments_activity); +// protected override void OnCreate (Bundle savedInstanceState) +// { +// base.OnCreate (savedInstanceState); +// SetContentView (Resource.Layout.list_moments_activity); - var options = new PlusClass.PlusOptions.Builder() - .AddActivityTypes (MomentUtil.ACTIONS).Build (); +// var options = new PlusClass.PlusOptions.Builder() +// .AddActivityTypes (MomentUtil.ACTIONS).Build (); - mGoogleApiClient = new GoogleApiClient.Builder(this) - .AddConnectionCallbacks (this) - .AddOnConnectionFailedListener (this) - .AddApi (PlusClass.API, options) - .AddScope (PlusClass.ScopePlusLogin) - .Build(); +// mGoogleApiClient = new GoogleApiClient.Builder(this) +// .AddConnectionCallbacks (this) +// .AddOnConnectionFailedListener (this) +// .AddApi (PlusClass.API, options) +// .AddScope (PlusClass.ScopePlusLogin) +// .Build(); - mListItems = new List(); - mMomentListAdapter = new MomentListAdapter (this, Android.Resource.Layout.SimpleListItem1, mListItems); - mMomentListView = FindViewById (Resource.Id.moment_list); - mMomentListView.ItemClick += (sender, e) => { - var moment = mMomentListAdapter.GetItem (e.Position); - if (moment != null) { - if (mGoogleApiClient.IsConnected) { - PlusClass.MomentsApi.Remove (mGoogleApiClient, moment.Id); - Toast.MakeText (this, GetString(Resource.String.plus_remove_moment_status), - ToastLength.Short).Show (); - } else { - Toast.MakeText (this, GetString(Resource.String.greeting_status_sign_in_required), - ToastLength.Short).Show (); - } - } - }; +// mListItems = new List(); +// mMomentListAdapter = new MomentListAdapter (this, Android.Resource.Layout.SimpleListItem1, mListItems); +// mMomentListView = FindViewById (Resource.Id.moment_list); +// mMomentListView.ItemClick += (sender, e) => { +// var moment = mMomentListAdapter.GetItem (e.Position); +// if (moment != null) { +// if (mGoogleApiClient.IsConnected) { +// PlusClass.MomentsApi.Remove (mGoogleApiClient, moment.Id); +// Toast.MakeText (this, GetString(Resource.String.plus_remove_moment_status), +// ToastLength.Short).Show (); +// } else { +// Toast.MakeText (this, GetString(Resource.String.greeting_status_sign_in_required), +// ToastLength.Short).Show (); +// } +// } +// }; - mResolvingError = savedInstanceState != null - && savedInstanceState.GetBoolean (STATE_RESOLVING_ERROR, false); +// mResolvingError = savedInstanceState != null +// && savedInstanceState.GetBoolean (STATE_RESOLVING_ERROR, false); - int available = GooglePlayServicesUtil.IsGooglePlayServicesAvailable (this); - if (available != CommonStatusCodes.Success) { - ShowDialog (DIALOG_GET_GOOGLE_PLAY_SERVICES); - } +// int available = GooglePlayServicesUtil.IsGooglePlayServicesAvailable (this); +// if (available != CommonStatusCodes.Success) { +// ShowDialog (DIALOG_GET_GOOGLE_PLAY_SERVICES); +// } - if (Build.VERSION.SdkInt >= BuildVersionCodes.Honeycomb) { - this.ActionBar.SetDisplayHomeAsUpEnabled (true); - } - } +// if (Build.VERSION.SdkInt >= BuildVersionCodes.Honeycomb) { +// this.ActionBar.SetDisplayHomeAsUpEnabled (true); +// } +// } - protected override Dialog OnCreateDialog (int id) - { - if (id != DIALOG_GET_GOOGLE_PLAY_SERVICES) { - return base.OnCreateDialog(id); - } +// protected override Dialog OnCreateDialog (int id) +// { +// if (id != DIALOG_GET_GOOGLE_PLAY_SERVICES) { +// return base.OnCreateDialog(id); +// } - int available = GooglePlayServicesUtil.IsGooglePlayServicesAvailable(this); - if (available == CommonStatusCodes.Success) - return null; +// int available = GooglePlayServicesUtil.IsGooglePlayServicesAvailable(this); +// if (available == CommonStatusCodes.Success) +// return null; - if (GooglePlayServicesUtil.IsUserRecoverableError (available)) { - return GooglePlayServicesUtil.GetErrorDialog ( - available, this, REQUEST_CODE_GET_GOOGLE_PLAY_SERVICES, this); - } - return new AlertDialog.Builder(this) - .SetMessage(Resource.String.plus_generic_error) - .SetCancelable(true) - .SetOnCancelListener(this) - .Create (); - } +// if (GooglePlayServicesUtil.IsUserRecoverableError (available)) { +// return GooglePlayServicesUtil.GetErrorDialog ( +// available, this, REQUEST_CODE_GET_GOOGLE_PLAY_SERVICES, this); +// } +// return new AlertDialog.Builder(this) +// .SetMessage(Resource.String.plus_generic_error) +// .SetCancelable(true) +// .SetOnCancelListener(this) +// .Create (); +// } - protected override void OnStart () - { - base.OnStart(); - mGoogleApiClient.Connect (); - } +// protected override void OnStart () +// { +// base.OnStart(); +// mGoogleApiClient.Connect (); +// } - protected override void OnSaveInstanceState (Bundle outState) - { - base.OnSaveInstanceState(outState); - outState.PutBoolean (STATE_RESOLVING_ERROR, mResolvingError); - } +// protected override void OnSaveInstanceState (Bundle outState) +// { +// base.OnSaveInstanceState(outState); +// outState.PutBoolean (STATE_RESOLVING_ERROR, mResolvingError); +// } - protected override void OnStop () - { - mGoogleApiClient.Disconnect (); - base.OnStop(); - } +// protected override void OnStop () +// { +// mGoogleApiClient.Disconnect (); +// base.OnStop(); +// } - protected override void OnActivityResult (int requestCode, Result resultCode, Intent data) - { - switch (requestCode) { - case REQUEST_CODE_SIGN_IN: - mResolvingError = false; - handleResult(resultCode); - break; - case REQUEST_CODE_GET_GOOGLE_PLAY_SERVICES: - handleResult(resultCode); - break; - } - } +// protected override void OnActivityResult (int requestCode, Result resultCode, Intent data) +// { +// switch (requestCode) { +// case REQUEST_CODE_SIGN_IN: +// mResolvingError = false; +// handleResult(resultCode); +// break; +// case REQUEST_CODE_GET_GOOGLE_PLAY_SERVICES: +// handleResult(resultCode); +// break; +// } +// } - void handleResult(Result resultCode) - { - if (resultCode == Result.Ok) { - // onActivityResult is called after onStart (but onStart is not - // guaranteed to be called while signing in), so we should make - // sure we're not already connecting before we call connect again. - if (!mGoogleApiClient.IsConnecting && !mGoogleApiClient.IsConnected) { - mGoogleApiClient.Connect (); - } - } else { - Console.WriteLine ("Unable to sign the user in."); - Finish (); - } - } +// void handleResult(Result resultCode) +// { +// if (resultCode == Result.Ok) { +// // onActivityResult is called after onStart (but onStart is not +// // guaranteed to be called while signing in), so we should make +// // sure we're not already connecting before we call connect again. +// if (!mGoogleApiClient.IsConnecting && !mGoogleApiClient.IsConnected) { +// mGoogleApiClient.Connect (); +// } +// } else { +// Console.WriteLine ("Unable to sign the user in."); +// Finish (); +// } +// } - public void OnConnected (Bundle connectionHint) - { - PlusClass.MomentsApi.Load (mGoogleApiClient).SetResultCallback (result => { - switch (result.Status.StatusCode) { - case CommonStatusCodes.Success: - var momentBuffer = result.MomentBuffer; +// public void OnConnected (Bundle connectionHint) +// { +// PlusClass.MomentsApi.Load (mGoogleApiClient).SetResultCallback (result => { +// switch (result.Status.StatusCode) { +// case CommonStatusCodes.Success: +// var momentBuffer = result.MomentBuffer; - mListItems.Clear (); - try { - int count = momentBuffer.Count; - for (int i = 0; i < count; i++) { - var moment = momentBuffer.Get (i).JavaCast (); - mListItems.Add (moment); - } - } finally { - momentBuffer.Close (); - } +// mListItems.Clear (); +// try { +// int count = momentBuffer.Count; +// for (int i = 0; i < count; i++) { +// var moment = momentBuffer.Get (i).JavaCast (); +// mListItems.Add (moment); +// } +// } finally { +// momentBuffer.Close (); +// } - mMomentListAdapter.NotifyDataSetChanged (); - break; +// mMomentListAdapter.NotifyDataSetChanged (); +// break; - case CommonStatusCodes.SignInRequired: - mGoogleApiClient.Disconnect(); - mGoogleApiClient.Connect(); - break; +// case CommonStatusCodes.SignInRequired: +// mGoogleApiClient.Disconnect(); +// mGoogleApiClient.Connect(); +// break; - default: - Console.WriteLine ("Error when listing moments: " + result.Status); - break; - } - }); - mMomentListView.Adapter = mMomentListAdapter; - } +// default: +// Console.WriteLine ("Error when listing moments: " + result.Status); +// break; +// } +// }); +// mMomentListView.Adapter = mMomentListAdapter; +// } - public void OnConnectionSuspended(int cause) - { - mMomentListView.Adapter = null; - mGoogleApiClient.Connect(); - } +// public void OnConnectionSuspended(int cause) +// { +// mMomentListView.Adapter = null; +// mGoogleApiClient.Connect(); +// } - public void OnConnectionFailed (ConnectionResult result) - { - mMomentListView.Adapter = null; - if (mResolvingError) { - return; - } +// public void OnConnectionFailed (ConnectionResult result) +// { +// mMomentListView.Adapter = null; +// if (mResolvingError) { +// return; +// } - try { - result.StartResolutionForResult (this, REQUEST_CODE_SIGN_IN); - mResolvingError = true; - } catch (IntentSender.SendIntentException e) { - // Try connecting again. - mGoogleApiClient.Connect (); - } - } +// try { +// result.StartResolutionForResult (this, REQUEST_CODE_SIGN_IN); +// mResolvingError = true; +// } catch (IntentSender.SendIntentException e) { +// // Try connecting again. +// mGoogleApiClient.Connect (); +// } +// } - public void OnCancel (IDialogInterface dialog) - { - Console.WriteLine ("Unable to sign the user in."); - Finish(); - } +// public void OnCancel (IDialogInterface dialog) +// { +// Console.WriteLine ("Unable to sign the user in."); +// Finish(); +// } - public override bool OnOptionsItemSelected (IMenuItem item) - { - switch (item.ItemId) { - case Android.Resource.Id.Home: - Intent intent = new Intent(this, typeof (PlusSampleActivity)); - intent.AddFlags (ActivityFlags.ClearTop); - StartActivity(intent); - Finish (); - return true; +// public override bool OnOptionsItemSelected (IMenuItem item) +// { +// switch (item.ItemId) { +// case Android.Resource.Id.Home: +// Intent intent = new Intent(this, typeof (PlusSampleActivity)); +// intent.AddFlags (ActivityFlags.ClearTop); +// StartActivity(intent); +// Finish (); +// return true; - default: - return base.OnOptionsItemSelected (item); - } - } +// default: +// return base.OnOptionsItemSelected (item); +// } +// } - /** - * Array adapter that maintains a Moment list. - */ - private class MomentListAdapter : ArrayAdapter - { - LayoutInflater mLayoutInflater; - List mItems; +// /** +// * Array adapter that maintains a Moment list. +// */ +// private class MomentListAdapter : ArrayAdapter +// { +// LayoutInflater mLayoutInflater; +// List mItems; - public MomentListAdapter(Context context, int textViewResourceId, List objects) - : base (context, textViewResourceId, objects) - { - mLayoutInflater = LayoutInflater.From (context); - mItems = objects; - } +// public MomentListAdapter(Context context, int textViewResourceId, List objects) +// : base (context, textViewResourceId, objects) +// { +// mLayoutInflater = LayoutInflater.From (context); +// mItems = objects; +// } - public override View GetView (int position, View convertView, ViewGroup parent) - { - var resultView = convertView; - if (resultView == null) { - resultView = mLayoutInflater.Inflate (Resource.Layout.moment_row, null); - } +// public override View GetView (int position, View convertView, ViewGroup parent) +// { +// var resultView = convertView; +// if (resultView == null) { +// resultView = mLayoutInflater.Inflate (Resource.Layout.moment_row, null); +// } - var moment = mItems[position]; - if (moment != null) { - var typeView = resultView.FindViewById (Resource.Id.moment_type); - var titleView = resultView.FindViewById (Resource.Id.moment_title); +// var moment = mItems[position]; +// if (moment != null) { +// var typeView = resultView.FindViewById (Resource.Id.moment_type); +// var titleView = resultView.FindViewById (Resource.Id.moment_title); - var type = Android.Net.Uri.Parse (moment.Type).Path.Substring (1); - typeView.Text = type; +// var type = Android.Net.Uri.Parse (moment.Type).Path.Substring (1); +// typeView.Text = type; - if (moment.Target != null) { - titleView.Text = moment.Target.Name; - } - } +// if (moment.Target != null) { +// titleView.Text = moment.Target.Name; +// } +// } - return resultView; - } - } - } -} +// return resultView; +// } +// } +// } +//} diff --git a/plus/samples/PlusSample/ListVisiblePeopleActivity.cs b/plus/samples/PlusSample/ListVisiblePeopleActivity.cs index 89f090628..896ef53bb 100644 --- a/plus/samples/PlusSample/ListVisiblePeopleActivity.cs +++ b/plus/samples/PlusSample/ListVisiblePeopleActivity.cs @@ -40,11 +40,11 @@ protected override void OnCreate (Bundle savedInstanceState) base.OnCreate (savedInstanceState); SetContentView (Resource.Layout.person_list_activity); - var options = new PlusClass.PlusOptions.Builder ().AddActivityTypes (MomentUtil.ACTIONS).Build (); + //var options = new PlusClass.PlusOptions.Builder ().AddActivityTypes (MomentUtil.ACTIONS).Build (); mGoogleApiClient = new GoogleApiClient.Builder (this) .AddConnectionCallbacks (this) .AddOnConnectionFailedListener (this) - .AddApi (PlusClass.API, options) + .AddApi (PlusClass.API) // options) .AddScope (PlusClass.ScopePlusLogin) .Build (); diff --git a/plus/samples/PlusSample/MomentActivity.cs b/plus/samples/PlusSample/MomentActivity.cs index f9258ecf0..7688378ed 100644 --- a/plus/samples/PlusSample/MomentActivity.cs +++ b/plus/samples/PlusSample/MomentActivity.cs @@ -1,225 +1,225 @@  -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; - -using Android.App; -using Android.Content; -using Android.OS; -using Android.Runtime; -using Android.Views; -using Android.Widget; -using Android.Gms.Plus.Model.Moments; -using Android.Gms.Plus; -using Android.Gms.Common; -using Android.Gms.Common.Apis; - -namespace PlusSample -{ - [Activity (Label = "Moment")] - public class MomentActivity : Activity, GoogleApiClient.IConnectionCallbacks, GoogleApiClient.IOnConnectionFailedListener, IDialogInterfaceOnCancelListener - { - const string TAG = "MomentActivity"; - - const string STATE_RESOLVING_ERROR = "resolvingError"; - - const int DIALOG_GET_GOOGLE_PLAY_SERVICES = 1; - - const int REQUEST_CODE_SIGN_IN = 1; - const int REQUEST_CODE_GET_GOOGLE_PLAY_SERVICES = 2; - - GoogleApiClient mGoogleApiClient; - ArrayAdapter mListAdapter; - ListView mMomentListView; - bool mResolvingError; - - protected override void OnCreate (Bundle savedInstanceState) - { - base.OnCreate (savedInstanceState); - - SetContentView (Resource.Layout.multi_moment_activity); - - var options = new PlusClass.PlusOptions.Builder().AddActivityTypes (MomentUtil.ACTIONS).Build (); - mGoogleApiClient = new GoogleApiClient.Builder (this) - .AddConnectionCallbacks(this) - .AddOnConnectionFailedListener(this) - .AddApi (PlusClass.API, options) - .AddScope (PlusClass.ScopePlusLogin) - .Build (); - - mListAdapter = new ArrayAdapter( - this, Android.Resource.Layout.SimpleListItem1, MomentUtil.MOMENT_LIST); - mMomentListView = FindViewById(Resource.Id.moment_list); - mMomentListView.ItemClick += (sender, e) => { - if (mGoogleApiClient.IsConnected) { - var textView = e.View as TextView; - var momentType = textView.Text; - var targetUrl = MomentUtil.MOMENT_TYPES[momentType]; - - var target = new ItemScopeBuilder ().SetUrl(targetUrl).Build (); - - var momentBuilder = new MomentBuilder (); - momentBuilder.SetType ("http://schemas.google.com/" + momentType); - momentBuilder.SetTarget (target); - - var result = MomentUtil.GetResultFor (momentType); - if (result != null) - momentBuilder.SetResult (result); - - PlusClass.MomentsApi.Write (mGoogleApiClient, momentBuilder.Build ()).SetResultCallback (status => - { - switch (status.StatusCode) { - case CommonStatusCodes.Success: - Toast.MakeText (this, GetString (Resource.String.plus_write_moment_status_success), ToastLength.Short).Show (); - break; - - case CommonStatusCodes.SuccessCache: - Toast.MakeText(this, GetString (Resource.String.plus_write_moment_status_cached), ToastLength.Short).Show (); - break; - - case CommonStatusCodes.SignInRequired: - Toast.MakeText (this, GetString (Resource.String.plus_write_moment_status_auth_error), ToastLength.Short).Show(); - mGoogleApiClient.Disconnect(); - mGoogleApiClient.Connect(); - break; - - default: - Toast.MakeText (this, GetString (Resource.String.plus_write_moment_status_error), - ToastLength.Short).Show(); - Console.WriteLine ("Error when writing moments: " + status); - break; - } - }); - } - }; - - mResolvingError = savedInstanceState != null - && savedInstanceState.GetBoolean (STATE_RESOLVING_ERROR, false); - - var available = GooglePlayServicesUtil.IsGooglePlayServicesAvailable (this); - if (available != CommonStatusCodes.Success) { - ShowDialog (DIALOG_GET_GOOGLE_PLAY_SERVICES); - } - - if (Build.VERSION.SdkInt >= BuildVersionCodes.Honeycomb) { - ActionBar.SetDisplayHomeAsUpEnabled (true); - } - } +//using System; +//using System.Collections.Generic; +//using System.Linq; +//using System.Text; + +//using Android.App; +//using Android.Content; +//using Android.OS; +//using Android.Runtime; +//using Android.Views; +//using Android.Widget; +//using Android.Gms.Plus.Model.Moments; +//using Android.Gms.Plus; +//using Android.Gms.Common; +//using Android.Gms.Common.Apis; + +//namespace PlusSample +//{ +// [Activity (Label = "Moment")] +// public class MomentActivity : Activity, GoogleApiClient.IConnectionCallbacks, GoogleApiClient.IOnConnectionFailedListener, IDialogInterfaceOnCancelListener +// { +// const string TAG = "MomentActivity"; + +// const string STATE_RESOLVING_ERROR = "resolvingError"; + +// const int DIALOG_GET_GOOGLE_PLAY_SERVICES = 1; + +// const int REQUEST_CODE_SIGN_IN = 1; +// const int REQUEST_CODE_GET_GOOGLE_PLAY_SERVICES = 2; + +// GoogleApiClient mGoogleApiClient; +// ArrayAdapter mListAdapter; +// ListView mMomentListView; +// bool mResolvingError; + +// protected override void OnCreate (Bundle savedInstanceState) +// { +// base.OnCreate (savedInstanceState); + +// SetContentView (Resource.Layout.multi_moment_activity); + +// var options = new PlusClass.PlusOptions.Builder().AddActivityTypes (MomentUtil.ACTIONS).Build (); +// mGoogleApiClient = new GoogleApiClient.Builder (this) +// .AddConnectionCallbacks(this) +// .AddOnConnectionFailedListener(this) +// .AddApi (PlusClass.API, options) +// .AddScope (PlusClass.ScopePlusLogin) +// .Build (); + +// mListAdapter = new ArrayAdapter( +// this, Android.Resource.Layout.SimpleListItem1, MomentUtil.MOMENT_LIST); +// mMomentListView = FindViewById(Resource.Id.moment_list); +// mMomentListView.ItemClick += (sender, e) => { +// if (mGoogleApiClient.IsConnected) { +// var textView = e.View as TextView; +// var momentType = textView.Text; +// var targetUrl = MomentUtil.MOMENT_TYPES[momentType]; + +// var target = new ItemScopeBuilder ().SetUrl(targetUrl).Build (); + +// var momentBuilder = new MomentBuilder (); +// momentBuilder.SetType ("http://schemas.google.com/" + momentType); +// momentBuilder.SetTarget (target); + +// var result = MomentUtil.GetResultFor (momentType); +// if (result != null) +// momentBuilder.SetResult (result); + +// PlusClass.MomentsApi.Write (mGoogleApiClient, momentBuilder.Build ()).SetResultCallback (status => +// { +// switch (status.StatusCode) { +// case CommonStatusCodes.Success: +// Toast.MakeText (this, GetString (Resource.String.plus_write_moment_status_success), ToastLength.Short).Show (); +// break; + +// case CommonStatusCodes.SuccessCache: +// Toast.MakeText(this, GetString (Resource.String.plus_write_moment_status_cached), ToastLength.Short).Show (); +// break; + +// case CommonStatusCodes.SignInRequired: +// Toast.MakeText (this, GetString (Resource.String.plus_write_moment_status_auth_error), ToastLength.Short).Show(); +// mGoogleApiClient.Disconnect(); +// mGoogleApiClient.Connect(); +// break; + +// default: +// Toast.MakeText (this, GetString (Resource.String.plus_write_moment_status_error), +// ToastLength.Short).Show(); +// Console.WriteLine ("Error when writing moments: " + status); +// break; +// } +// }); +// } +// }; + +// mResolvingError = savedInstanceState != null +// && savedInstanceState.GetBoolean (STATE_RESOLVING_ERROR, false); + +// var available = GooglePlayServicesUtil.IsGooglePlayServicesAvailable (this); +// if (available != CommonStatusCodes.Success) { +// ShowDialog (DIALOG_GET_GOOGLE_PLAY_SERVICES); +// } + +// if (Build.VERSION.SdkInt >= BuildVersionCodes.Honeycomb) { +// ActionBar.SetDisplayHomeAsUpEnabled (true); +// } +// } - protected override Dialog OnCreateDialog (int id) - { - if (id != DIALOG_GET_GOOGLE_PLAY_SERVICES) { - return base.OnCreateDialog (id); - } - - int available = GooglePlayServicesUtil.IsGooglePlayServicesAvailable (this); - if (available == CommonStatusCodes.Success) { - return null; - } - if (GooglePlayServicesUtil.IsUserRecoverableError (available)) { - return GooglePlayServicesUtil.GetErrorDialog( - available, this, REQUEST_CODE_GET_GOOGLE_PLAY_SERVICES, this); - } - return new AlertDialog.Builder(this) - .SetMessage (Resource.String.plus_generic_error) - .SetCancelable (true) - .SetOnCancelListener(this) - .Create(); - } +// protected override Dialog OnCreateDialog (int id) +// { +// if (id != DIALOG_GET_GOOGLE_PLAY_SERVICES) { +// return base.OnCreateDialog (id); +// } + +// int available = GooglePlayServicesUtil.IsGooglePlayServicesAvailable (this); +// if (available == CommonStatusCodes.Success) { +// return null; +// } +// if (GooglePlayServicesUtil.IsUserRecoverableError (available)) { +// return GooglePlayServicesUtil.GetErrorDialog( +// available, this, REQUEST_CODE_GET_GOOGLE_PLAY_SERVICES, this); +// } +// return new AlertDialog.Builder(this) +// .SetMessage (Resource.String.plus_generic_error) +// .SetCancelable (true) +// .SetOnCancelListener(this) +// .Create(); +// } - protected override void OnStart() - { - base.OnStart (); - mGoogleApiClient.Connect (); - } +// protected override void OnStart() +// { +// base.OnStart (); +// mGoogleApiClient.Connect (); +// } - protected override void OnStop () - { - mGoogleApiClient.Disconnect(); - base.OnStop(); - } +// protected override void OnStop () +// { +// mGoogleApiClient.Disconnect(); +// base.OnStop(); +// } - protected override void OnActivityResult (int requestCode, Result resultCode, Intent data) - { - switch (requestCode) { - case REQUEST_CODE_SIGN_IN: - mResolvingError = false; - handleResult(resultCode); - break; - case REQUEST_CODE_GET_GOOGLE_PLAY_SERVICES: - handleResult(resultCode); - break; - } - } - - void handleResult(Result resultCode) - { - if (resultCode == Result.Ok) { - // onActivityResult is called after onStart (but onStart is not - // guaranteed to be called while signing in), so we should make - // sure we're not already connecting before we call connect again. - if (!mGoogleApiClient.IsConnecting && !mGoogleApiClient.IsConnected) { - mGoogleApiClient.Connect (); - } - } else { - Console.WriteLine ("Unable to sign the user in."); - Finish(); - } - } +// protected override void OnActivityResult (int requestCode, Result resultCode, Intent data) +// { +// switch (requestCode) { +// case REQUEST_CODE_SIGN_IN: +// mResolvingError = false; +// handleResult(resultCode); +// break; +// case REQUEST_CODE_GET_GOOGLE_PLAY_SERVICES: +// handleResult(resultCode); +// break; +// } +// } + +// void handleResult(Result resultCode) +// { +// if (resultCode == Result.Ok) { +// // onActivityResult is called after onStart (but onStart is not +// // guaranteed to be called while signing in), so we should make +// // sure we're not already connecting before we call connect again. +// if (!mGoogleApiClient.IsConnecting && !mGoogleApiClient.IsConnected) { +// mGoogleApiClient.Connect (); +// } +// } else { +// Console.WriteLine ("Unable to sign the user in."); +// Finish(); +// } +// } - protected override void OnSaveInstanceState (Bundle outState) - { - base.OnSaveInstanceState(outState); - outState.PutBoolean (STATE_RESOLVING_ERROR, mResolvingError); - } +// protected override void OnSaveInstanceState (Bundle outState) +// { +// base.OnSaveInstanceState(outState); +// outState.PutBoolean (STATE_RESOLVING_ERROR, mResolvingError); +// } - public void OnConnected(Bundle connectionHint) - { - mMomentListView.Adapter = mListAdapter; - } +// public void OnConnected(Bundle connectionHint) +// { +// mMomentListView.Adapter = mListAdapter; +// } - public void OnConnectionSuspended (int cause) - { - mMomentListView.Adapter = null; - } +// public void OnConnectionSuspended (int cause) +// { +// mMomentListView.Adapter = null; +// } - public void OnConnectionFailed (Android.Gms.Common.ConnectionResult result) - { - mMomentListView.Adapter = null; - if (mResolvingError) { - return; - } - try { - result.StartResolutionForResult (this, REQUEST_CODE_SIGN_IN); - mResolvingError = true; - } catch (IntentSender.SendIntentException e) { - // Reconnect to get another intent to start. - mGoogleApiClient.Connect (); - } - } - - public void OnCancel (IDialogInterface dialog) - { - Console.WriteLine ("Unable to sign the user in."); - Finish(); - } +// public void OnConnectionFailed (Android.Gms.Common.ConnectionResult result) +// { +// mMomentListView.Adapter = null; +// if (mResolvingError) { +// return; +// } +// try { +// result.StartResolutionForResult (this, REQUEST_CODE_SIGN_IN); +// mResolvingError = true; +// } catch (IntentSender.SendIntentException e) { +// // Reconnect to get another intent to start. +// mGoogleApiClient.Connect (); +// } +// } + +// public void OnCancel (IDialogInterface dialog) +// { +// Console.WriteLine ("Unable to sign the user in."); +// Finish(); +// } - public override bool OnOptionsItemSelected (IMenuItem item) - { - switch (item.ItemId) { - case Android.Resource.Id.Home: - var intent = new Intent(this, typeof (PlusSampleActivity)); - intent.AddFlags (ActivityFlags.ClearTop); - StartActivity(intent); - Finish(); - return true; - - default: - return base.OnOptionsItemSelected(item); - } - } - } -} +// public override bool OnOptionsItemSelected (IMenuItem item) +// { +// switch (item.ItemId) { +// case Android.Resource.Id.Home: +// var intent = new Intent(this, typeof (PlusSampleActivity)); +// intent.AddFlags (ActivityFlags.ClearTop); +// StartActivity(intent); +// Finish(); +// return true; + +// default: +// return base.OnOptionsItemSelected(item); +// } +// } +// } +//} diff --git a/plus/samples/PlusSample/MomentUtil.cs b/plus/samples/PlusSample/MomentUtil.cs index 90fbb2474..6dbc2f5ce 100644 --- a/plus/samples/PlusSample/MomentUtil.cs +++ b/plus/samples/PlusSample/MomentUtil.cs @@ -1,105 +1,105 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using Android.Gms.Plus.Model.Moments; +//using System; +//using System.Collections.Generic; +//using System.Linq; +//using Android.Gms.Plus.Model.Moments; -namespace PlusSample -{ - public class MomentUtil - { - /** - * A mapping of moment type to target URL. - */ - public static Dictionary MOMENT_TYPES; +//namespace PlusSample +//{ +// public class MomentUtil +// { +// /** +// * A mapping of moment type to target URL. +// */ +// public static Dictionary MOMENT_TYPES; - /** - * A list of moment target types. - */ - public static List MOMENT_LIST; - public static string[] ACTIONS; +// /** +// * A list of moment target types. +// */ +// public static List MOMENT_LIST; +// public static string[] ACTIONS; - static MomentUtil () - { - MOMENT_TYPES = new Dictionary (9); - MOMENT_TYPES.Add ("AddActivity", "https://developers.google.com/+/plugins/snippet/examples/thing"); - MOMENT_TYPES.Add ("BuyActivity", "https://developers.google.com/+/plugins/snippet/examples/a-book"); - MOMENT_TYPES.Add ("CheckInActivity", "https://developers.google.com/+/plugins/snippet/examples/place"); - MOMENT_TYPES.Add ("CommentActivity", "https://developers.google.com/+/plugins/snippet/examples/blog-entry"); - MOMENT_TYPES.Add ("CreateActivity", "https://developers.google.com/+/plugins/snippet/examples/photo"); - MOMENT_TYPES.Add ("ListenActivity", "https://developers.google.com/+/plugins/snippet/examples/song"); - MOMENT_TYPES.Add ("ReserveActivity", "https://developers.google.com/+/plugins/snippet/examples/restaurant"); - MOMENT_TYPES.Add ("ReviewActivity", "https://developers.google.com/+/plugins/snippet/examples/widget"); +// static MomentUtil () +// { +// MOMENT_TYPES = new Dictionary (9); +// MOMENT_TYPES.Add ("AddActivity", "https://developers.google.com/+/plugins/snippet/examples/thing"); +// MOMENT_TYPES.Add ("BuyActivity", "https://developers.google.com/+/plugins/snippet/examples/a-book"); +// MOMENT_TYPES.Add ("CheckInActivity", "https://developers.google.com/+/plugins/snippet/examples/place"); +// MOMENT_TYPES.Add ("CommentActivity", "https://developers.google.com/+/plugins/snippet/examples/blog-entry"); +// MOMENT_TYPES.Add ("CreateActivity", "https://developers.google.com/+/plugins/snippet/examples/photo"); +// MOMENT_TYPES.Add ("ListenActivity", "https://developers.google.com/+/plugins/snippet/examples/song"); +// MOMENT_TYPES.Add ("ReserveActivity", "https://developers.google.com/+/plugins/snippet/examples/restaurant"); +// MOMENT_TYPES.Add ("ReviewActivity", "https://developers.google.com/+/plugins/snippet/examples/widget"); - MOMENT_LIST = new List (MomentUtil.MOMENT_TYPES.Keys); - MOMENT_LIST.Sort (); +// MOMENT_LIST = new List (MomentUtil.MOMENT_TYPES.Keys); +// MOMENT_LIST.Sort (); - ACTIONS = MOMENT_TYPES.Keys.ToArray (); - int count = ACTIONS.Length; - for (int i = 0; i < count; i++) - ACTIONS[i] = "http://schemas.google.com/" + ACTIONS[i]; - } +// ACTIONS = MOMENT_TYPES.Keys.ToArray (); +// int count = ACTIONS.Length; +// for (int i = 0; i < count; i++) +// ACTIONS[i] = "http://schemas.google.com/" + ACTIONS[i]; +// } - /** - * Generates the "result" JSON object for select moments. - * - * @param momentType The type of the moment. - */ - public static IItemScope GetResultFor (String momentType) - { - if (momentType.Equals ("CommentActivity")) - return GetCommentActivityResult (); - if (momentType.Equals("ReserveActivity")) - return GetReserveActivityResult(); - if (momentType.Equals("ReviewActivity")) - return GetReviewActivityResult(); - return null; - } +// /** +// * Generates the "result" JSON object for select moments. +// * +// * @param momentType The type of the moment. +// */ +// public static IItemScope GetResultFor (String momentType) +// { +// if (momentType.Equals ("CommentActivity")) +// return GetCommentActivityResult (); +// if (momentType.Equals("ReserveActivity")) +// return GetReserveActivityResult(); +// if (momentType.Equals("ReviewActivity")) +// return GetReviewActivityResult(); +// return null; +// } - /** - * Generates the "result" JSON object for CommentActivity moment. - */ - static IItemScope GetCommentActivityResult() - { - return new ItemScopeBuilder () - .SetType("http://schema.org/Comment") - .SetUrl("https://developers.google.com/+/plugins/snippet/examples/blog-entry#comment-1") - .SetName("This is amazing!") - .SetText("I can't wait to use it on my site!") - .Build(); - } +// /** +// * Generates the "result" JSON object for CommentActivity moment. +// */ +// static IItemScope GetCommentActivityResult() +// { +// return new ItemScopeBuilder () +// .SetType("http://schema.org/Comment") +// .SetUrl("https://developers.google.com/+/plugins/snippet/examples/blog-entry#comment-1") +// .SetName("This is amazing!") +// .SetText("I can't wait to use it on my site!") +// .Build(); +// } - /** - * Generates the "result" JSON object for ReserveActivity moment. - */ - static IItemScope GetReserveActivityResult() - { - return new ItemScopeBuilder () - .SetType("http://schemas.google.com/Reservation") - .SetStartDate("2012-06-28T19:00:00-08:00") - .SetAttendeeCount(3) - .Build(); - } +// /** +// * Generates the "result" JSON object for ReserveActivity moment. +// */ +// static IItemScope GetReserveActivityResult() +// { +// return new ItemScopeBuilder () +// .SetType("http://schemas.google.com/Reservation") +// .SetStartDate("2012-06-28T19:00:00-08:00") +// .SetAttendeeCount(3) +// .Build(); +// } - /** - * Generates the "result" JSON object for ReviewActivity moment. - */ - static IItemScope GetReviewActivityResult() - { - var rating = new ItemScopeBuilder () - .SetType("http://schema.org/Rating") - .SetRatingValue("100") - .SetBestRating("100") - .SetWorstRating("0") - .Build(); +// /** +// * Generates the "result" JSON object for ReviewActivity moment. +// */ +// static IItemScope GetReviewActivityResult() +// { +// var rating = new ItemScopeBuilder () +// .SetType("http://schema.org/Rating") +// .SetRatingValue("100") +// .SetBestRating("100") +// .SetWorstRating("0") +// .Build(); - return new ItemScopeBuilder () - .SetType("http://schema.org/Review") - .SetName("A Humble Review of Widget") - .SetUrl("https://developers.google.com/+/plugins/snippet/examples/review") - .SetText("It is amazingly effective") - .SetReviewRating(rating) - .Build(); - } - } -} +// return new ItemScopeBuilder () +// .SetType("http://schema.org/Review") +// .SetName("A Humble Review of Widget") +// .SetUrl("https://developers.google.com/+/plugins/snippet/examples/review") +// .SetText("It is amazingly effective") +// .SetReviewRating(rating) +// .Build(); +// } +// } +//} diff --git a/plus/samples/PlusSample/PlusSample.csproj b/plus/samples/PlusSample/PlusSample.csproj index 0b0884a4b..85ed9a91b 100644 --- a/plus/samples/PlusSample/PlusSample.csproj +++ b/plus/samples/PlusSample/PlusSample.csproj @@ -15,7 +15,8 @@ True True PlusSample - v5.1 + v6.0 + armeabi;armeabi-v7a;x86;arm64-v8a;x86_64 true @@ -27,7 +28,6 @@ 4 None false - armeabi;armeabi-v7a;x86;arm64-v8a;x86_64 full @@ -37,7 +37,6 @@ 4 false false - armeabi;armeabi-v7a;x86;arm64-v8a;x86_64 @@ -90,7 +89,7 @@ - + {3F6BAE25-ADEB-468C-8384-AD655623C341} @@ -104,6 +103,18 @@ {6A38FACF-F0C5-4A49-8A8A-7CE6634207CE} Basement + + {865652D3-8D1A-4779-92FC-4C54719286B7} + Firebase-Common + + + {B04C50F7-B0CC-4170-8820-9D584E1C0ED3} + Auth.Base + + + {53F87D88-8871-41A2-9F81-B79AB02FEC24} + Tasks + diff --git a/plus/samples/PlusSample/PlusSampleActivity.cs b/plus/samples/PlusSample/PlusSampleActivity.cs index cc8cbe403..32ce25eef 100644 --- a/plus/samples/PlusSample/PlusSampleActivity.cs +++ b/plus/samples/PlusSample/PlusSampleActivity.cs @@ -25,8 +25,8 @@ static PlusSampleActivity () SAMPLES_MAP.Add ("Sign in", typeof (SignInActivity)); SAMPLES_MAP.Add ("+1", typeof (PlusOneActivity)); SAMPLES_MAP.Add ("Send interactive post", typeof (ShareActivity)); - SAMPLES_MAP.Add ("Write moments", typeof (MomentActivity)); - SAMPLES_MAP.Add ("List & remove moments", typeof (ListMomentsActivity)); + //SAMPLES_MAP.Add ("Write moments", typeof (MomentActivity)); + //SAMPLES_MAP.Add ("List & remove moments", typeof (ListMomentsActivity)); SAMPLES_MAP.Add ("List visible people (circled by you)", typeof (ListVisiblePeopleActivity)); SAMPLES_MAP.Add ("List connected people", typeof (ListConnectedPeopleActivity)); SAMPLES_MAP.Add ("License info", typeof (LicenseActivity)); diff --git a/plus/samples/PlusSample/SignInActivity.cs b/plus/samples/PlusSample/SignInActivity.cs index a2f1da111..b33cb8a50 100644 --- a/plus/samples/PlusSample/SignInActivity.cs +++ b/plus/samples/PlusSample/SignInActivity.cs @@ -173,8 +173,8 @@ GoogleApiClient buildGoogleApiClient (bool useProfileScope) builder.AddApi (PlusClass.API) .AddScope (PlusClass.ScopePlusProfile); } else { - builder.AddApi (PlusClass.API, new PlusClass.PlusOptions.Builder () - .AddActivityTypes (MomentUtil.ACTIONS).Build ()) + //var options = new PlusClass.PlusOptions.Builder ().AddActivityTypes (MomentUtil.ACTIONS).Build (); + builder.AddApi (PlusClass.API) //, options) .AddScope (PlusClass.ScopePlusLogin); } diff --git a/plus/source/Additions/DataBufferAdditions.cs b/plus/source/Additions/DataBufferAdditions.cs index 25fc2fe29..0bc39d63d 100644 --- a/plus/source/Additions/DataBufferAdditions.cs +++ b/plus/source/Additions/DataBufferAdditions.cs @@ -2,21 +2,21 @@ using System.Linq; using System.Collections.Generic; -namespace Android.Gms.Plus.Model.Moments -{ - public partial class MomentBuffer : IEnumerable - { - public IEnumerator GetEnumerator() - { - return this.ToEnumerable ().GetEnumerator(); - } +//namespace Android.Gms.Plus.Model.Moments +//{ +// public partial class MomentBuffer : IEnumerable +// { +// public IEnumerator GetEnumerator() +// { +// return this.ToEnumerable ().GetEnumerator(); +// } - System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() - { - return this.GetEnumerator(); - } - } -} +// System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() +// { +// return this.GetEnumerator(); +// } +// } +//} namespace Android.Gms.Plus.Model.People { diff --git a/plus/source/Additions/IPendingResultExtensions.cs b/plus/source/Additions/IPendingResultExtensions.cs index 653ebb569..e04e8da7b 100644 --- a/plus/source/Additions/IPendingResultExtensions.cs +++ b/plus/source/Additions/IPendingResultExtensions.cs @@ -14,25 +14,25 @@ public static async Task RevokeAccessAndDisconnectAsync (this IAccount } } - public static partial class IMomentsExtensions - { - public static async Task LoadAsync (this IMoments api, GoogleApiClient googleApiClient) - { - return (await api.Load (googleApiClient)).JavaCast (); - } - public static async Task LoadAsync (this IMoments api, GoogleApiClient googleApiClient, int maxResults, string pageToken, Android.Net.Uri targetUrl, string type, string userId) - { - return (await api.Load (googleApiClient, maxResults, pageToken, targetUrl, type, userId)).JavaCast (); - } - public static async Task RemoveAsync (this IMoments api, GoogleApiClient googleApiClient, string momentId) - { - return (await api.Remove (googleApiClient, momentId)).JavaCast (); - } - public static async Task WriteAsync (this IMoments api, GoogleApiClient googleApiClient, Android.Gms.Plus.Model.Moments.IMoment moment) - { - return (await api.Write (googleApiClient, moment)).JavaCast (); - } - } + //public static partial class IMomentsExtensions + //{ + // public static async Task LoadAsync (this IMoments api, GoogleApiClient googleApiClient) + // { + // return (await api.Load (googleApiClient)).JavaCast (); + // } + // public static async Task LoadAsync (this IMoments api, GoogleApiClient googleApiClient, int maxResults, string pageToken, Android.Net.Uri targetUrl, string type, string userId) + // { + // return (await api.Load (googleApiClient, maxResults, pageToken, targetUrl, type, userId)).JavaCast (); + // } + // public static async Task RemoveAsync (this IMoments api, GoogleApiClient googleApiClient, string momentId) + // { + // return (await api.Remove (googleApiClient, momentId)).JavaCast (); + // } + // public static async Task WriteAsync (this IMoments api, GoogleApiClient googleApiClient, Android.Gms.Plus.Model.Moments.IMoment moment) + // { + // return (await api.Write (googleApiClient, moment)).JavaCast (); + // } + //} public static partial class IPeopleExtensions { diff --git a/plus/source/Plus.csproj b/plus/source/Plus.csproj index a97e3a861..8309969e8 100644 --- a/plus/source/Plus.csproj +++ b/plus/source/Plus.csproj @@ -82,6 +82,10 @@ {6A38FACF-F0C5-4A49-8A8A-7CE6634207CE} Basement + + {B04C50F7-B0CC-4170-8820-9D584E1C0ED3} + Auth.Base + \ No newline at end of file diff --git a/plus/source/Transforms/Metadata.generated.xml b/plus/source/Transforms/Metadata.generated.xml index c1a759fe7..26c2f6238 100644 --- a/plus/source/Transforms/Metadata.generated.xml +++ b/plus/source/Transforms/Metadata.generated.xml @@ -1,294 +1,2 @@ - googleApiClient - googleApiClient - googleApiClient - googleApiClient - googleApiClient - maxResults - pageToken - targetUrl - theType - userId - googleApiClient - momentId - googleApiClient - moment - googleApiClient - googleApiClient - personIds - googleApiClient - personIds - googleApiClient - googleApiClient - orderBy - pageToken - googleApiClient - pageToken - googleApiClient - googleApiClient - googleApiClient - googleApiClient - googleApiClient - maxResults - pageToken - targetUrl - theType - userId - googleApiClient - momentId - googleApiClient - moment - googleApiClient - googleApiClient - personIds - googleApiClient - personIds - googleApiClient - googleApiClient - orderBy - pageToken - googleApiClient - pageToken - activityTypes - clientId - context - context - attrs - context - attrs - context - attrs - url - activityRequestCode - url - plusOneClickListener - changed - left - top - right - bottom - widthMeasureSpec - heightMeasureSpec - annotation - intent - listener - sizeValue - proxy - view - intent - intent - context - sizeValue - id - displayName - intent - launchingActivity - context - label - uri - deepLinkId - streamUri - deepLinkId - deepLinkId - title - description - thumbnailUri - uri - user - recipientList - streamUri - text - mimeType - objValue - output - flags - accountName - requestedScopes - visibleActions - requiredFeatures - packageNameForAuth - callingPackageName - applicationName - extra - objValue - output - flags - code - data - reply - flags - code - data - reply - flags - code - data - reply - flags - indicatorSet - about - additionalName - address - addressCountry - addressLocality - addressRegion - associated_media - attendeeCount - attendees - audio - author - bestRating - birthDate - byArtist - caption - contentSize - contentUrl - contributor - dateCreated - dateModified - datePublished - description - duration - embedUrl - endDate - familyName - gender - geo - givenName - height - id - image - inAlbum - latitude - location - longitude - nameValue - partOfTVSeries - performers - playerType - postOfficeBoxNumber - postalCode - ratingValue - reviewRating - startDate - streetAddress - text - thumbnail - thumbnailUrl - tickerSymbol - theType - url - width - worstRating - objValue - output - flags - indicatorSet - id - result - startDate - target - theType - objValue - output - flags - displayName - id - image - objectType - url - objValue - output - flags - objValue - output - flags - objValue - output - flags - objValue - output - flags - objValue - output - flags - url - objValue - output - flags - objValue - output - flags - objValue - output - flags - objValue - output - flags - objValue - output - flags - about - additionalName - address - addressCountry - addressLocality - addressRegion - associated_media - attendeeCount - attendees - audio - author - bestRating - birthDate - byArtist - caption - contentSize - contentUrl - contributor - dateCreated - dateModified - datePublished - description - duration - embedUrl - endDate - familyName - gender - geo - givenName - height - id - image - inAlbum - latitude - location - longitude - nameValue - partOfTVSeries - performers - playerType - postalCode - postOfficeBoxNumber - ratingValue - reviewRating - startDate - streetAddress - text - thumbnail - thumbnailUrl - tickerSymbol - theType - url - width - worstRating - id - result - startDate - target - theType - dataHolder - position - dataHolder - position From 2e7f87b4bbd144ca72964c530748c947ed143133 Mon Sep 17 00:00:00 2001 From: Redth Date: Wed, 1 Jun 2016 13:50:49 -0400 Subject: [PATCH 028/178] Updated safetynet binding and sample --- safetynet/component/component.template.yaml | 14 +++++++---- safetynet/samples/SafetyNetSample.sln | 12 ++++++++++ .../SafetyNetSample/SafetyNetSample.csproj | 15 ++++++++---- .../source/Transforms/Metadata.generated.xml | 23 ------------------- 4 files changed, 33 insertions(+), 31 deletions(-) diff --git a/safetynet/component/component.template.yaml b/safetynet/component/component.template.yaml index 71f5225b3..d0db072bb 100644 --- a/safetynet/component/component.template.yaml +++ b/safetynet/component/component.template.yaml @@ -10,9 +10,11 @@ icons: - icons/googleplayservices-safetynet_512x512.png libraries: android: - - ../../output/Xamarin.GooglePlayServices.SafetyNet.dll - ../../output/Xamarin.GooglePlayServices.Base.dll - ../../output/Xamarin.GooglePlayServices.Basement.dll + - ../../output/Xamarin.GooglePlayServices.Tasks.dll + - ../../output/Xamarin.Firebase.Common.dll + - ../../output/Xamarin.GooglePlayServices.SafetyNet.dll is_shell: true packages: android: @@ -21,14 +23,18 @@ samples: - name: "SafetyNet Sample" path: ../../safetynet/samples/SafetyNetSample.sln removeProjects: - - Xamarin.GooglePlayServices.Base - - Xamarin.GooglePlayServices.Basement - - Xamarin.GooglePlayServices.SafetyNet + - Base + - Basement + - Tasks + - Firebase-Common + - SafetyNet installNuGets: - project: SafetyNetSample packages: - Xamarin.GooglePlayServices.Base - Xamarin.GooglePlayServices.Basement + - Xamarin.GooglePlayServices.Tasks + - Xamarin.Firebase.Common - Xamarin.GooglePlayServices.SafetyNet local-nuget-repo: ../../output/ no_build: true diff --git a/safetynet/samples/SafetyNetSample.sln b/safetynet/samples/SafetyNetSample.sln index 171c13f35..2879893f2 100644 --- a/safetynet/samples/SafetyNetSample.sln +++ b/safetynet/samples/SafetyNetSample.sln @@ -11,6 +11,10 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SafetyNet", "..\source\Safe EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Basement", "..\..\basement\source\Basement.csproj", "{6A38FACF-F0C5-4A49-8A8A-7CE6634207CE}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tasks", "..\..\tasks\source\Tasks.csproj", "{53F87D88-8871-41A2-9F81-B79AB02FEC24}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Firebase-Common", "..\..\firebase-common\source\Firebase-Common.csproj", "{865652D3-8D1A-4779-92FC-4C54719286B7}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -37,5 +41,13 @@ Global {D6472554-E92E-4947-B072-2BF0F65E77C9}.Debug|Any CPU.Build.0 = Debug|Any CPU {D6472554-E92E-4947-B072-2BF0F65E77C9}.Release|Any CPU.ActiveCfg = Release|Any CPU {D6472554-E92E-4947-B072-2BF0F65E77C9}.Release|Any CPU.Build.0 = Release|Any CPU + {53F87D88-8871-41A2-9F81-B79AB02FEC24}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {53F87D88-8871-41A2-9F81-B79AB02FEC24}.Debug|Any CPU.Build.0 = Debug|Any CPU + {53F87D88-8871-41A2-9F81-B79AB02FEC24}.Release|Any CPU.ActiveCfg = Release|Any CPU + {53F87D88-8871-41A2-9F81-B79AB02FEC24}.Release|Any CPU.Build.0 = Release|Any CPU + {865652D3-8D1A-4779-92FC-4C54719286B7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {865652D3-8D1A-4779-92FC-4C54719286B7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {865652D3-8D1A-4779-92FC-4C54719286B7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {865652D3-8D1A-4779-92FC-4C54719286B7}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection EndGlobal diff --git a/safetynet/samples/SafetyNetSample/SafetyNetSample.csproj b/safetynet/samples/SafetyNetSample/SafetyNetSample.csproj index 2de9669b4..9425a5a2f 100644 --- a/safetynet/samples/SafetyNetSample/SafetyNetSample.csproj +++ b/safetynet/samples/SafetyNetSample/SafetyNetSample.csproj @@ -15,7 +15,8 @@ True True SafetyNetSample - v5.1 + v6.0 + armeabi;armeabi-v7a;x86;arm64-v8a;x86_64 true @@ -27,7 +28,6 @@ 4 None false - armeabi;armeabi-v7a;x86;arm64-v8a;x86_64 full @@ -37,7 +37,6 @@ 4 false false - armeabi;armeabi-v7a;x86;arm64-v8a;x86_64 @@ -69,7 +68,7 @@ - + {3F6BAE25-ADEB-468C-8384-AD655623C341} @@ -83,5 +82,13 @@ {6A38FACF-F0C5-4A49-8A8A-7CE6634207CE} Basement + + {865652D3-8D1A-4779-92FC-4C54719286B7} + Firebase-Common + + + {53F87D88-8871-41A2-9F81-B79AB02FEC24} + Tasks + \ No newline at end of file diff --git a/safetynet/source/Transforms/Metadata.generated.xml b/safetynet/source/Transforms/Metadata.generated.xml index 883373243..26c2f6238 100644 --- a/safetynet/source/Transforms/Metadata.generated.xml +++ b/safetynet/source/Transforms/Metadata.generated.xml @@ -1,25 +1,2 @@ - code - data - reply - flags - code - data - reply - flags - googleApiClient - nonce - googleApiClient - threatTypes - uri - output - flags - metadata - output - flags - googleApiClient - nonce - googleApiClient - threatTypes - uri From 2b989ad438ec50c51cdb41a0f72316bcfc4e2098 Mon Sep 17 00:00:00 2001 From: Redth Date: Wed, 1 Jun 2016 13:50:59 -0400 Subject: [PATCH 029/178] Updated support-wearable bindings --- .../source/Properties/AssemblyInfo.cs | 11 +-- .../source/SupportWearable.csproj | 8 +- .../Transforms/Metadata.support.generated.xml | 77 +++++++++++++------ 3 files changed, 62 insertions(+), 34 deletions(-) diff --git a/support-wearable/source/Properties/AssemblyInfo.cs b/support-wearable/source/Properties/AssemblyInfo.cs index db25e0cce..ea602943f 100644 --- a/support-wearable/source/Properties/AssemblyInfo.cs +++ b/support-wearable/source/Properties/AssemblyInfo.cs @@ -27,18 +27,15 @@ PackageName = __WearableConsts.PackageName, SourceUrl = __GpsConsts.Url, EmbeddedArchive = __WearableConsts.AarPath, - Version = __WearableConsts.Version)] + Version = __GpsConsts.WearVersion)] // Wearable Support Resources [assembly: Android.IncludeAndroidResourcesFromAttribute ("./", PackageName = __WearableConsts.PackageName, SourceUrl = __GpsConsts.Url, EmbeddedArchive = __WearableConsts.AarPath, - Version = __WearableConsts.Version)] + Version = __GpsConsts.WearVersion)] static class __WearableConsts { - public const string Version = "1.3.0"; - public const string PackageName = "Android Wear"; - public const string AarPath = "m2repository/com/google/android/support/wearable/" + Version + "/wearable-" + Version + ".aar"; + public const string PackageName = "Android Wear"; + public const string AarPath = "m2repository/com/google/android/support/wearable/" + __GpsConsts.WearVersion + "/wearable-" + __GpsConsts.WearVersion + ".aar"; } - - diff --git a/support-wearable/source/SupportWearable.csproj b/support-wearable/source/SupportWearable.csproj index 8e9dfce40..c56a5387c 100644 --- a/support-wearable/source/SupportWearable.csproj +++ b/support-wearable/source/SupportWearable.csproj @@ -78,15 +78,13 @@ - - - Jars\support-wearable.jar - - Jars\wearable.jar + + Jars\support-wearable.jar + \ No newline at end of file diff --git a/support-wearable/source/Transforms/Metadata.support.generated.xml b/support-wearable/source/Transforms/Metadata.support.generated.xml index 773c5adc8..64ac2e4a5 100644 --- a/support-wearable/source/Transforms/Metadata.support.generated.xml +++ b/support-wearable/source/Transforms/Metadata.support.generated.xml @@ -6,6 +6,27 @@ args savedInstanceState ambientDetails + context + context + attrs + context + attrs + defStyleAttr + listener + direction + canvas + changed + left + top + right + bottom + evt + option + listener + enabled + option + drawable + color context context attrs @@ -208,7 +229,9 @@ circleColor circleHidden circleRadius + circleRadiusPercent circleRadiusPressed + circleRadiusPressedPercent mColorChangeAnimationDurationMs percentage drawable @@ -351,10 +374,6 @@ transaction objectValue position - container - rowValue - column - objectValue container rowValue column @@ -364,11 +383,6 @@ objectValue rowValue column - x0 - x1 - x2 - view - objectValue rowValue column rowValue @@ -438,17 +452,6 @@ slideAnimationDuration context attrs - oldAdapter - newAdapter - rowValue - column - rowOffset - colOffset - rowOffsetPx - colOffsetPx - state - rowValue - column context attrs lValue @@ -456,7 +459,6 @@ oldl oldt onScrollListener - deltaY context context attrs @@ -468,6 +470,32 @@ delayMs delayMs listener + adapterPosition + adapter + adapter + position + adapter + position + position + position + position + childAdapter + childPosition + newPosition + adapter + recyclerView + viewHolder + position + viewGroup + viewType + recyclerView + holder + holder + holder + holder + adapterPosition + adapter + hasStableIds animator animator animator @@ -582,11 +610,14 @@ velocityY child evt + keyCode + evt evt listener listener adapter clickListener + enabled greedy top maximizeSingleItem @@ -620,7 +651,6 @@ height holder holder - style objValue code data @@ -638,6 +668,7 @@ count rect properties + status tapType xValue yValue @@ -657,6 +688,8 @@ backgroundVisibility peekMode progressMode + hideHotwordIndicator + hideStatusBar hotwordIndicatorGravity peekOpacityMode showSystemUiTime From 6e37c02b374f8fdd34a64d5d663566e663b274ce Mon Sep 17 00:00:00 2001 From: Redth Date: Wed, 1 Jun 2016 13:51:08 -0400 Subject: [PATCH 030/178] Updated vision binding and sample --- vision/component/component.template.yaml | 12 +- vision/samples/VisionSample.sln | 12 + .../samples/VisionSample/VisionSample.csproj | 8 + .../source/Transforms/Metadata.generated.xml | 243 ------------------ vision/source/Transforms/Metadata.xml | 2 + vision/source/Vision.csproj | 2 + 6 files changed, 33 insertions(+), 246 deletions(-) diff --git a/vision/component/component.template.yaml b/vision/component/component.template.yaml index ae56db9ee..042d05c27 100644 --- a/vision/component/component.template.yaml +++ b/vision/component/component.template.yaml @@ -12,6 +12,8 @@ libraries: android: - ../../output/Xamarin.GooglePlayServices.Base.dll - ../../output/Xamarin.GooglePlayServices.Basement.dll + - ../../output/Xamarin.GooglePlayServices.Tasks.dll + - ../../output/Xamarin.Firebase.Common.dll - ../../output/Xamarin.GooglePlayServices.Vision.dll is_shell: true packages: @@ -21,14 +23,18 @@ samples: - name: "Vision Sample" path: ../../vision/samples/VisionSample.sln removeProjects: - - Xamarin.GooglePlayServices.Base - - Xamarin.GooglePlayServices.Basement - - Xamarin.GooglePlayServices.Vision + - Base + - Basement + - Tasks + - Firebase-Common + - Vision installNuGets: - project: VisionSample packages: - Xamarin.GooglePlayServices.Base - Xamarin.GooglePlayServices.Basement + - Xamarin.GooglePlayServices.Tasks + - Xamarin.Firebase.Common - Xamarin.GooglePlayServices.Vision local-nuget-repo: ../../output/ no_build: true diff --git a/vision/samples/VisionSample.sln b/vision/samples/VisionSample.sln index 7dc7625c1..055cbd19c 100644 --- a/vision/samples/VisionSample.sln +++ b/vision/samples/VisionSample.sln @@ -11,6 +11,10 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Base", "..\..\base\source\B EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Vision", "..\source\Vision.csproj", "{72CC5E29-5EA5-40E3-98E4-87ED8AB75589}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tasks", "..\..\tasks\source\Tasks.csproj", "{53F87D88-8871-41A2-9F81-B79AB02FEC24}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Firebase-Common", "..\..\firebase-common\source\Firebase-Common.csproj", "{865652D3-8D1A-4779-92FC-4C54719286B7}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -37,5 +41,13 @@ Global {A73B36CD-535C-45C6-8138-5DC6488EFA46}.Debug|Any CPU.Build.0 = Debug|Any CPU {A73B36CD-535C-45C6-8138-5DC6488EFA46}.Release|Any CPU.ActiveCfg = Release|Any CPU {A73B36CD-535C-45C6-8138-5DC6488EFA46}.Release|Any CPU.Build.0 = Release|Any CPU + {53F87D88-8871-41A2-9F81-B79AB02FEC24}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {53F87D88-8871-41A2-9F81-B79AB02FEC24}.Debug|Any CPU.Build.0 = Debug|Any CPU + {53F87D88-8871-41A2-9F81-B79AB02FEC24}.Release|Any CPU.ActiveCfg = Release|Any CPU + {53F87D88-8871-41A2-9F81-B79AB02FEC24}.Release|Any CPU.Build.0 = Release|Any CPU + {865652D3-8D1A-4779-92FC-4C54719286B7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {865652D3-8D1A-4779-92FC-4C54719286B7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {865652D3-8D1A-4779-92FC-4C54719286B7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {865652D3-8D1A-4779-92FC-4C54719286B7}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection EndGlobal diff --git a/vision/samples/VisionSample/VisionSample.csproj b/vision/samples/VisionSample/VisionSample.csproj index eaf7fe06c..9e6cf3f34 100644 --- a/vision/samples/VisionSample/VisionSample.csproj +++ b/vision/samples/VisionSample/VisionSample.csproj @@ -88,5 +88,13 @@ {72CC5E29-5EA5-40E3-98E4-87ED8AB75589} Vision + + {865652D3-8D1A-4779-92FC-4C54719286B7} + Firebase-Common + + + {53F87D88-8871-41A2-9F81-B79AB02FEC24} + Tasks + \ No newline at end of file diff --git a/vision/source/Transforms/Metadata.generated.xml b/vision/source/Transforms/Metadata.generated.xml index d17a12d25..26c2f6238 100644 --- a/vision/source/Transforms/Metadata.generated.xml +++ b/vision/source/Transforms/Metadata.generated.xml @@ -1,245 +1,2 @@ - surfaceHolder - shutter - jpeg - context - detector - autoFocusEnabled - facing - fps - width - height - frame - frame - id - processor - detectedItems - frameMetadata - isOperational - detections - detector - tracker - detections - detections - image - id - data - width - height - format - rotation - timestampMillis - metadata - frame - frame - processor - detector - detections - factory - maxGapFrames - detections - id - item - detections - item - versionCode - format - rawValue - displayValue - valueFormat - cornerPoints - email - phone - sms - wifi - url - geoPoint - calendarEvent - contactInfo - driverLicense - parcel - flags - versionCode - theType - addressLines - parcel - flags - versionCode - year - month - day - hours - minutes - seconds - isUtc - rawValue - parcel - flags - versionCode - summary - description - location - organizer - status - start - end - parcel - flags - versionCode - nameValue - organization - title - phones - emails - urls - addresses - parcel - flags - versionCode - documentType - firstName - middleName - lastName - gender - addressStreet - addressCity - addressState - addressZip - licenseNumber - issueDate - expiryDate - birthDate - issuingCountry - parcel - flags - versionCode - theType - address - subject - body - parcel - flags - versionCode - latValue - lng - parcel - flags - versionCode - formattedName - pronunciation - prefix - first - middle - last - suffix - parcel - flags - versionCode - theType - number - parcel - flags - versionCode - message - phoneNumber - parcel - flags - versionCode - title - url - parcel - flags - versionCode - ssid - password - encryptionType - parcel - flags - frame - context - format - versionCode - barcodeFormats - parcel - flags - code - data - reply - flags - code - data - reply - flags - id - position - width - height - yawDegrees - rollDegrees - landmarks - isLeftEyeOpenScore - isRightEyeOpenScore - isSmilingScore - frame - id - context - classificationType - landmarkType - proportionalMinFaceSize - mode - prominentFaceOnly - trackingEnabled - position - theType - detector - tracker - detections - detector - tracker - maxGapFrames - versionCode - id - centerX - centerY - width - height - eulerY - eulerZ - landmarkParcels - isLeftEyeOpenScore - isRightEyeOpenScore - isSmilingScore - parcel - flags - versionCode - mode - landmarkType - classificationType - prominentFaceOnly - trackingEnabled - proportionalMinFaceSize - parcel - flags - versionCode - xValue - yValue - theType - parcel - flags - code - data - reply - flags - code - data - reply - flags - versionCode - width - height - id - timestampMillis - rotation - parcel - flags diff --git a/vision/source/Transforms/Metadata.xml b/vision/source/Transforms/Metadata.xml index e47b38bc2..284e284d8 100644 --- a/vision/source/Transforms/Metadata.xml +++ b/vision/source/Transforms/Metadata.xml @@ -6,6 +6,8 @@ Android.Gms.Vision.Barcodes.Internal.Client Android.Gms.Vision.Faces Android.Gms.Vision.Faces.Internal.Client + Android.Gms.Vision.Texts + Android.Gms.Vision.Texts.Internal.Client Face diff --git a/vision/source/Vision.csproj b/vision/source/Vision.csproj index 093fa1787..dcd393af5 100644 --- a/vision/source/Vision.csproj +++ b/vision/source/Vision.csproj @@ -16,6 +16,8 @@ + 8.0.30703 + 2.0 true From 2bf41e738e2ccdf031fd292f33a77789b9ac9399 Mon Sep 17 00:00:00 2001 From: Redth Date: Wed, 1 Jun 2016 13:51:18 -0400 Subject: [PATCH 031/178] Updated wearable bindings and sample --- wallet/component/component.template.yaml | 16 +- wallet/samples/AndroidPayQuickstart.sln | 12 + .../AndroidPayQuickstart.csproj | 13 +- .../source/Transforms/Metadata.generated.xml | 265 ------------------ 4 files changed, 33 insertions(+), 273 deletions(-) diff --git a/wallet/component/component.template.yaml b/wallet/component/component.template.yaml index 587027c13..dfe5b324d 100644 --- a/wallet/component/component.template.yaml +++ b/wallet/component/component.template.yaml @@ -12,6 +12,8 @@ libraries: android: - ../../output/Xamarin.GooglePlayServices.Base.dll - ../../output/Xamarin.GooglePlayServices.Basement.dll + - ../../output/Xamarin.GooglePlayServices.Tasks.dll + - ../../output/Xamarin.Firebase.Common.dll - ../../output/Xamarin.GooglePlayServices.Wallet.dll - ../../output/Xamarin.GooglePlayServices.Plus.dll - ../../output/Xamarin.GooglePlayServices.Identity.dll @@ -23,16 +25,20 @@ samples: - name: "Android Pay Sample" path: ../../wallet/samples/AndroidPayQuickstart.sln removeProjects: - - Xamarin.GooglePlayServices.Base - - Xamarin.GooglePlayServices.Basement - - Xamarin.GooglePlayServices.Wallet - - Xamarin.GooglePlayServices.Plus - - Xamarin.GooglePlayServices.Identity + - Base + - Basement + - Tasks + - Firebase-Common + - Wallet + - Plus + - Identity installNuGets: - project: AndroidPayQuickstart packages: - Xamarin.GooglePlayServices.Base - Xamarin.GooglePlayServices.Basement + - Xamarin.GooglePlayServices.Tasks + - Xamarin.Firebase.Common - Xamarin.GooglePlayServices.Wallet - Xamarin.GooglePlayServices.Plus - Xamarin.GooglePlayServices.Identity diff --git a/wallet/samples/AndroidPayQuickstart.sln b/wallet/samples/AndroidPayQuickstart.sln index d38305d83..0e22ea906 100644 --- a/wallet/samples/AndroidPayQuickstart.sln +++ b/wallet/samples/AndroidPayQuickstart.sln @@ -17,6 +17,10 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Basement", "..\..\basement\ EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Maps", "..\..\maps\source\Maps.csproj", "{7CB92D61-E2FF-472A-9FDF-7E42D15B3EE6}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tasks", "..\..\tasks\source\Tasks.csproj", "{53F87D88-8871-41A2-9F81-B79AB02FEC24}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Firebase-Common", "..\..\firebase-common\source\Firebase-Common.csproj", "{865652D3-8D1A-4779-92FC-4C54719286B7}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -55,5 +59,13 @@ Global {E1D38A6F-84FB-475D-8D68-604EDE19A9E6}.Debug|Any CPU.Build.0 = Debug|Any CPU {E1D38A6F-84FB-475D-8D68-604EDE19A9E6}.Release|Any CPU.ActiveCfg = Release|Any CPU {E1D38A6F-84FB-475D-8D68-604EDE19A9E6}.Release|Any CPU.Build.0 = Release|Any CPU + {53F87D88-8871-41A2-9F81-B79AB02FEC24}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {53F87D88-8871-41A2-9F81-B79AB02FEC24}.Debug|Any CPU.Build.0 = Debug|Any CPU + {53F87D88-8871-41A2-9F81-B79AB02FEC24}.Release|Any CPU.ActiveCfg = Release|Any CPU + {53F87D88-8871-41A2-9F81-B79AB02FEC24}.Release|Any CPU.Build.0 = Release|Any CPU + {865652D3-8D1A-4779-92FC-4C54719286B7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {865652D3-8D1A-4779-92FC-4C54719286B7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {865652D3-8D1A-4779-92FC-4C54719286B7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {865652D3-8D1A-4779-92FC-4C54719286B7}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection EndGlobal diff --git a/wallet/samples/AndroidPayQuickstart/AndroidPayQuickstart.csproj b/wallet/samples/AndroidPayQuickstart/AndroidPayQuickstart.csproj index c85dd403e..18e3d1b0f 100644 --- a/wallet/samples/AndroidPayQuickstart/AndroidPayQuickstart.csproj +++ b/wallet/samples/AndroidPayQuickstart/AndroidPayQuickstart.csproj @@ -16,6 +16,7 @@ False AndroidPayQuickstart v5.1 + armeabi;armeabi-v7a;x86;arm64-v8a;x86_64 true @@ -27,7 +28,6 @@ 4 None false - armeabi;armeabi-v7a;x86;arm64-v8a;x86_64 full @@ -37,7 +37,6 @@ 4 false false - armeabi;armeabi-v7a;x86;arm64-v8a;x86_64 @@ -151,7 +150,7 @@ - + {3F6BAE25-ADEB-468C-8384-AD655623C341} @@ -177,5 +176,13 @@ {7CB92D61-E2FF-472A-9FDF-7E42D15B3EE6} Maps + + {865652D3-8D1A-4779-92FC-4C54719286B7} + Firebase-Common + + + {53F87D88-8871-41A2-9F81-B79AB02FEC24} + Tasks + \ No newline at end of file diff --git a/wallet/source/Transforms/Metadata.generated.xml b/wallet/source/Transforms/Metadata.generated.xml index 8bf46d8b6..26c2f6238 100644 --- a/wallet/source/Transforms/Metadata.generated.xml +++ b/wallet/source/Transforms/Metadata.generated.xml @@ -1,267 +1,2 @@ - initParams - requestCode - resultCode - data - savedInstanceState - inflaterWrapper - containerWrapper - savedInstanceState - outState - enabled - maskedWallet - request - code - data - reply - flags - code - data - reply - flags - code - data - reply - flags - code - data - reply - flags - code - data - reply - flags - code - data - reply - flags - googleApiClient - googleTransactionId - merchantTransactionId - requestCode - googleApiClient - requestCode - googleApiClient - requestCode - googleApiClient - googleApiClient - request - requestCode - googleApiClient - request - requestCode - googleApiClient - request - output - flags - dest - flags - lineItem - currencyCode - lineItems - totalPrice - countryCode - dest - flags - dest - flags - context - intent - output - flags - dest - flags - cart - googleTransactionId - merchantTransactionId - dest - flags - output - flags - output - flags - dest - flags - currencyCode - description - quantity - role - totalPrice - unitPrice - dest - flags - maskedWallet - dest - flags - billingAddress - buyerBillingAddress - buyerShippingAddress - email - googleTransactionId - instrumentInfos - merchantTransactionId - paymentDescriptions - shippingAddress - dest - flags - allowedCardNetwork - allowedCardNetworks - countrySpecification - countrySpecifications - allowDebitCard - allowPrepaidCard - cart - currencyCode - estimatedTotalPrice - isBillingAgreement - merchantName - merchantTransactionId - paymentMethodTokenizationParameters - phoneNumberRequired - shippingAddressRequired - useMinimalBillingAddress - output - flags - detailedReason - googleTransactionId - status - dest - flags - output - flags - output - flags - nameValue - value - tokenizationType - googleApiClient - googleTransactionId - merchantTransactionId - requestCode - googleApiClient - requestCode - googleApiClient - requestCode - googleApiClient - googleApiClient - request - requestCode - googleApiClient - request - requestCode - googleApiClient - request - output - flags - googleApiClient - googleTransactionId - merchantTransactionId - requestCode - googleApiClient - requestCode - googleApiClient - request - requestCode - googleApiClient - request - requestCode - googleApiClient - request - environment - theme - output - flags - output - flags - output - flags - output - flags - output - flags - initParams - options - requestCode - resultCode - data - savedInstanceState - inflater - container - savedInstanceState - activity - attrs - savedInstanceState - outState - enabled - listener - maskedWallet - request - initParams - options - requestCode - resultCode - data - savedInstanceState - inflater - container - savedInstanceState - activity - attrs - savedInstanceState - outState - enabled - listener - maskedWallet - request - dest - flags - accountName - maskedWallet - request - requestCode - dest - flags - environment - styleResourceId - fragmentStyle - mode - theme - buyButtonAppearance - height - unit - height - buyButtonText - width - unit - width - color - resourceId - color - resourceId - resourceId - resourceId - imageType - color - resourceId - id - dest - flags - dest - flags - dest - flags - dest - flags - dest - flags - dest - flags - dest - flags - dest - flags - dest - flags - dest - flags From b6b553d8e62c1e086b41e2370b395eeef152fa71 Mon Sep 17 00:00:00 2001 From: Redth Date: Wed, 1 Jun 2016 13:51:41 -0400 Subject: [PATCH 032/178] Cleaned up file in obsoleted measurements binding --- .../source/Transforms/Metadata.generated.xml | 84 ------------------- 1 file changed, 84 deletions(-) diff --git a/measurement/source/Transforms/Metadata.generated.xml b/measurement/source/Transforms/Metadata.generated.xml index 6dd676f20..26c2f6238 100644 --- a/measurement/source/Transforms/Metadata.generated.xml +++ b/measurement/source/Transforms/Metadata.generated.xml @@ -1,86 +1,2 @@ - oValue - output - oValue - output - oValue - output - oValue - output - oValue - output - oValue - output - oValue - output - oValue - output - oValue - output - oValue - output - oValue - output - oValue - output - oValue - output - oValue - output - oValue - output - oValue - output - scion - context - enabled - uri - selection - selectionArgs - uri - uri - values - uri - projection - selection - selectionArgs - sortOrder - uri - values - selection - selectionArgs - context - intent - intent - intent - intent - flags - startId - intent - output - flags - output - flags - nameValue - parameters - origin - eventTimeInMilliseconds - output - flags - output - flags - enabled - connectionHint - result - cause - nameValue - binder - nameValue - appValue - code - data - reply - flags - value - value From a293db0532117a791d5268006aaa3595192d2501 Mon Sep 17 00:00:00 2001 From: Redth Date: Wed, 1 Jun 2016 13:51:57 -0400 Subject: [PATCH 033/178] Updated wearable binding generated metadata --- .../source/Transforms/Metadata.generated.xml | 439 ------------------ 1 file changed, 439 deletions(-) diff --git a/wearable/source/Transforms/Metadata.generated.xml b/wearable/source/Transforms/Metadata.generated.xml index ae1e41a21..26c2f6238 100644 --- a/wearable/source/Transforms/Metadata.generated.xml +++ b/wearable/source/Transforms/Metadata.generated.xml @@ -1,441 +1,2 @@ - oValue - output - oValue - output - oValue - output - oValue - output - assetData - fd - digest - uri - oValue - dest - flags - client - listener - capability - client - listener - uri - filterType - client - capability - client - nodeFilter - client - capability - nodeFilter - client - listener - capability - client - listener - client - capability - capabilityInfo - client - listener - client - client - errorCode - client - client - client - uri - append - client - listener - client - uri - client - uri - startOffset - length - client - listener - client - nodeId - path - client - listener - channel - closeReason - appSpecificErrorCode - channel - channel - closeReason - appSpecificErrorCode - channel - closeReason - appSpecificErrorCode - message - closeReason - appSpecificErrorCode - oValue - dest - flags - client - listener - client - listener - uri - filterType - client - uri - client - uri - filterType - client - uri - client - client - uri - client - uri - filterType - client - asset - client - asset - client - request - client - listener - dataEvents - dataHolder - data - dataHolder - bundleArrayList - key - oValue - bundle - bytes - key - key - key - key - defaultValue - key - key - defaultValue - key - key - key - key - key - defaultValue - key - key - defaultValue - key - key - key - defaultValue - key - key - key - defaultValue - key - key - key - defaultValue - key - key - dataMap - key - value - key - value - key - value - key - value - key - value - key - value - key - value - key - value - key - value - key - value - key - value - key - value - key - value - key - value - key - value - key - value - key - dataItem - client - listener - client - listener - uri - filterType - client - listener - client - nodeId - action - data - messageEvent - client - listener - client - client - client - listener - peer - peer - connectedNodes - path - source - pathPrefix - path - source - pathPrefix - key - key - key - value - key - data - verbose - dest - flags - intent - capabilityInfo - channel - closeReason - appSpecificErrorCode - channel - connectedNodes - dataEvents - channel - closeReason - appSpecificErrorCode - messageEvent - channel - closeReason - appSpecificErrorCode - peer - peer - statusCode - stub - dest - flags - dest - flags - oValue - dest - flags - oValue - dest - flags - oValue - dest - flags - dest - flags - client - listener - client - client - errorCode - other - client - client - client - uri - append - client - listener - client - uri - client - uri - startOffset - length - dest - flags - dest - flags - dest - flags - dest - flags - value - dest - flags - verbose - dest - flags - dest - flags - dest - flags - dest - flags - dest - flags - dest - flags - dest - flags - dest - flags - dest - flags - dest - flags - dest - flags - dest - flags - dest - flags - dest - flags - dest - flags - dest - flags - oValue - dest - flags - dest - flags - output - flags - statusCode - dataItem - dest - flags - listener - dest - flags - dest - flags - dest - flags - output - flags - data - verbose - data - verbose - code - data - reply - flags - code - data - reply - flags - connectedNodes - code - data - reply - flags - code - data - reply - flags - client - listener - client - listener - uri - filterType - client - listener - client - nodeId - action - data - client - listener - client - client - client - listener - client - listener - capability - client - listener - uri - filterType - client - capability - client - nodeFilter - client - capability - nodeFilter - client - listener - capability - client - listener - client - capability - client - listener - client - nodeId - path - client - listener - readlimit - buffer - buffer - byteOffset - byteCount - byteCount - iValue - buffer - buffer - offset - count - client - listener - client - listener - uri - filterType - client - uri - client - uri - filterType - client - uri - client - client - uri - client - uri - filterType - client - asset - client - asset - client - request - client - listener From a49f8662d209bb51dd905991329eae8bc2ca62a1 Mon Sep 17 00:00:00 2001 From: Redth Date: Wed, 1 Jun 2016 13:52:31 -0400 Subject: [PATCH 034/178] Added nuspec for firebase-ads This is just a wrapper around firebase-analytics and play-services-ads and depends on those packages --- .../nuget/Xamarin.Firebase.Ads.nuspec | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 firebase-ads/nuget/Xamarin.Firebase.Ads.nuspec diff --git a/firebase-ads/nuget/Xamarin.Firebase.Ads.nuspec b/firebase-ads/nuget/Xamarin.Firebase.Ads.nuspec new file mode 100644 index 000000000..5979d3c6c --- /dev/null +++ b/firebase-ads/nuget/Xamarin.Firebase.Ads.nuspec @@ -0,0 +1,27 @@ + + + + Xamarin.Firebase.Ads + Xamarin Firebase - Ads + $version$ + Xamarin Inc. + Xamarin Inc. + true + Xamarin.Android Bindings for Firebase - Ads + + Xamarin.Android Bindings for Firebase - Ads + + Copyright 2013-2016 + https://github.com/xamarin/GooglePlayServicesComponents/ + https://github.com/xamarin/GooglePlayServicesComponents/blob/master/LICENSE.md + https://xamarin-component-icons.s3.amazonaws.com/Xamarin.Firebase.Ads.png + + + + + + + + + + From a042e223630fa1a6e585d821d901203df038839a Mon Sep 17 00:00:00 2001 From: Redth Date: Wed, 1 Jun 2016 13:54:27 -0400 Subject: [PATCH 035/178] Added firebase auth* bindings --- .../nuget/Xamarin.Firebase.Auth.Common.nuspec | 28 ++++++ .../source/Additions/AboutAdditions.txt | 48 ++++++++++ .../source/Firebase-Auth-Common.csproj | 86 ++++++++++++++++++ .../source/Jars/AboutJars.txt | 37 ++++++++ .../source/Properties/AssemblyInfo.cs | 48 ++++++++++ .../source/Transforms/EnumFields.xml | 18 ++++ .../source/Transforms/EnumMethods.xml | 18 ++++ .../source/Transforms/Metadata.generated.xml | 2 + .../source/Transforms/Metadata.xml | 12 +++ .../nuget/Xamarin.Firebase.Auth.Module.nuspec | 26 ++++++ .../source/Additions/AboutAdditions.txt | 48 ++++++++++ .../source/Firebase-Auth-Module.csproj | 68 ++++++++++++++ .../source/Jars/AboutJars.txt | 37 ++++++++ .../source/Properties/AssemblyInfo.cs | 48 ++++++++++ .../source/Transforms/EnumFields.xml | 18 ++++ .../source/Transforms/EnumMethods.xml | 18 ++++ .../source/Transforms/Metadata.generated.xml | 2 + .../source/Transforms/Metadata.xml | 12 +++ .../nuget/Xamarin.Firebase.Auth.nuspec | 29 ++++++ .../source/Additions/AboutAdditions.txt | 48 ++++++++++ firebase-auth/source/Firebase-Auth.csproj | 90 +++++++++++++++++++ firebase-auth/source/Jars/AboutJars.txt | 37 ++++++++ .../source/Properties/AssemblyInfo.cs | 48 ++++++++++ .../source/Transforms/EnumFields.xml | 18 ++++ .../source/Transforms/EnumMethods.xml | 18 ++++ .../source/Transforms/Metadata.generated.xml | 2 + firebase-auth/source/Transforms/Metadata.xml | 12 +++ 27 files changed, 876 insertions(+) create mode 100644 firebase-auth-common/nuget/Xamarin.Firebase.Auth.Common.nuspec create mode 100644 firebase-auth-common/source/Additions/AboutAdditions.txt create mode 100644 firebase-auth-common/source/Firebase-Auth-Common.csproj create mode 100644 firebase-auth-common/source/Jars/AboutJars.txt create mode 100644 firebase-auth-common/source/Properties/AssemblyInfo.cs create mode 100644 firebase-auth-common/source/Transforms/EnumFields.xml create mode 100644 firebase-auth-common/source/Transforms/EnumMethods.xml create mode 100644 firebase-auth-common/source/Transforms/Metadata.generated.xml create mode 100644 firebase-auth-common/source/Transforms/Metadata.xml create mode 100644 firebase-auth-module/nuget/Xamarin.Firebase.Auth.Module.nuspec create mode 100644 firebase-auth-module/source/Additions/AboutAdditions.txt create mode 100644 firebase-auth-module/source/Firebase-Auth-Module.csproj create mode 100644 firebase-auth-module/source/Jars/AboutJars.txt create mode 100644 firebase-auth-module/source/Properties/AssemblyInfo.cs create mode 100644 firebase-auth-module/source/Transforms/EnumFields.xml create mode 100644 firebase-auth-module/source/Transforms/EnumMethods.xml create mode 100644 firebase-auth-module/source/Transforms/Metadata.generated.xml create mode 100644 firebase-auth-module/source/Transforms/Metadata.xml create mode 100644 firebase-auth/nuget/Xamarin.Firebase.Auth.nuspec create mode 100644 firebase-auth/source/Additions/AboutAdditions.txt create mode 100644 firebase-auth/source/Firebase-Auth.csproj create mode 100644 firebase-auth/source/Jars/AboutJars.txt create mode 100644 firebase-auth/source/Properties/AssemblyInfo.cs create mode 100644 firebase-auth/source/Transforms/EnumFields.xml create mode 100644 firebase-auth/source/Transforms/EnumMethods.xml create mode 100644 firebase-auth/source/Transforms/Metadata.generated.xml create mode 100644 firebase-auth/source/Transforms/Metadata.xml diff --git a/firebase-auth-common/nuget/Xamarin.Firebase.Auth.Common.nuspec b/firebase-auth-common/nuget/Xamarin.Firebase.Auth.Common.nuspec new file mode 100644 index 000000000..6d2d7fe94 --- /dev/null +++ b/firebase-auth-common/nuget/Xamarin.Firebase.Auth.Common.nuspec @@ -0,0 +1,28 @@ + + + + Xamarin.Firebase.Auth.Common + Xamarin Firebase - Auth Common + $version$ + Xamarin Inc. + Xamarin Inc. + true + Xamarin.Android Bindings for Firebase - Auth Common + + Xamarin.Android Bindings for Firebase - Auth Common + + Copyright 2013-2016 + https://github.com/xamarin/GooglePlayServicesComponents/ + https://github.com/xamarin/GooglePlayServicesComponents/blob/master/LICENSE.md + https://xamarin-component-icons.s3.amazonaws.com/Xamarin.Firebase.Auth.Common.png + + + + + + + + + + + diff --git a/firebase-auth-common/source/Additions/AboutAdditions.txt b/firebase-auth-common/source/Additions/AboutAdditions.txt new file mode 100644 index 000000000..c511f1d4e --- /dev/null +++ b/firebase-auth-common/source/Additions/AboutAdditions.txt @@ -0,0 +1,48 @@ +Additions allow you to add arbitrary C# to the generated classes +before they are compiled. This can be helpful for providing convenience +methods or adding pure C# classes. + +== Adding Methods to Generated Classes == + +Let's say the library being bound has a Rectangle class with a constructor +that takes an x and y position, and a width and length size. It will look like +this: + +public partial class Rectangle +{ + public Rectangle (int x, int y, int width, int height) + { + // JNI bindings + } +} + +Imagine we want to add a constructor to this class that takes a Point and +Size structure instead of 4 ints. We can add a new file called Rectangle.cs +with a partial class containing our new method: + +public partial class Rectangle +{ + public Rectangle (Point location, Size size) : + this (location.X, location.Y, size.Width, size.Height) + { + } +} + +At compile time, the additions class will be added to the generated class +and the final assembly will a Rectangle class with both constructors. + + +== Adding C# Classes == + +Another thing that can be done is adding fully C# managed classes to the +generated library. In the above example, let's assume that there isn't a +Point class available in Java or our library. The one we create doesn't need +to interact with Java, so we'll create it like a normal class in C#. + +By adding a Point.cs file with this class, it will end up in the binding library: + +public class Point +{ + public int X { get; set; } + public int Y { get; set; } +} diff --git a/firebase-auth-common/source/Firebase-Auth-Common.csproj b/firebase-auth-common/source/Firebase-Auth-Common.csproj new file mode 100644 index 000000000..c05e6b1da --- /dev/null +++ b/firebase-auth-common/source/Firebase-Auth-Common.csproj @@ -0,0 +1,86 @@ + + + + Debug + AnyCPU + {EFBA0AD7-5A72-4C68-AF49-83D382785DCF};{10368E6C-D01B-4462-8E8B-01FC667A7035};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + {F53B34FB-4BBC-4314-8D8A-1F0CD959E83F} + Library + Xamarin.Firebase.Auth.Common + Resources + Assets + False + Xamarin.Firebase.Auth.Common + v4.1 + -XX:-UseSplitVerifier + ..\..\externals\docs\reference + 8.0.30703 + 2.0 + + + true + full + false + bin\Debug + DEBUG; + prompt + 4 + None + false + + + full + true + bin\Release + prompt + 4 + false + false + + + + + + + + + + + Properties\GpsConsts.cs + + + + + + + + + + + + + + + {6A38FACF-F0C5-4A49-8A8A-7CE6634207CE} + Basement + + + {3F6BAE25-ADEB-468C-8384-AD655623C341} + Base + + + {865652D3-8D1A-4779-92FC-4C54719286B7} + Firebase-Common + + + {7DA24DFC-EF53-4C06-AB7A-FF6BEF513A1B} + Firebase-Auth-Module + + + + + + Jars\firebase-auth-common.jar + + + diff --git a/firebase-auth-common/source/Jars/AboutJars.txt b/firebase-auth-common/source/Jars/AboutJars.txt new file mode 100644 index 000000000..320a154be --- /dev/null +++ b/firebase-auth-common/source/Jars/AboutJars.txt @@ -0,0 +1,37 @@ +This directory is for Android .jars. + +There are 4 types of jars that are supported: + +== Input Jar and Embedded Jar == + +This is the jar that bindings should be generated for. + +For example, if you were binding the Google Maps library, this would +be Google's "maps.jar". + +The difference between EmbeddedJar and InputJar is, EmbeddedJar is to be +embedded in the resulting dll as EmbeddedResource, while InputJar is not. +There are couple of reasons you wouldn't like to embed the target jar +in your dll (the ones that could be internally loaded by +feature e.g. maps.jar, or you cannot embed jars that are under some +proprietary license). + +Set the build action for these jars in the properties page to "InputJar". + + +== Reference Jar and Embedded Reference Jar == + +These are jars that are referenced by the input jar. C# bindings will +not be created for these jars. These jars will be used to resolve +types used by the input jar. + +NOTE: Do not add "android.jar" as a reference jar. It will be added automatically +based on the Target Framework selected. + +Set the build action for these jars in the properties page to "ReferenceJar". + +"EmbeddedJar" works like "ReferenceJar", but like "EmbeddedJar", it is +embedded in your dll. But at application build time, they are not included +in the final apk, like ReferenceJar files. + + diff --git a/firebase-auth-common/source/Properties/AssemblyInfo.cs b/firebase-auth-common/source/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..54f785276 --- /dev/null +++ b/firebase-auth-common/source/Properties/AssemblyInfo.cs @@ -0,0 +1,48 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using Android.App; + +// Information about this assembly is defined by the following attributes. +// Change them to the values specific to your project. + +[assembly: AssemblyTitle ("Xamarin.Firebase.Auth.Common")] +[assembly: AssemblyDescription ("")] +[assembly: AssemblyConfiguration ("")] +[assembly: AssemblyCompany ("Xamarin")] +[assembly: AssemblyProduct ("")] +[assembly: AssemblyCopyright ("Xamarin")] +[assembly: AssemblyTrademark ("")] +[assembly: AssemblyCulture ("")] + +// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}". +// The form "{Major}.{Minor}.*" will automatically update the build and revision, +// and "{Major}.{Minor}.{Build}.*" will update just the revision. + +[assembly: AssemblyVersion ("1.0.0")] + +// The following attributes are used to specify the signing key for the assembly, +// if desired. See the Mono documentation for more information about signing. + +//[assembly: AssemblyDelaySign(false)] +//[assembly: AssemblyKeyFile("")] + +[assembly: Java.Interop.JavaLibraryReference ("classes.jar", + PackageName = __Consts.PackageName, + SourceUrl = __FbConsts.Url, + EmbeddedArchive = __Consts.AarPath, + Version = __FbConsts.Version)] +// AppCompat-v7 resources +[assembly: Android.IncludeAndroidResourcesFromAttribute ("./", + PackageName = __Consts.PackageName, + SourceUrl = __FbConsts.Url, + EmbeddedArchive = __Consts.AarPath, + Version = __FbConsts.Version)] + +// Google Addon feed with GPS in it: +// https://dl-ssl.google.com/android/repository/addon.xml + +static class __Consts { + public const string PackageName = "Firebase Auth Common"; + public const string AarPath = "m2repository/com/google/firebase/firebase-auth-common/" + __FbConsts.Version + "/firebase-auth-common-" + __FbConsts.Version + ".aar"; +} + \ No newline at end of file diff --git a/firebase-auth-common/source/Transforms/EnumFields.xml b/firebase-auth-common/source/Transforms/EnumFields.xml new file mode 100644 index 000000000..e9af0eeb3 --- /dev/null +++ b/firebase-auth-common/source/Transforms/EnumFields.xml @@ -0,0 +1,18 @@ + + + diff --git a/firebase-auth-common/source/Transforms/EnumMethods.xml b/firebase-auth-common/source/Transforms/EnumMethods.xml new file mode 100644 index 000000000..2efa81467 --- /dev/null +++ b/firebase-auth-common/source/Transforms/EnumMethods.xml @@ -0,0 +1,18 @@ + + + diff --git a/firebase-auth-common/source/Transforms/Metadata.generated.xml b/firebase-auth-common/source/Transforms/Metadata.generated.xml new file mode 100644 index 000000000..26c2f6238 --- /dev/null +++ b/firebase-auth-common/source/Transforms/Metadata.generated.xml @@ -0,0 +1,2 @@ + + diff --git a/firebase-auth-common/source/Transforms/Metadata.xml b/firebase-auth-common/source/Transforms/Metadata.xml new file mode 100644 index 000000000..b5a4ce2af --- /dev/null +++ b/firebase-auth-common/source/Transforms/Metadata.xml @@ -0,0 +1,12 @@ + + + + Firebase.Auth + + + + + + + + diff --git a/firebase-auth-module/nuget/Xamarin.Firebase.Auth.Module.nuspec b/firebase-auth-module/nuget/Xamarin.Firebase.Auth.Module.nuspec new file mode 100644 index 000000000..3c7d4564e --- /dev/null +++ b/firebase-auth-module/nuget/Xamarin.Firebase.Auth.Module.nuspec @@ -0,0 +1,26 @@ + + + + Xamarin.Firebase.Auth.Module + Xamarin Firebase - Auth Module + $version$ + Xamarin Inc. + Xamarin Inc. + true + Xamarin.Android Bindings for Firebase - Auth Module + + Xamarin.Android Bindings for Firebase - Auth Module + + Copyright 2013-2016 + https://github.com/xamarin/GooglePlayServicesComponents/ + https://github.com/xamarin/GooglePlayServicesComponents/blob/master/LICENSE.md + https://xamarin-component-icons.s3.amazonaws.com/Xamarin.Firebase.Auth.Module.png + + + + + + + + + diff --git a/firebase-auth-module/source/Additions/AboutAdditions.txt b/firebase-auth-module/source/Additions/AboutAdditions.txt new file mode 100644 index 000000000..c511f1d4e --- /dev/null +++ b/firebase-auth-module/source/Additions/AboutAdditions.txt @@ -0,0 +1,48 @@ +Additions allow you to add arbitrary C# to the generated classes +before they are compiled. This can be helpful for providing convenience +methods or adding pure C# classes. + +== Adding Methods to Generated Classes == + +Let's say the library being bound has a Rectangle class with a constructor +that takes an x and y position, and a width and length size. It will look like +this: + +public partial class Rectangle +{ + public Rectangle (int x, int y, int width, int height) + { + // JNI bindings + } +} + +Imagine we want to add a constructor to this class that takes a Point and +Size structure instead of 4 ints. We can add a new file called Rectangle.cs +with a partial class containing our new method: + +public partial class Rectangle +{ + public Rectangle (Point location, Size size) : + this (location.X, location.Y, size.Width, size.Height) + { + } +} + +At compile time, the additions class will be added to the generated class +and the final assembly will a Rectangle class with both constructors. + + +== Adding C# Classes == + +Another thing that can be done is adding fully C# managed classes to the +generated library. In the above example, let's assume that there isn't a +Point class available in Java or our library. The one we create doesn't need +to interact with Java, so we'll create it like a normal class in C#. + +By adding a Point.cs file with this class, it will end up in the binding library: + +public class Point +{ + public int X { get; set; } + public int Y { get; set; } +} diff --git a/firebase-auth-module/source/Firebase-Auth-Module.csproj b/firebase-auth-module/source/Firebase-Auth-Module.csproj new file mode 100644 index 000000000..8b81d22e7 --- /dev/null +++ b/firebase-auth-module/source/Firebase-Auth-Module.csproj @@ -0,0 +1,68 @@ + + + + Debug + AnyCPU + {EFBA0AD7-5A72-4C68-AF49-83D382785DCF};{10368E6C-D01B-4462-8E8B-01FC667A7035};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + {7DA24DFC-EF53-4C06-AB7A-FF6BEF513A1B} + Library + Xamarin.Firebase.Auth.Module + Resources + Assets + False + Xamarin.Firebase.Auth.Module + v4.1 + -XX:-UseSplitVerifier + ..\..\externals\docs\reference + 8.0.30703 + 2.0 + + + true + full + false + bin\Debug + DEBUG; + prompt + 4 + None + false + + + full + true + bin\Release + prompt + 4 + false + false + + + + + + + + + + + Properties\GpsConsts.cs + + + + + + + + + + + + + + + + Jars\firebase-auth-module.jar + + + diff --git a/firebase-auth-module/source/Jars/AboutJars.txt b/firebase-auth-module/source/Jars/AboutJars.txt new file mode 100644 index 000000000..320a154be --- /dev/null +++ b/firebase-auth-module/source/Jars/AboutJars.txt @@ -0,0 +1,37 @@ +This directory is for Android .jars. + +There are 4 types of jars that are supported: + +== Input Jar and Embedded Jar == + +This is the jar that bindings should be generated for. + +For example, if you were binding the Google Maps library, this would +be Google's "maps.jar". + +The difference between EmbeddedJar and InputJar is, EmbeddedJar is to be +embedded in the resulting dll as EmbeddedResource, while InputJar is not. +There are couple of reasons you wouldn't like to embed the target jar +in your dll (the ones that could be internally loaded by +feature e.g. maps.jar, or you cannot embed jars that are under some +proprietary license). + +Set the build action for these jars in the properties page to "InputJar". + + +== Reference Jar and Embedded Reference Jar == + +These are jars that are referenced by the input jar. C# bindings will +not be created for these jars. These jars will be used to resolve +types used by the input jar. + +NOTE: Do not add "android.jar" as a reference jar. It will be added automatically +based on the Target Framework selected. + +Set the build action for these jars in the properties page to "ReferenceJar". + +"EmbeddedJar" works like "ReferenceJar", but like "EmbeddedJar", it is +embedded in your dll. But at application build time, they are not included +in the final apk, like ReferenceJar files. + + diff --git a/firebase-auth-module/source/Properties/AssemblyInfo.cs b/firebase-auth-module/source/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..0d45d7afd --- /dev/null +++ b/firebase-auth-module/source/Properties/AssemblyInfo.cs @@ -0,0 +1,48 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using Android.App; + +// Information about this assembly is defined by the following attributes. +// Change them to the values specific to your project. + +[assembly: AssemblyTitle ("Xamarin.Firebase.Auth.Module")] +[assembly: AssemblyDescription ("")] +[assembly: AssemblyConfiguration ("")] +[assembly: AssemblyCompany ("Xamarin")] +[assembly: AssemblyProduct ("")] +[assembly: AssemblyCopyright ("Xamarin")] +[assembly: AssemblyTrademark ("")] +[assembly: AssemblyCulture ("")] + +// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}". +// The form "{Major}.{Minor}.*" will automatically update the build and revision, +// and "{Major}.{Minor}.{Build}.*" will update just the revision. + +[assembly: AssemblyVersion ("1.0.0")] + +// The following attributes are used to specify the signing key for the assembly, +// if desired. See the Mono documentation for more information about signing. + +//[assembly: AssemblyDelaySign(false)] +//[assembly: AssemblyKeyFile("")] + +[assembly: Java.Interop.JavaLibraryReference ("classes.jar", + PackageName = __Consts.PackageName, + SourceUrl = __FbConsts.Url, + EmbeddedArchive = __Consts.AarPath, + Version = __FbConsts.Version)] +// AppCompat-v7 resources +[assembly: Android.IncludeAndroidResourcesFromAttribute ("./", + PackageName = __Consts.PackageName, + SourceUrl = __FbConsts.Url, + EmbeddedArchive = __Consts.AarPath, + Version = __FbConsts.Version)] + +// Google Addon feed with GPS in it: +// https://dl-ssl.google.com/android/repository/addon.xml + +static class __Consts { + public const string PackageName = "Firebase Auth Module"; + public const string AarPath = "m2repository/com/google/firebase/firebase-auth-module/" + __FbConsts.Version + "/firebase-auth-module-" + __FbConsts.Version + ".aar"; +} + \ No newline at end of file diff --git a/firebase-auth-module/source/Transforms/EnumFields.xml b/firebase-auth-module/source/Transforms/EnumFields.xml new file mode 100644 index 000000000..e9af0eeb3 --- /dev/null +++ b/firebase-auth-module/source/Transforms/EnumFields.xml @@ -0,0 +1,18 @@ + + + diff --git a/firebase-auth-module/source/Transforms/EnumMethods.xml b/firebase-auth-module/source/Transforms/EnumMethods.xml new file mode 100644 index 000000000..2efa81467 --- /dev/null +++ b/firebase-auth-module/source/Transforms/EnumMethods.xml @@ -0,0 +1,18 @@ + + + diff --git a/firebase-auth-module/source/Transforms/Metadata.generated.xml b/firebase-auth-module/source/Transforms/Metadata.generated.xml new file mode 100644 index 000000000..26c2f6238 --- /dev/null +++ b/firebase-auth-module/source/Transforms/Metadata.generated.xml @@ -0,0 +1,2 @@ + + diff --git a/firebase-auth-module/source/Transforms/Metadata.xml b/firebase-auth-module/source/Transforms/Metadata.xml new file mode 100644 index 000000000..1853e8b8a --- /dev/null +++ b/firebase-auth-module/source/Transforms/Metadata.xml @@ -0,0 +1,12 @@ + + + + Firebase.Auth.Api.Model + + + + + + + + diff --git a/firebase-auth/nuget/Xamarin.Firebase.Auth.nuspec b/firebase-auth/nuget/Xamarin.Firebase.Auth.nuspec new file mode 100644 index 000000000..60bb7af38 --- /dev/null +++ b/firebase-auth/nuget/Xamarin.Firebase.Auth.nuspec @@ -0,0 +1,29 @@ + + + + Xamarin.Firebase.Auth + Xamarin Firebase - Auth + $version$ + Xamarin Inc. + Xamarin Inc. + true + Xamarin.Android Bindings for Firebase - Auth + + Xamarin.Android Bindings for Firebase - Auth + + Copyright 2013-2016 + https://github.com/xamarin/GooglePlayServicesComponents/ + https://github.com/xamarin/GooglePlayServicesComponents/blob/master/LICENSE.md + https://xamarin-component-icons.s3.amazonaws.com/Xamarin.Firebase.Auth.png + + + + + + + + + + + + diff --git a/firebase-auth/source/Additions/AboutAdditions.txt b/firebase-auth/source/Additions/AboutAdditions.txt new file mode 100644 index 000000000..c511f1d4e --- /dev/null +++ b/firebase-auth/source/Additions/AboutAdditions.txt @@ -0,0 +1,48 @@ +Additions allow you to add arbitrary C# to the generated classes +before they are compiled. This can be helpful for providing convenience +methods or adding pure C# classes. + +== Adding Methods to Generated Classes == + +Let's say the library being bound has a Rectangle class with a constructor +that takes an x and y position, and a width and length size. It will look like +this: + +public partial class Rectangle +{ + public Rectangle (int x, int y, int width, int height) + { + // JNI bindings + } +} + +Imagine we want to add a constructor to this class that takes a Point and +Size structure instead of 4 ints. We can add a new file called Rectangle.cs +with a partial class containing our new method: + +public partial class Rectangle +{ + public Rectangle (Point location, Size size) : + this (location.X, location.Y, size.Width, size.Height) + { + } +} + +At compile time, the additions class will be added to the generated class +and the final assembly will a Rectangle class with both constructors. + + +== Adding C# Classes == + +Another thing that can be done is adding fully C# managed classes to the +generated library. In the above example, let's assume that there isn't a +Point class available in Java or our library. The one we create doesn't need +to interact with Java, so we'll create it like a normal class in C#. + +By adding a Point.cs file with this class, it will end up in the binding library: + +public class Point +{ + public int X { get; set; } + public int Y { get; set; } +} diff --git a/firebase-auth/source/Firebase-Auth.csproj b/firebase-auth/source/Firebase-Auth.csproj new file mode 100644 index 000000000..ea18d64e8 --- /dev/null +++ b/firebase-auth/source/Firebase-Auth.csproj @@ -0,0 +1,90 @@ + + + + Debug + AnyCPU + {EFBA0AD7-5A72-4C68-AF49-83D382785DCF};{10368E6C-D01B-4462-8E8B-01FC667A7035};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + {62946D89-B6B1-4A38-A04D-C20912087EFD} + Library + Xamarin.Firebase.Auth + Resources + Assets + False + Xamarin.Firebase.Auth + v4.1 + -XX:-UseSplitVerifier + ..\..\externals\docs\reference + 8.0.30703 + 2.0 + + + true + full + false + bin\Debug + DEBUG; + prompt + 4 + None + false + + + full + true + bin\Release + prompt + 4 + false + false + + + + + + + + + + + Properties\GpsConsts.cs + + + + + + + + + + + + + + + {6A38FACF-F0C5-4A49-8A8A-7CE6634207CE} + Basement + + + {3F6BAE25-ADEB-468C-8384-AD655623C341} + Base + + + {865652D3-8D1A-4779-92FC-4C54719286B7} + Firebase-Common + + + {F53B34FB-4BBC-4314-8D8A-1F0CD959E83F} + Firebase-Auth-Common + + + {53F87D88-8871-41A2-9F81-B79AB02FEC24} + Tasks + + + + + + Jars\firebase-auth.jar + + + diff --git a/firebase-auth/source/Jars/AboutJars.txt b/firebase-auth/source/Jars/AboutJars.txt new file mode 100644 index 000000000..320a154be --- /dev/null +++ b/firebase-auth/source/Jars/AboutJars.txt @@ -0,0 +1,37 @@ +This directory is for Android .jars. + +There are 4 types of jars that are supported: + +== Input Jar and Embedded Jar == + +This is the jar that bindings should be generated for. + +For example, if you were binding the Google Maps library, this would +be Google's "maps.jar". + +The difference between EmbeddedJar and InputJar is, EmbeddedJar is to be +embedded in the resulting dll as EmbeddedResource, while InputJar is not. +There are couple of reasons you wouldn't like to embed the target jar +in your dll (the ones that could be internally loaded by +feature e.g. maps.jar, or you cannot embed jars that are under some +proprietary license). + +Set the build action for these jars in the properties page to "InputJar". + + +== Reference Jar and Embedded Reference Jar == + +These are jars that are referenced by the input jar. C# bindings will +not be created for these jars. These jars will be used to resolve +types used by the input jar. + +NOTE: Do not add "android.jar" as a reference jar. It will be added automatically +based on the Target Framework selected. + +Set the build action for these jars in the properties page to "ReferenceJar". + +"EmbeddedJar" works like "ReferenceJar", but like "EmbeddedJar", it is +embedded in your dll. But at application build time, they are not included +in the final apk, like ReferenceJar files. + + diff --git a/firebase-auth/source/Properties/AssemblyInfo.cs b/firebase-auth/source/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..da7f068d1 --- /dev/null +++ b/firebase-auth/source/Properties/AssemblyInfo.cs @@ -0,0 +1,48 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using Android.App; + +// Information about this assembly is defined by the following attributes. +// Change them to the values specific to your project. + +[assembly: AssemblyTitle ("Xamarin.Firebase.Auth")] +[assembly: AssemblyDescription ("")] +[assembly: AssemblyConfiguration ("")] +[assembly: AssemblyCompany ("Xamarin")] +[assembly: AssemblyProduct ("")] +[assembly: AssemblyCopyright ("Xamarin")] +[assembly: AssemblyTrademark ("")] +[assembly: AssemblyCulture ("")] + +// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}". +// The form "{Major}.{Minor}.*" will automatically update the build and revision, +// and "{Major}.{Minor}.{Build}.*" will update just the revision. + +[assembly: AssemblyVersion ("1.0.0")] + +// The following attributes are used to specify the signing key for the assembly, +// if desired. See the Mono documentation for more information about signing. + +//[assembly: AssemblyDelaySign(false)] +//[assembly: AssemblyKeyFile("")] + +[assembly: Java.Interop.JavaLibraryReference ("classes.jar", + PackageName = __Consts.PackageName, + SourceUrl = __FbConsts.Url, + EmbeddedArchive = __Consts.AarPath, + Version = __FbConsts.Version)] +// AppCompat-v7 resources +[assembly: Android.IncludeAndroidResourcesFromAttribute ("./", + PackageName = __Consts.PackageName, + SourceUrl = __FbConsts.Url, + EmbeddedArchive = __Consts.AarPath, + Version = __FbConsts.Version)] + +// Google Addon feed with GPS in it: +// https://dl-ssl.google.com/android/repository/addon.xml + +static class __Consts { + public const string PackageName = "Firebase Auth"; + public const string AarPath = "m2repository/com/google/firebase/firebase-auth/" + __FbConsts.Version + "/firebase-auth-" + __FbConsts.Version + ".aar"; +} + \ No newline at end of file diff --git a/firebase-auth/source/Transforms/EnumFields.xml b/firebase-auth/source/Transforms/EnumFields.xml new file mode 100644 index 000000000..e9af0eeb3 --- /dev/null +++ b/firebase-auth/source/Transforms/EnumFields.xml @@ -0,0 +1,18 @@ + + + diff --git a/firebase-auth/source/Transforms/EnumMethods.xml b/firebase-auth/source/Transforms/EnumMethods.xml new file mode 100644 index 000000000..2efa81467 --- /dev/null +++ b/firebase-auth/source/Transforms/EnumMethods.xml @@ -0,0 +1,18 @@ + + + diff --git a/firebase-auth/source/Transforms/Metadata.generated.xml b/firebase-auth/source/Transforms/Metadata.generated.xml new file mode 100644 index 000000000..26c2f6238 --- /dev/null +++ b/firebase-auth/source/Transforms/Metadata.generated.xml @@ -0,0 +1,2 @@ + + diff --git a/firebase-auth/source/Transforms/Metadata.xml b/firebase-auth/source/Transforms/Metadata.xml new file mode 100644 index 000000000..b5a4ce2af --- /dev/null +++ b/firebase-auth/source/Transforms/Metadata.xml @@ -0,0 +1,12 @@ + + + + Firebase.Auth + + + + + + + + From a7839cbe2fd91e7e7cf51f7ed2c1db30eae72fdd Mon Sep 17 00:00:00 2001 From: Redth Date: Wed, 1 Jun 2016 13:58:39 -0400 Subject: [PATCH 036/178] Added firebase-iid binding --- .../nuget/Xamarin.Firebase.Iid.nuspec | 26 ++++++ .../source/Additions/AboutAdditions.txt | 48 +++++++++++ firebase-iid/source/Additions/Manifest.cs | 63 +++++++++++++++ firebase-iid/source/Firebase-Iid.csproj | 79 +++++++++++++++++++ firebase-iid/source/Jars/AboutJars.txt | 37 +++++++++ .../source/Properties/AssemblyInfo.cs | 48 +++++++++++ firebase-iid/source/Transforms/EnumFields.xml | 18 +++++ .../source/Transforms/EnumMethods.xml | 18 +++++ .../source/Transforms/Metadata.generated.xml | 2 + firebase-iid/source/Transforms/Metadata.xml | 13 +++ 10 files changed, 352 insertions(+) create mode 100644 firebase-iid/nuget/Xamarin.Firebase.Iid.nuspec create mode 100644 firebase-iid/source/Additions/AboutAdditions.txt create mode 100644 firebase-iid/source/Additions/Manifest.cs create mode 100644 firebase-iid/source/Firebase-Iid.csproj create mode 100644 firebase-iid/source/Jars/AboutJars.txt create mode 100644 firebase-iid/source/Properties/AssemblyInfo.cs create mode 100644 firebase-iid/source/Transforms/EnumFields.xml create mode 100644 firebase-iid/source/Transforms/EnumMethods.xml create mode 100644 firebase-iid/source/Transforms/Metadata.generated.xml create mode 100644 firebase-iid/source/Transforms/Metadata.xml diff --git a/firebase-iid/nuget/Xamarin.Firebase.Iid.nuspec b/firebase-iid/nuget/Xamarin.Firebase.Iid.nuspec new file mode 100644 index 000000000..abafd7b9d --- /dev/null +++ b/firebase-iid/nuget/Xamarin.Firebase.Iid.nuspec @@ -0,0 +1,26 @@ + + + + Xamarin.Firebase.Iid + Xamarin Firebase - Iid + $version$ + Xamarin Inc. + Xamarin Inc. + true + Xamarin.Android Bindings for Firebase - Iid + + Xamarin.Android Bindings for Firebase - Iid + + Copyright 2013-2016 + https://github.com/xamarin/GooglePlayServicesComponents/ + https://github.com/xamarin/GooglePlayServicesComponents/blob/master/LICENSE.md + https://xamarin-component-icons.s3.amazonaws.com/Xamarin.Firebase.Iid.png + + + + + + + + + diff --git a/firebase-iid/source/Additions/AboutAdditions.txt b/firebase-iid/source/Additions/AboutAdditions.txt new file mode 100644 index 000000000..c511f1d4e --- /dev/null +++ b/firebase-iid/source/Additions/AboutAdditions.txt @@ -0,0 +1,48 @@ +Additions allow you to add arbitrary C# to the generated classes +before they are compiled. This can be helpful for providing convenience +methods or adding pure C# classes. + +== Adding Methods to Generated Classes == + +Let's say the library being bound has a Rectangle class with a constructor +that takes an x and y position, and a width and length size. It will look like +this: + +public partial class Rectangle +{ + public Rectangle (int x, int y, int width, int height) + { + // JNI bindings + } +} + +Imagine we want to add a constructor to this class that takes a Point and +Size structure instead of 4 ints. We can add a new file called Rectangle.cs +with a partial class containing our new method: + +public partial class Rectangle +{ + public Rectangle (Point location, Size size) : + this (location.X, location.Y, size.Width, size.Height) + { + } +} + +At compile time, the additions class will be added to the generated class +and the final assembly will a Rectangle class with both constructors. + + +== Adding C# Classes == + +Another thing that can be done is adding fully C# managed classes to the +generated library. In the above example, let's assume that there isn't a +Point class available in Java or our library. The one we create doesn't need +to interact with Java, so we'll create it like a normal class in C#. + +By adding a Point.cs file with this class, it will end up in the binding library: + +public class Point +{ + public int X { get; set; } + public int Y { get; set; } +} diff --git a/firebase-iid/source/Additions/Manifest.cs b/firebase-iid/source/Additions/Manifest.cs new file mode 100644 index 000000000..43393a55a --- /dev/null +++ b/firebase-iid/source/Additions/Manifest.cs @@ -0,0 +1,63 @@ +using System; +using Android.App; +using Android.Content; + +[assembly: UsesPermission (Android.Manifest.Permission.AccessNetworkState)] +[assembly: UsesPermission (Android.Manifest.Permission.Internet)] +[assembly: UsesPermission (Android.Manifest.Permission.WakeLock)] +[assembly: UsesPermission ("com.google.android.c2dm.permission.RECEIVE")] + +// +// +[assembly: Permission (Name="${applicationId}.permission.C2D_MESSAGE", ProtectionLevel=Android.Content.PM.Protection.Signature)] +[assembly: UsesPermission ("${applicationId}.permission.C2D_MESSAGE")] + +namespace Firebase.Iid +{ + // + // + // + // + // + // + // + [BroadcastReceiver (Name="com.google.firebase.iid.FirebaseInstanceIdReceiver", + Exported=true, + Permission="com.google.android.c2dm.permission.SEND")] + [IntentFilter (new [] { "com.google.android.c2dm.intent.RECEIVE", "com.google.android.c2dm.intent.REGISTRATION" }, + Categories = new [] { "${applicationId}" })] + public partial class FirebaseInstanceIdReceiver + { + } + + // + // + [BroadcastReceiver (Name="com.google.firebase.iid.FirebaseInstanceIdInternalReceiver", + Exported=false)] + public partial class FirebaseInstanceIdInternalReceiver + { + } + + // + // + // + // + // + // + [Service (Name="com.google.firebase.iid.FirebaseInstanceIdService", + Exported=true)] + [IntentFilter (new [] { "com.google.firebase.INSTANCE_ID_EVENT" }, Priority=-500)] + public partial class FirebaseInstanceIdService + { + } +} + diff --git a/firebase-iid/source/Firebase-Iid.csproj b/firebase-iid/source/Firebase-Iid.csproj new file mode 100644 index 000000000..b2ce31417 --- /dev/null +++ b/firebase-iid/source/Firebase-Iid.csproj @@ -0,0 +1,79 @@ + + + + Debug + AnyCPU + {EFBA0AD7-5A72-4C68-AF49-83D382785DCF};{10368E6C-D01B-4462-8E8B-01FC667A7035};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + {B28F65D1-D8DD-45E8-9DD7-74A3BE40B4CE} + Library + Xamarin.Firebase.Iid + Resources + Assets + False + Xamarin.Firebase.Iid + v4.1 + -XX:-UseSplitVerifier + ..\..\externals\docs\reference + 8.0.30703 + 2.0 + + + true + full + false + bin\Debug + DEBUG; + prompt + 4 + None + false + + + full + true + bin\Release + prompt + 4 + false + false + + + + + + + + + + + Properties\GpsConsts.cs + + + + + + + + + + + + + + + + {6A38FACF-F0C5-4A49-8A8A-7CE6634207CE} + Basement + + + {865652D3-8D1A-4779-92FC-4C54719286B7} + Firebase-Common + + + + + + Jars\firebase-iid.jar + + + diff --git a/firebase-iid/source/Jars/AboutJars.txt b/firebase-iid/source/Jars/AboutJars.txt new file mode 100644 index 000000000..320a154be --- /dev/null +++ b/firebase-iid/source/Jars/AboutJars.txt @@ -0,0 +1,37 @@ +This directory is for Android .jars. + +There are 4 types of jars that are supported: + +== Input Jar and Embedded Jar == + +This is the jar that bindings should be generated for. + +For example, if you were binding the Google Maps library, this would +be Google's "maps.jar". + +The difference between EmbeddedJar and InputJar is, EmbeddedJar is to be +embedded in the resulting dll as EmbeddedResource, while InputJar is not. +There are couple of reasons you wouldn't like to embed the target jar +in your dll (the ones that could be internally loaded by +feature e.g. maps.jar, or you cannot embed jars that are under some +proprietary license). + +Set the build action for these jars in the properties page to "InputJar". + + +== Reference Jar and Embedded Reference Jar == + +These are jars that are referenced by the input jar. C# bindings will +not be created for these jars. These jars will be used to resolve +types used by the input jar. + +NOTE: Do not add "android.jar" as a reference jar. It will be added automatically +based on the Target Framework selected. + +Set the build action for these jars in the properties page to "ReferenceJar". + +"EmbeddedJar" works like "ReferenceJar", but like "EmbeddedJar", it is +embedded in your dll. But at application build time, they are not included +in the final apk, like ReferenceJar files. + + diff --git a/firebase-iid/source/Properties/AssemblyInfo.cs b/firebase-iid/source/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..5fdc0346a --- /dev/null +++ b/firebase-iid/source/Properties/AssemblyInfo.cs @@ -0,0 +1,48 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using Android.App; + +// Information about this assembly is defined by the following attributes. +// Change them to the values specific to your project. + +[assembly: AssemblyTitle ("Xamarin.Firebase.Iid")] +[assembly: AssemblyDescription ("")] +[assembly: AssemblyConfiguration ("")] +[assembly: AssemblyCompany ("Xamarin")] +[assembly: AssemblyProduct ("")] +[assembly: AssemblyCopyright ("Xamarin")] +[assembly: AssemblyTrademark ("")] +[assembly: AssemblyCulture ("")] + +// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}". +// The form "{Major}.{Minor}.*" will automatically update the build and revision, +// and "{Major}.{Minor}.{Build}.*" will update just the revision. + +[assembly: AssemblyVersion ("1.0.0")] + +// The following attributes are used to specify the signing key for the assembly, +// if desired. See the Mono documentation for more information about signing. + +//[assembly: AssemblyDelaySign(false)] +//[assembly: AssemblyKeyFile("")] + +[assembly: Java.Interop.JavaLibraryReference ("classes.jar", + PackageName = __Consts.PackageName, + SourceUrl = __FbConsts.Url, + EmbeddedArchive = __Consts.AarPath, + Version = __FbConsts.Version)] +// AppCompat-v7 resources +[assembly: Android.IncludeAndroidResourcesFromAttribute ("./", + PackageName = __Consts.PackageName, + SourceUrl = __FbConsts.Url, + EmbeddedArchive = __Consts.AarPath, + Version = __FbConsts.Version)] + +// Google Addon feed with GPS in it: +// https://dl-ssl.google.com/android/repository/addon.xml + +static class __Consts { + public const string PackageName = "Firebase Common"; + public const string AarPath = "m2repository/com/google/firebase/firebase-iid/" + __FbConsts.Version + "/firebase-iid-" + __FbConsts.Version + ".aar"; +} + \ No newline at end of file diff --git a/firebase-iid/source/Transforms/EnumFields.xml b/firebase-iid/source/Transforms/EnumFields.xml new file mode 100644 index 000000000..e9af0eeb3 --- /dev/null +++ b/firebase-iid/source/Transforms/EnumFields.xml @@ -0,0 +1,18 @@ + + + diff --git a/firebase-iid/source/Transforms/EnumMethods.xml b/firebase-iid/source/Transforms/EnumMethods.xml new file mode 100644 index 000000000..2efa81467 --- /dev/null +++ b/firebase-iid/source/Transforms/EnumMethods.xml @@ -0,0 +1,18 @@ + + + diff --git a/firebase-iid/source/Transforms/Metadata.generated.xml b/firebase-iid/source/Transforms/Metadata.generated.xml new file mode 100644 index 000000000..26c2f6238 --- /dev/null +++ b/firebase-iid/source/Transforms/Metadata.generated.xml @@ -0,0 +1,2 @@ + + diff --git a/firebase-iid/source/Transforms/Metadata.xml b/firebase-iid/source/Transforms/Metadata.xml new file mode 100644 index 000000000..24df6f944 --- /dev/null +++ b/firebase-iid/source/Transforms/Metadata.xml @@ -0,0 +1,13 @@ + + + + Firebase + Firebase.Iid + + + + + + + + From a221faabc705c130b0a2ab3d3709981b24324ba7 Mon Sep 17 00:00:00 2001 From: Redth Date: Wed, 1 Jun 2016 13:59:06 -0400 Subject: [PATCH 037/178] Added firebase-storage and firebase-storage-common bindings --- .../Xamarin.Firebase.Storage.Common.nuspec | 26 ++++++ .../source/Additions/AboutAdditions.txt | 48 ++++++++++ .../source/Firebase-Storage-Common.csproj | 78 ++++++++++++++++ .../source/Jars/AboutJars.txt | 37 ++++++++ .../source/Properties/AssemblyInfo.cs | 48 ++++++++++ .../source/Transforms/EnumFields.xml | 18 ++++ .../source/Transforms/EnumMethods.xml | 18 ++++ .../source/Transforms/Metadata.generated.xml | 2 + .../source/Transforms/Metadata.xml | 12 +++ .../nuget/Xamarin.Firebase.Storage.nuspec | 29 ++++++ .../source/Additions/AboutAdditions.txt | 48 ++++++++++ .../source/Additions/Additions.cs | 54 +++++++++++ .../source/Firebase-Storage.csproj | 91 +++++++++++++++++++ firebase-storage/source/Jars/AboutJars.txt | 37 ++++++++ .../source/Properties/AssemblyInfo.cs | 48 ++++++++++ .../source/Transforms/EnumFields.xml | 18 ++++ .../source/Transforms/EnumMethods.xml | 18 ++++ .../source/Transforms/Metadata.generated.xml | 2 + .../source/Transforms/Metadata.xml | 23 +++++ 19 files changed, 655 insertions(+) create mode 100644 firebase-storage-common/nuget/Xamarin.Firebase.Storage.Common.nuspec create mode 100644 firebase-storage-common/source/Additions/AboutAdditions.txt create mode 100644 firebase-storage-common/source/Firebase-Storage-Common.csproj create mode 100644 firebase-storage-common/source/Jars/AboutJars.txt create mode 100644 firebase-storage-common/source/Properties/AssemblyInfo.cs create mode 100644 firebase-storage-common/source/Transforms/EnumFields.xml create mode 100644 firebase-storage-common/source/Transforms/EnumMethods.xml create mode 100644 firebase-storage-common/source/Transforms/Metadata.generated.xml create mode 100644 firebase-storage-common/source/Transforms/Metadata.xml create mode 100644 firebase-storage/nuget/Xamarin.Firebase.Storage.nuspec create mode 100644 firebase-storage/source/Additions/AboutAdditions.txt create mode 100644 firebase-storage/source/Additions/Additions.cs create mode 100644 firebase-storage/source/Firebase-Storage.csproj create mode 100644 firebase-storage/source/Jars/AboutJars.txt create mode 100644 firebase-storage/source/Properties/AssemblyInfo.cs create mode 100644 firebase-storage/source/Transforms/EnumFields.xml create mode 100644 firebase-storage/source/Transforms/EnumMethods.xml create mode 100644 firebase-storage/source/Transforms/Metadata.generated.xml create mode 100644 firebase-storage/source/Transforms/Metadata.xml diff --git a/firebase-storage-common/nuget/Xamarin.Firebase.Storage.Common.nuspec b/firebase-storage-common/nuget/Xamarin.Firebase.Storage.Common.nuspec new file mode 100644 index 000000000..c6a80fd47 --- /dev/null +++ b/firebase-storage-common/nuget/Xamarin.Firebase.Storage.Common.nuspec @@ -0,0 +1,26 @@ + + + + Xamarin.Firebase.Storage.Common + Xamarin Firebase - Storage Common + $version$ + Xamarin Inc. + Xamarin Inc. + true + Xamarin.Android Bindings for Firebase - Storage Common + + Xamarin.Android Bindings for Firebase - Storage Common + + Copyright 2013-2016 + https://github.com/xamarin/GooglePlayServicesComponents/ + https://github.com/xamarin/GooglePlayServicesComponents/blob/master/LICENSE.md + https://xamarin-component-icons.s3.amazonaws.com/Xamarin.Firebase.Storage.Common.png + + + + + + + + + diff --git a/firebase-storage-common/source/Additions/AboutAdditions.txt b/firebase-storage-common/source/Additions/AboutAdditions.txt new file mode 100644 index 000000000..c511f1d4e --- /dev/null +++ b/firebase-storage-common/source/Additions/AboutAdditions.txt @@ -0,0 +1,48 @@ +Additions allow you to add arbitrary C# to the generated classes +before they are compiled. This can be helpful for providing convenience +methods or adding pure C# classes. + +== Adding Methods to Generated Classes == + +Let's say the library being bound has a Rectangle class with a constructor +that takes an x and y position, and a width and length size. It will look like +this: + +public partial class Rectangle +{ + public Rectangle (int x, int y, int width, int height) + { + // JNI bindings + } +} + +Imagine we want to add a constructor to this class that takes a Point and +Size structure instead of 4 ints. We can add a new file called Rectangle.cs +with a partial class containing our new method: + +public partial class Rectangle +{ + public Rectangle (Point location, Size size) : + this (location.X, location.Y, size.Width, size.Height) + { + } +} + +At compile time, the additions class will be added to the generated class +and the final assembly will a Rectangle class with both constructors. + + +== Adding C# Classes == + +Another thing that can be done is adding fully C# managed classes to the +generated library. In the above example, let's assume that there isn't a +Point class available in Java or our library. The one we create doesn't need +to interact with Java, so we'll create it like a normal class in C#. + +By adding a Point.cs file with this class, it will end up in the binding library: + +public class Point +{ + public int X { get; set; } + public int Y { get; set; } +} diff --git a/firebase-storage-common/source/Firebase-Storage-Common.csproj b/firebase-storage-common/source/Firebase-Storage-Common.csproj new file mode 100644 index 000000000..477f50224 --- /dev/null +++ b/firebase-storage-common/source/Firebase-Storage-Common.csproj @@ -0,0 +1,78 @@ + + + + Debug + AnyCPU + {EFBA0AD7-5A72-4C68-AF49-83D382785DCF};{10368E6C-D01B-4462-8E8B-01FC667A7035};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + {C360116C-0ED5-4E59-A974-E95F874B4398} + Library + Xamarin.Firebase.Storage.Common + Resources + Assets + False + Xamarin.Firebase.Storage.Common + v4.1 + -XX:-UseSplitVerifier + ..\..\externals\docs\reference + 8.0.30703 + 2.0 + + + true + full + false + bin\Debug + DEBUG; + prompt + 4 + None + false + + + full + true + bin\Release + prompt + 4 + false + false + + + + + + + + + + + Properties\GpsConsts.cs + + + + + + + + + + + + + + + {6A38FACF-F0C5-4A49-8A8A-7CE6634207CE} + Basement + + + {3F6BAE25-ADEB-468C-8384-AD655623C341} + Base + + + + + + Jars\firebase-storage-common.jar + + + diff --git a/firebase-storage-common/source/Jars/AboutJars.txt b/firebase-storage-common/source/Jars/AboutJars.txt new file mode 100644 index 000000000..320a154be --- /dev/null +++ b/firebase-storage-common/source/Jars/AboutJars.txt @@ -0,0 +1,37 @@ +This directory is for Android .jars. + +There are 4 types of jars that are supported: + +== Input Jar and Embedded Jar == + +This is the jar that bindings should be generated for. + +For example, if you were binding the Google Maps library, this would +be Google's "maps.jar". + +The difference between EmbeddedJar and InputJar is, EmbeddedJar is to be +embedded in the resulting dll as EmbeddedResource, while InputJar is not. +There are couple of reasons you wouldn't like to embed the target jar +in your dll (the ones that could be internally loaded by +feature e.g. maps.jar, or you cannot embed jars that are under some +proprietary license). + +Set the build action for these jars in the properties page to "InputJar". + + +== Reference Jar and Embedded Reference Jar == + +These are jars that are referenced by the input jar. C# bindings will +not be created for these jars. These jars will be used to resolve +types used by the input jar. + +NOTE: Do not add "android.jar" as a reference jar. It will be added automatically +based on the Target Framework selected. + +Set the build action for these jars in the properties page to "ReferenceJar". + +"EmbeddedJar" works like "ReferenceJar", but like "EmbeddedJar", it is +embedded in your dll. But at application build time, they are not included +in the final apk, like ReferenceJar files. + + diff --git a/firebase-storage-common/source/Properties/AssemblyInfo.cs b/firebase-storage-common/source/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..5fbc67ff9 --- /dev/null +++ b/firebase-storage-common/source/Properties/AssemblyInfo.cs @@ -0,0 +1,48 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using Android.App; + +// Information about this assembly is defined by the following attributes. +// Change them to the values specific to your project. + +[assembly: AssemblyTitle ("Xamarin.Firebase.Storage.Common")] +[assembly: AssemblyDescription ("")] +[assembly: AssemblyConfiguration ("")] +[assembly: AssemblyCompany ("Xamarin")] +[assembly: AssemblyProduct ("")] +[assembly: AssemblyCopyright ("Xamarin")] +[assembly: AssemblyTrademark ("")] +[assembly: AssemblyCulture ("")] + +// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}". +// The form "{Major}.{Minor}.*" will automatically update the build and revision, +// and "{Major}.{Minor}.{Build}.*" will update just the revision. + +[assembly: AssemblyVersion ("1.0.0")] + +// The following attributes are used to specify the signing key for the assembly, +// if desired. See the Mono documentation for more information about signing. + +//[assembly: AssemblyDelaySign(false)] +//[assembly: AssemblyKeyFile("")] + +[assembly: Java.Interop.JavaLibraryReference ("classes.jar", + PackageName = __Consts.PackageName, + SourceUrl = __FbConsts.Url, + EmbeddedArchive = __Consts.AarPath, + Version = __FbConsts.Version)] +// AppCompat-v7 resources +[assembly: Android.IncludeAndroidResourcesFromAttribute ("./", + PackageName = __Consts.PackageName, + SourceUrl = __FbConsts.Url, + EmbeddedArchive = __Consts.AarPath, + Version = __FbConsts.Version)] + +// Google Addon feed with GPS in it: +// https://dl-ssl.google.com/android/repository/addon.xml + +static class __Consts { + public const string PackageName = "Firebase Storage Common"; + public const string AarPath = "m2repository/com/google/firebase/firebase-storage-common/" + __FbConsts.Version + "/firebase-storage-common-" + __FbConsts.Version + ".aar"; +} + \ No newline at end of file diff --git a/firebase-storage-common/source/Transforms/EnumFields.xml b/firebase-storage-common/source/Transforms/EnumFields.xml new file mode 100644 index 000000000..e9af0eeb3 --- /dev/null +++ b/firebase-storage-common/source/Transforms/EnumFields.xml @@ -0,0 +1,18 @@ + + + diff --git a/firebase-storage-common/source/Transforms/EnumMethods.xml b/firebase-storage-common/source/Transforms/EnumMethods.xml new file mode 100644 index 000000000..2efa81467 --- /dev/null +++ b/firebase-storage-common/source/Transforms/EnumMethods.xml @@ -0,0 +1,18 @@ + + + diff --git a/firebase-storage-common/source/Transforms/Metadata.generated.xml b/firebase-storage-common/source/Transforms/Metadata.generated.xml new file mode 100644 index 000000000..26c2f6238 --- /dev/null +++ b/firebase-storage-common/source/Transforms/Metadata.generated.xml @@ -0,0 +1,2 @@ + + diff --git a/firebase-storage-common/source/Transforms/Metadata.xml b/firebase-storage-common/source/Transforms/Metadata.xml new file mode 100644 index 000000000..7841de45b --- /dev/null +++ b/firebase-storage-common/source/Transforms/Metadata.xml @@ -0,0 +1,12 @@ + + + + Firebase.Storage + + + + + + + + diff --git a/firebase-storage/nuget/Xamarin.Firebase.Storage.nuspec b/firebase-storage/nuget/Xamarin.Firebase.Storage.nuspec new file mode 100644 index 000000000..c5a8a3295 --- /dev/null +++ b/firebase-storage/nuget/Xamarin.Firebase.Storage.nuspec @@ -0,0 +1,29 @@ + + + + Xamarin.Firebase.Storage + Xamarin Firebase - Storage + $version$ + Xamarin Inc. + Xamarin Inc. + true + Xamarin.Android Bindings for Firebase - Storage + + Xamarin.Android Bindings for Firebase - Storage + + Copyright 2013-2016 + https://github.com/xamarin/GooglePlayServicesComponents/ + https://github.com/xamarin/GooglePlayServicesComponents/blob/master/LICENSE.md + https://xamarin-component-icons.s3.amazonaws.com/Xamarin.Firebase.Storage.png + + + + + + + + + + + + diff --git a/firebase-storage/source/Additions/AboutAdditions.txt b/firebase-storage/source/Additions/AboutAdditions.txt new file mode 100644 index 000000000..c511f1d4e --- /dev/null +++ b/firebase-storage/source/Additions/AboutAdditions.txt @@ -0,0 +1,48 @@ +Additions allow you to add arbitrary C# to the generated classes +before they are compiled. This can be helpful for providing convenience +methods or adding pure C# classes. + +== Adding Methods to Generated Classes == + +Let's say the library being bound has a Rectangle class with a constructor +that takes an x and y position, and a width and length size. It will look like +this: + +public partial class Rectangle +{ + public Rectangle (int x, int y, int width, int height) + { + // JNI bindings + } +} + +Imagine we want to add a constructor to this class that takes a Point and +Size structure instead of 4 ints. We can add a new file called Rectangle.cs +with a partial class containing our new method: + +public partial class Rectangle +{ + public Rectangle (Point location, Size size) : + this (location.X, location.Y, size.Width, size.Height) + { + } +} + +At compile time, the additions class will be added to the generated class +and the final assembly will a Rectangle class with both constructors. + + +== Adding C# Classes == + +Another thing that can be done is adding fully C# managed classes to the +generated library. In the above example, let's assume that there isn't a +Point class available in Java or our library. The one we create doesn't need +to interact with Java, so we'll create it like a normal class in C#. + +By adding a Point.cs file with this class, it will end up in the binding library: + +public class Point +{ + public int X { get; set; } + public int Y { get; set; } +} diff --git a/firebase-storage/source/Additions/Additions.cs b/firebase-storage/source/Additions/Additions.cs new file mode 100644 index 000000000..020276929 --- /dev/null +++ b/firebase-storage/source/Additions/Additions.cs @@ -0,0 +1,54 @@ +using System; +using Android.Runtime; + +namespace Firebase.Storage +{ + public partial class FileDownloadTask + { + static IntPtr id_getResult; + protected override unsafe global::Java.Lang.Object RawResult { + [Register ("getResult", "()Ljava/lang/Object;", "GetGetRawResultHandler")] + get { + if (id_getResult == IntPtr.Zero) + id_getResult = JNIEnv.GetMethodID (class_ref, "getResult", "()Ljava/lang/Object;"); + try { + return global::Java.Lang.Object.GetObject (JNIEnv.CallObjectMethod (Handle, id_getResult), JniHandleOwnership.TransferLocalRef); + } finally { + } + } + } + } + + public partial class StreamDownloadTask + { + static IntPtr id_getResult; + protected override unsafe global::Java.Lang.Object RawResult { + [Register ("getResult", "()Ljava/lang/Object;", "GetGetRawResultHandler")] + get { + if (id_getResult == IntPtr.Zero) + id_getResult = JNIEnv.GetMethodID (class_ref, "getResult", "()Ljava/lang/Object;"); + try { + return global::Java.Lang.Object.GetObject (JNIEnv.CallObjectMethod (Handle, id_getResult), JniHandleOwnership.TransferLocalRef); + } finally { + } + } + } + } + + public partial class UploadTask + { + static IntPtr id_getResult; + protected override unsafe global::Java.Lang.Object RawResult { + [Register ("getResult", "()Ljava/lang/Object;", "GetGetRawResultHandler")] + get { + if (id_getResult == IntPtr.Zero) + id_getResult = JNIEnv.GetMethodID (class_ref, "getResult", "()Ljava/lang/Object;"); + try { + return global::Java.Lang.Object.GetObject (JNIEnv.CallObjectMethod (Handle, id_getResult), JniHandleOwnership.TransferLocalRef); + } finally { + } + } + } + } +} + diff --git a/firebase-storage/source/Firebase-Storage.csproj b/firebase-storage/source/Firebase-Storage.csproj new file mode 100644 index 000000000..2a2d0a0c7 --- /dev/null +++ b/firebase-storage/source/Firebase-Storage.csproj @@ -0,0 +1,91 @@ + + + + Debug + AnyCPU + {EFBA0AD7-5A72-4C68-AF49-83D382785DCF};{10368E6C-D01B-4462-8E8B-01FC667A7035};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + {423414D9-6CB8-4AFF-8317-66AD03B6056D} + Library + Xamarin.Firebase.Storage + Resources + Assets + False + Xamarin.Firebase.Storage + v4.1 + -XX:-UseSplitVerifier + ..\..\externals\docs\reference + 8.0.30703 + 2.0 + + + true + full + false + bin\Debug + DEBUG; + prompt + 4 + None + false + + + full + true + bin\Release + prompt + 4 + false + false + + + + + + + + + + + Properties\GpsConsts.cs + + + + + + + + + + + + + + + + {6A38FACF-F0C5-4A49-8A8A-7CE6634207CE} + Basement + + + {865652D3-8D1A-4779-92FC-4C54719286B7} + Firebase-Common + + + {3F6BAE25-ADEB-468C-8384-AD655623C341} + Base + + + {53F87D88-8871-41A2-9F81-B79AB02FEC24} + Tasks + + + {C360116C-0ED5-4E59-A974-E95F874B4398} + Firebase-Storage-Common + + + + + + Jars\firebase-storage.jar + + + diff --git a/firebase-storage/source/Jars/AboutJars.txt b/firebase-storage/source/Jars/AboutJars.txt new file mode 100644 index 000000000..320a154be --- /dev/null +++ b/firebase-storage/source/Jars/AboutJars.txt @@ -0,0 +1,37 @@ +This directory is for Android .jars. + +There are 4 types of jars that are supported: + +== Input Jar and Embedded Jar == + +This is the jar that bindings should be generated for. + +For example, if you were binding the Google Maps library, this would +be Google's "maps.jar". + +The difference between EmbeddedJar and InputJar is, EmbeddedJar is to be +embedded in the resulting dll as EmbeddedResource, while InputJar is not. +There are couple of reasons you wouldn't like to embed the target jar +in your dll (the ones that could be internally loaded by +feature e.g. maps.jar, or you cannot embed jars that are under some +proprietary license). + +Set the build action for these jars in the properties page to "InputJar". + + +== Reference Jar and Embedded Reference Jar == + +These are jars that are referenced by the input jar. C# bindings will +not be created for these jars. These jars will be used to resolve +types used by the input jar. + +NOTE: Do not add "android.jar" as a reference jar. It will be added automatically +based on the Target Framework selected. + +Set the build action for these jars in the properties page to "ReferenceJar". + +"EmbeddedJar" works like "ReferenceJar", but like "EmbeddedJar", it is +embedded in your dll. But at application build time, they are not included +in the final apk, like ReferenceJar files. + + diff --git a/firebase-storage/source/Properties/AssemblyInfo.cs b/firebase-storage/source/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..0d1c71a2b --- /dev/null +++ b/firebase-storage/source/Properties/AssemblyInfo.cs @@ -0,0 +1,48 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using Android.App; + +// Information about this assembly is defined by the following attributes. +// Change them to the values specific to your project. + +[assembly: AssemblyTitle ("Xamarin.Firebase.Storage")] +[assembly: AssemblyDescription ("")] +[assembly: AssemblyConfiguration ("")] +[assembly: AssemblyCompany ("Xamarin")] +[assembly: AssemblyProduct ("")] +[assembly: AssemblyCopyright ("Xamarin")] +[assembly: AssemblyTrademark ("")] +[assembly: AssemblyCulture ("")] + +// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}". +// The form "{Major}.{Minor}.*" will automatically update the build and revision, +// and "{Major}.{Minor}.{Build}.*" will update just the revision. + +[assembly: AssemblyVersion ("1.0.0")] + +// The following attributes are used to specify the signing key for the assembly, +// if desired. See the Mono documentation for more information about signing. + +//[assembly: AssemblyDelaySign(false)] +//[assembly: AssemblyKeyFile("")] + +[assembly: Java.Interop.JavaLibraryReference ("classes.jar", + PackageName = __Consts.PackageName, + SourceUrl = __FbConsts.Url, + EmbeddedArchive = __Consts.AarPath, + Version = __FbConsts.Version)] +// AppCompat-v7 resources +[assembly: Android.IncludeAndroidResourcesFromAttribute ("./", + PackageName = __Consts.PackageName, + SourceUrl = __FbConsts.Url, + EmbeddedArchive = __Consts.AarPath, + Version = __FbConsts.Version)] + +// Google Addon feed with GPS in it: +// https://dl-ssl.google.com/android/repository/addon.xml + +static class __Consts { + public const string PackageName = "Firebase Storage"; + public const string AarPath = "m2repository/com/google/firebase/firebase-storage/" + __FbConsts.Version + "/firebase-storage-" + __FbConsts.Version + ".aar"; +} + \ No newline at end of file diff --git a/firebase-storage/source/Transforms/EnumFields.xml b/firebase-storage/source/Transforms/EnumFields.xml new file mode 100644 index 000000000..e9af0eeb3 --- /dev/null +++ b/firebase-storage/source/Transforms/EnumFields.xml @@ -0,0 +1,18 @@ + + + diff --git a/firebase-storage/source/Transforms/EnumMethods.xml b/firebase-storage/source/Transforms/EnumMethods.xml new file mode 100644 index 000000000..2efa81467 --- /dev/null +++ b/firebase-storage/source/Transforms/EnumMethods.xml @@ -0,0 +1,18 @@ + + + diff --git a/firebase-storage/source/Transforms/Metadata.generated.xml b/firebase-storage/source/Transforms/Metadata.generated.xml new file mode 100644 index 000000000..26c2f6238 --- /dev/null +++ b/firebase-storage/source/Transforms/Metadata.generated.xml @@ -0,0 +1,2 @@ + + diff --git a/firebase-storage/source/Transforms/Metadata.xml b/firebase-storage/source/Transforms/Metadata.xml new file mode 100644 index 000000000..c385b38af --- /dev/null +++ b/firebase-storage/source/Transforms/Metadata.xml @@ -0,0 +1,23 @@ + + + + Firebase.Storage + + + + + + + + + + + Android.Gms.Tasks.Task + Firebase.Storage.ControllableTask + Android.Gms.Tasks.Task + Firebase.Storage.CancellableTask + + public + + + From 978d9ba7b2042711692be1cef7c6c99a546d2f1b Mon Sep 17 00:00:00 2001 From: Redth Date: Wed, 1 Jun 2016 13:59:16 -0400 Subject: [PATCH 038/178] Added firebase-config binding --- .../nuget/Xamarin.Firebase.Config.nuspec | 29 ++++++ .../source/Additions/AboutAdditions.txt | 48 ++++++++++ firebase-config/source/Firebase-Config.csproj | 90 +++++++++++++++++++ firebase-config/source/Jars/AboutJars.txt | 37 ++++++++ .../source/Properties/AssemblyInfo.cs | 48 ++++++++++ .../source/Transforms/EnumFields.xml | 18 ++++ .../source/Transforms/EnumMethods.xml | 18 ++++ .../source/Transforms/Metadata.generated.xml | 2 + .../source/Transforms/Metadata.xml | 13 +++ 9 files changed, 303 insertions(+) create mode 100644 firebase-config/nuget/Xamarin.Firebase.Config.nuspec create mode 100644 firebase-config/source/Additions/AboutAdditions.txt create mode 100644 firebase-config/source/Firebase-Config.csproj create mode 100644 firebase-config/source/Jars/AboutJars.txt create mode 100644 firebase-config/source/Properties/AssemblyInfo.cs create mode 100644 firebase-config/source/Transforms/EnumFields.xml create mode 100644 firebase-config/source/Transforms/EnumMethods.xml create mode 100644 firebase-config/source/Transforms/Metadata.generated.xml create mode 100644 firebase-config/source/Transforms/Metadata.xml diff --git a/firebase-config/nuget/Xamarin.Firebase.Config.nuspec b/firebase-config/nuget/Xamarin.Firebase.Config.nuspec new file mode 100644 index 000000000..178f701c6 --- /dev/null +++ b/firebase-config/nuget/Xamarin.Firebase.Config.nuspec @@ -0,0 +1,29 @@ + + + + Xamarin.Firebase.Config + Xamarin Firebase - Config + $version$ + Xamarin Inc. + Xamarin Inc. + true + Xamarin.Android Bindings for Firebase - Config + + Xamarin.Android Bindings for Firebase - Config + + Copyright 2013-2016 + https://github.com/xamarin/GooglePlayServicesComponents/ + https://github.com/xamarin/GooglePlayServicesComponents/blob/master/LICENSE.md + https://xamarin-component-icons.s3.amazonaws.com/Xamarin.Firebase.Config.png + + + + + + + + + + + + diff --git a/firebase-config/source/Additions/AboutAdditions.txt b/firebase-config/source/Additions/AboutAdditions.txt new file mode 100644 index 000000000..c511f1d4e --- /dev/null +++ b/firebase-config/source/Additions/AboutAdditions.txt @@ -0,0 +1,48 @@ +Additions allow you to add arbitrary C# to the generated classes +before they are compiled. This can be helpful for providing convenience +methods or adding pure C# classes. + +== Adding Methods to Generated Classes == + +Let's say the library being bound has a Rectangle class with a constructor +that takes an x and y position, and a width and length size. It will look like +this: + +public partial class Rectangle +{ + public Rectangle (int x, int y, int width, int height) + { + // JNI bindings + } +} + +Imagine we want to add a constructor to this class that takes a Point and +Size structure instead of 4 ints. We can add a new file called Rectangle.cs +with a partial class containing our new method: + +public partial class Rectangle +{ + public Rectangle (Point location, Size size) : + this (location.X, location.Y, size.Width, size.Height) + { + } +} + +At compile time, the additions class will be added to the generated class +and the final assembly will a Rectangle class with both constructors. + + +== Adding C# Classes == + +Another thing that can be done is adding fully C# managed classes to the +generated library. In the above example, let's assume that there isn't a +Point class available in Java or our library. The one we create doesn't need +to interact with Java, so we'll create it like a normal class in C#. + +By adding a Point.cs file with this class, it will end up in the binding library: + +public class Point +{ + public int X { get; set; } + public int Y { get; set; } +} diff --git a/firebase-config/source/Firebase-Config.csproj b/firebase-config/source/Firebase-Config.csproj new file mode 100644 index 000000000..e42e3573b --- /dev/null +++ b/firebase-config/source/Firebase-Config.csproj @@ -0,0 +1,90 @@ + + + + Debug + AnyCPU + {EFBA0AD7-5A72-4C68-AF49-83D382785DCF};{10368E6C-D01B-4462-8E8B-01FC667A7035};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + {00F7A18F-D2C4-4014-8E4C-552A0A0B0967} + Library + Xamarin.Firebase.Config + Resources + Assets + False + Xamarin.Firebase.Config + v4.1 + -XX:-UseSplitVerifier + ..\..\externals\docs\reference + 8.0.30703 + 2.0 + + + true + full + false + bin\Debug + DEBUG; + prompt + 4 + None + false + + + full + true + bin\Release + prompt + 4 + false + false + + + + + + + + + + + Properties\GpsConsts.cs + + + + + + + + + + + + + + + {6A38FACF-F0C5-4A49-8A8A-7CE6634207CE} + Basement + + + {865652D3-8D1A-4779-92FC-4C54719286B7} + Firebase-Common + + + {3F6BAE25-ADEB-468C-8384-AD655623C341} + Base + + + {B28F65D1-D8DD-45E8-9DD7-74A3BE40B4CE} + Firebase-Iid + + + {53F87D88-8871-41A2-9F81-B79AB02FEC24} + Tasks + + + + + + Jars\firebase-config.jar + + + diff --git a/firebase-config/source/Jars/AboutJars.txt b/firebase-config/source/Jars/AboutJars.txt new file mode 100644 index 000000000..320a154be --- /dev/null +++ b/firebase-config/source/Jars/AboutJars.txt @@ -0,0 +1,37 @@ +This directory is for Android .jars. + +There are 4 types of jars that are supported: + +== Input Jar and Embedded Jar == + +This is the jar that bindings should be generated for. + +For example, if you were binding the Google Maps library, this would +be Google's "maps.jar". + +The difference between EmbeddedJar and InputJar is, EmbeddedJar is to be +embedded in the resulting dll as EmbeddedResource, while InputJar is not. +There are couple of reasons you wouldn't like to embed the target jar +in your dll (the ones that could be internally loaded by +feature e.g. maps.jar, or you cannot embed jars that are under some +proprietary license). + +Set the build action for these jars in the properties page to "InputJar". + + +== Reference Jar and Embedded Reference Jar == + +These are jars that are referenced by the input jar. C# bindings will +not be created for these jars. These jars will be used to resolve +types used by the input jar. + +NOTE: Do not add "android.jar" as a reference jar. It will be added automatically +based on the Target Framework selected. + +Set the build action for these jars in the properties page to "ReferenceJar". + +"EmbeddedJar" works like "ReferenceJar", but like "EmbeddedJar", it is +embedded in your dll. But at application build time, they are not included +in the final apk, like ReferenceJar files. + + diff --git a/firebase-config/source/Properties/AssemblyInfo.cs b/firebase-config/source/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..735daf077 --- /dev/null +++ b/firebase-config/source/Properties/AssemblyInfo.cs @@ -0,0 +1,48 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using Android.App; + +// Information about this assembly is defined by the following attributes. +// Change them to the values specific to your project. + +[assembly: AssemblyTitle ("Xamarin.Firebase.Config")] +[assembly: AssemblyDescription ("")] +[assembly: AssemblyConfiguration ("")] +[assembly: AssemblyCompany ("Xamarin")] +[assembly: AssemblyProduct ("")] +[assembly: AssemblyCopyright ("Xamarin")] +[assembly: AssemblyTrademark ("")] +[assembly: AssemblyCulture ("")] + +// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}". +// The form "{Major}.{Minor}.*" will automatically update the build and revision, +// and "{Major}.{Minor}.{Build}.*" will update just the revision. + +[assembly: AssemblyVersion ("1.0.0")] + +// The following attributes are used to specify the signing key for the assembly, +// if desired. See the Mono documentation for more information about signing. + +//[assembly: AssemblyDelaySign(false)] +//[assembly: AssemblyKeyFile("")] + +[assembly: Java.Interop.JavaLibraryReference ("classes.jar", + PackageName = __Consts.PackageName, + SourceUrl = __FbConsts.Url, + EmbeddedArchive = __Consts.AarPath, + Version = __FbConsts.Version)] +// AppCompat-v7 resources +[assembly: Android.IncludeAndroidResourcesFromAttribute ("./", + PackageName = __Consts.PackageName, + SourceUrl = __FbConsts.Url, + EmbeddedArchive = __Consts.AarPath, + Version = __FbConsts.Version)] + +// Google Addon feed with GPS in it: +// https://dl-ssl.google.com/android/repository/addon.xml + +static class __Consts { + public const string PackageName = "Firebase Config"; + public const string AarPath = "m2repository/com/google/firebase/firebase-config/" + __FbConsts.Version + "/firebase-config-" + __FbConsts.Version + ".aar"; +} + \ No newline at end of file diff --git a/firebase-config/source/Transforms/EnumFields.xml b/firebase-config/source/Transforms/EnumFields.xml new file mode 100644 index 000000000..e9af0eeb3 --- /dev/null +++ b/firebase-config/source/Transforms/EnumFields.xml @@ -0,0 +1,18 @@ + + + diff --git a/firebase-config/source/Transforms/EnumMethods.xml b/firebase-config/source/Transforms/EnumMethods.xml new file mode 100644 index 000000000..2efa81467 --- /dev/null +++ b/firebase-config/source/Transforms/EnumMethods.xml @@ -0,0 +1,18 @@ + + + diff --git a/firebase-config/source/Transforms/Metadata.generated.xml b/firebase-config/source/Transforms/Metadata.generated.xml new file mode 100644 index 000000000..26c2f6238 --- /dev/null +++ b/firebase-config/source/Transforms/Metadata.generated.xml @@ -0,0 +1,2 @@ + + diff --git a/firebase-config/source/Transforms/Metadata.xml b/firebase-config/source/Transforms/Metadata.xml new file mode 100644 index 000000000..d61087d95 --- /dev/null +++ b/firebase-config/source/Transforms/Metadata.xml @@ -0,0 +1,13 @@ + + + + Android.Gms.Config.Internal + Firebase.RemoteConfig + + + + + + + + From 33b37bd5bd29a03a2d21126e9f43d0fafe52c9e4 Mon Sep 17 00:00:00 2001 From: Redth Date: Wed, 1 Jun 2016 13:59:35 -0400 Subject: [PATCH 039/178] Added firebase-database and firebase-database-connection bindings --- ...amarin.Firebase.Database.Connection.nuspec | 27 ++++++ .../source/Additions/AboutAdditions.txt | 48 ++++++++++ .../Firebase-Database-Connection.csproj | 82 +++++++++++++++++ .../source/Jars/AboutJars.txt | 37 ++++++++ .../source/Properties/AssemblyInfo.cs | 47 ++++++++++ .../source/Transforms/EnumFields.xml | 18 ++++ .../source/Transforms/EnumMethods.xml | 18 ++++ .../source/Transforms/Metadata.generated.xml | 2 + .../source/Transforms/Metadata.xml | 14 +++ .../nuget/Xamarin.Firebase.Database.nuspec | 29 ++++++ .../source/Additions/AboutAdditions.txt | 48 ++++++++++ .../source/Firebase-Database.csproj | 90 +++++++++++++++++++ firebase-database/source/Jars/AboutJars.txt | 37 ++++++++ .../source/Properties/AssemblyInfo.cs | 48 ++++++++++ .../source/Transforms/EnumFields.xml | 18 ++++ .../source/Transforms/EnumMethods.xml | 18 ++++ .../source/Transforms/Metadata.generated.xml | 2 + .../source/Transforms/Metadata.xml | 14 +++ 18 files changed, 597 insertions(+) create mode 100644 firebase-database-connection/nuget/Xamarin.Firebase.Database.Connection.nuspec create mode 100644 firebase-database-connection/source/Additions/AboutAdditions.txt create mode 100644 firebase-database-connection/source/Firebase-Database-Connection.csproj create mode 100644 firebase-database-connection/source/Jars/AboutJars.txt create mode 100644 firebase-database-connection/source/Properties/AssemblyInfo.cs create mode 100644 firebase-database-connection/source/Transforms/EnumFields.xml create mode 100644 firebase-database-connection/source/Transforms/EnumMethods.xml create mode 100644 firebase-database-connection/source/Transforms/Metadata.generated.xml create mode 100644 firebase-database-connection/source/Transforms/Metadata.xml create mode 100644 firebase-database/nuget/Xamarin.Firebase.Database.nuspec create mode 100644 firebase-database/source/Additions/AboutAdditions.txt create mode 100644 firebase-database/source/Firebase-Database.csproj create mode 100644 firebase-database/source/Jars/AboutJars.txt create mode 100644 firebase-database/source/Properties/AssemblyInfo.cs create mode 100644 firebase-database/source/Transforms/EnumFields.xml create mode 100644 firebase-database/source/Transforms/EnumMethods.xml create mode 100644 firebase-database/source/Transforms/Metadata.generated.xml create mode 100644 firebase-database/source/Transforms/Metadata.xml diff --git a/firebase-database-connection/nuget/Xamarin.Firebase.Database.Connection.nuspec b/firebase-database-connection/nuget/Xamarin.Firebase.Database.Connection.nuspec new file mode 100644 index 000000000..ba74bd627 --- /dev/null +++ b/firebase-database-connection/nuget/Xamarin.Firebase.Database.Connection.nuspec @@ -0,0 +1,27 @@ + + + + Xamarin.Firebase.Database.Connection + Xamarin Firebase - Database Connection + $version$ + Xamarin Inc. + Xamarin Inc. + true + Xamarin.Android Bindings for Firebase - Database Connection + + Xamarin.Android Bindings for Firebase - Database Connection + + Copyright 2013-2016 + https://github.com/xamarin/GooglePlayServicesComponents/ + https://github.com/xamarin/GooglePlayServicesComponents/blob/master/LICENSE.md + https://xamarin-component-icons.s3.amazonaws.com/Xamarin.Firebase.Database.Connection.png + + + + + + + + + + diff --git a/firebase-database-connection/source/Additions/AboutAdditions.txt b/firebase-database-connection/source/Additions/AboutAdditions.txt new file mode 100644 index 000000000..c511f1d4e --- /dev/null +++ b/firebase-database-connection/source/Additions/AboutAdditions.txt @@ -0,0 +1,48 @@ +Additions allow you to add arbitrary C# to the generated classes +before they are compiled. This can be helpful for providing convenience +methods or adding pure C# classes. + +== Adding Methods to Generated Classes == + +Let's say the library being bound has a Rectangle class with a constructor +that takes an x and y position, and a width and length size. It will look like +this: + +public partial class Rectangle +{ + public Rectangle (int x, int y, int width, int height) + { + // JNI bindings + } +} + +Imagine we want to add a constructor to this class that takes a Point and +Size structure instead of 4 ints. We can add a new file called Rectangle.cs +with a partial class containing our new method: + +public partial class Rectangle +{ + public Rectangle (Point location, Size size) : + this (location.X, location.Y, size.Width, size.Height) + { + } +} + +At compile time, the additions class will be added to the generated class +and the final assembly will a Rectangle class with both constructors. + + +== Adding C# Classes == + +Another thing that can be done is adding fully C# managed classes to the +generated library. In the above example, let's assume that there isn't a +Point class available in Java or our library. The one we create doesn't need +to interact with Java, so we'll create it like a normal class in C#. + +By adding a Point.cs file with this class, it will end up in the binding library: + +public class Point +{ + public int X { get; set; } + public int Y { get; set; } +} diff --git a/firebase-database-connection/source/Firebase-Database-Connection.csproj b/firebase-database-connection/source/Firebase-Database-Connection.csproj new file mode 100644 index 000000000..fa1391b45 --- /dev/null +++ b/firebase-database-connection/source/Firebase-Database-Connection.csproj @@ -0,0 +1,82 @@ + + + + Debug + AnyCPU + {EFBA0AD7-5A72-4C68-AF49-83D382785DCF};{10368E6C-D01B-4462-8E8B-01FC667A7035};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + {2858C3DB-1E15-4D12-AF09-02CFD624ADD4} + Library + Xamarin.Firebase.Database.Connection + Resources + Assets + False + Xamarin.Firebase.Database.Connection + v4.1 + -XX:-UseSplitVerifier + ..\..\externals\docs\reference + 8.0.30703 + 2.0 + + + true + full + false + bin\Debug + DEBUG; + prompt + 4 + None + false + + + full + true + bin\Release + prompt + 4 + false + false + + + + + + + + + + + Properties\GpsConsts.cs + + + + + + + + + + + + + + + {6A38FACF-F0C5-4A49-8A8A-7CE6634207CE} + Basement + + + {3F6BAE25-ADEB-468C-8384-AD655623C341} + Base + + + {865652D3-8D1A-4779-92FC-4C54719286B7} + Firebase-Common + + + + + + Jars\firebase-database-connection.jar + + + diff --git a/firebase-database-connection/source/Jars/AboutJars.txt b/firebase-database-connection/source/Jars/AboutJars.txt new file mode 100644 index 000000000..320a154be --- /dev/null +++ b/firebase-database-connection/source/Jars/AboutJars.txt @@ -0,0 +1,37 @@ +This directory is for Android .jars. + +There are 4 types of jars that are supported: + +== Input Jar and Embedded Jar == + +This is the jar that bindings should be generated for. + +For example, if you were binding the Google Maps library, this would +be Google's "maps.jar". + +The difference between EmbeddedJar and InputJar is, EmbeddedJar is to be +embedded in the resulting dll as EmbeddedResource, while InputJar is not. +There are couple of reasons you wouldn't like to embed the target jar +in your dll (the ones that could be internally loaded by +feature e.g. maps.jar, or you cannot embed jars that are under some +proprietary license). + +Set the build action for these jars in the properties page to "InputJar". + + +== Reference Jar and Embedded Reference Jar == + +These are jars that are referenced by the input jar. C# bindings will +not be created for these jars. These jars will be used to resolve +types used by the input jar. + +NOTE: Do not add "android.jar" as a reference jar. It will be added automatically +based on the Target Framework selected. + +Set the build action for these jars in the properties page to "ReferenceJar". + +"EmbeddedJar" works like "ReferenceJar", but like "EmbeddedJar", it is +embedded in your dll. But at application build time, they are not included +in the final apk, like ReferenceJar files. + + diff --git a/firebase-database-connection/source/Properties/AssemblyInfo.cs b/firebase-database-connection/source/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..9f3719baf --- /dev/null +++ b/firebase-database-connection/source/Properties/AssemblyInfo.cs @@ -0,0 +1,47 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using Android.App; + +// Information about this assembly is defined by the following attributes. +// Change them to the values specific to your project. + +[assembly: AssemblyTitle ("Xamarin.Firebase.Database.Connection")] +[assembly: AssemblyDescription ("")] +[assembly: AssemblyConfiguration ("")] +[assembly: AssemblyCompany ("Xamarin")] +[assembly: AssemblyProduct ("")] +[assembly: AssemblyCopyright ("Xamarin")] +[assembly: AssemblyTrademark ("")] +[assembly: AssemblyCulture ("")] + +// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}". +// The form "{Major}.{Minor}.*" will automatically update the build and revision, +// and "{Major}.{Minor}.{Build}.*" will update just the revision. + +[assembly: AssemblyVersion ("1.0.0")] + +// The following attributes are used to specify the signing key for the assembly, +// if desired. See the Mono documentation for more information about signing. + +//[assembly: AssemblyDelaySign(false)] +//[assembly: AssemblyKeyFile("")] + +[assembly: Java.Interop.JavaLibraryReference ("classes.jar", + PackageName = __Consts.PackageName, + SourceUrl = __FbConsts.Url, + EmbeddedArchive = __Consts.AarPath, + Version = __FbConsts.Version)] +// AppCompat-v7 resources +[assembly: Android.IncludeAndroidResourcesFromAttribute ("./", + PackageName = __Consts.PackageName, + SourceUrl = __FbConsts.Url, + EmbeddedArchive = __Consts.AarPath, + Version = __FbConsts.Version)] + +// Google Addon feed with GPS in it: +// https://dl-ssl.google.com/android/repository/addon.xml + +static class __Consts { + public const string PackageName = "Firebase Database Connection"; + public const string AarPath = "m2repository/com/google/firebase/firebase-database-connection/" + __FbConsts.Version + "/firebase-database-connection-" + __FbConsts.Version + ".aar"; +} diff --git a/firebase-database-connection/source/Transforms/EnumFields.xml b/firebase-database-connection/source/Transforms/EnumFields.xml new file mode 100644 index 000000000..e9af0eeb3 --- /dev/null +++ b/firebase-database-connection/source/Transforms/EnumFields.xml @@ -0,0 +1,18 @@ + + + diff --git a/firebase-database-connection/source/Transforms/EnumMethods.xml b/firebase-database-connection/source/Transforms/EnumMethods.xml new file mode 100644 index 000000000..2efa81467 --- /dev/null +++ b/firebase-database-connection/source/Transforms/EnumMethods.xml @@ -0,0 +1,18 @@ + + + diff --git a/firebase-database-connection/source/Transforms/Metadata.generated.xml b/firebase-database-connection/source/Transforms/Metadata.generated.xml new file mode 100644 index 000000000..26c2f6238 --- /dev/null +++ b/firebase-database-connection/source/Transforms/Metadata.generated.xml @@ -0,0 +1,2 @@ + + diff --git a/firebase-database-connection/source/Transforms/Metadata.xml b/firebase-database-connection/source/Transforms/Metadata.xml new file mode 100644 index 000000000..d3906ce44 --- /dev/null +++ b/firebase-database-connection/source/Transforms/Metadata.xml @@ -0,0 +1,14 @@ + + + + Firebase.Database.Connection.Idl + Android.Gms.Dynamite.Descriptors.FirebaseDatabase + + + + + + + + + diff --git a/firebase-database/nuget/Xamarin.Firebase.Database.nuspec b/firebase-database/nuget/Xamarin.Firebase.Database.nuspec new file mode 100644 index 000000000..ab5e42742 --- /dev/null +++ b/firebase-database/nuget/Xamarin.Firebase.Database.nuspec @@ -0,0 +1,29 @@ + + + + Xamarin.Firebase.Database + Xamarin Firebase - Database + $version$ + Xamarin Inc. + Xamarin Inc. + true + Xamarin.Android Bindings for Firebase - Database + + Xamarin.Android Bindings for Firebase - Database + + Copyright 2013-2016 + https://github.com/xamarin/GooglePlayServicesComponents/ + https://github.com/xamarin/GooglePlayServicesComponents/blob/master/LICENSE.md + https://xamarin-component-icons.s3.amazonaws.com/Xamarin.Firebase.Database.png + + + + + + + + + + + + diff --git a/firebase-database/source/Additions/AboutAdditions.txt b/firebase-database/source/Additions/AboutAdditions.txt new file mode 100644 index 000000000..c511f1d4e --- /dev/null +++ b/firebase-database/source/Additions/AboutAdditions.txt @@ -0,0 +1,48 @@ +Additions allow you to add arbitrary C# to the generated classes +before they are compiled. This can be helpful for providing convenience +methods or adding pure C# classes. + +== Adding Methods to Generated Classes == + +Let's say the library being bound has a Rectangle class with a constructor +that takes an x and y position, and a width and length size. It will look like +this: + +public partial class Rectangle +{ + public Rectangle (int x, int y, int width, int height) + { + // JNI bindings + } +} + +Imagine we want to add a constructor to this class that takes a Point and +Size structure instead of 4 ints. We can add a new file called Rectangle.cs +with a partial class containing our new method: + +public partial class Rectangle +{ + public Rectangle (Point location, Size size) : + this (location.X, location.Y, size.Width, size.Height) + { + } +} + +At compile time, the additions class will be added to the generated class +and the final assembly will a Rectangle class with both constructors. + + +== Adding C# Classes == + +Another thing that can be done is adding fully C# managed classes to the +generated library. In the above example, let's assume that there isn't a +Point class available in Java or our library. The one we create doesn't need +to interact with Java, so we'll create it like a normal class in C#. + +By adding a Point.cs file with this class, it will end up in the binding library: + +public class Point +{ + public int X { get; set; } + public int Y { get; set; } +} diff --git a/firebase-database/source/Firebase-Database.csproj b/firebase-database/source/Firebase-Database.csproj new file mode 100644 index 000000000..a42f3cfaa --- /dev/null +++ b/firebase-database/source/Firebase-Database.csproj @@ -0,0 +1,90 @@ + + + + Debug + AnyCPU + {EFBA0AD7-5A72-4C68-AF49-83D382785DCF};{10368E6C-D01B-4462-8E8B-01FC667A7035};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + {B02737A0-890C-4921-83A5-D77CFB8A6899} + Library + Xamarin.Firebase.Database + Resources + Assets + False + Xamarin.Firebase.Database + v4.1 + -XX:-UseSplitVerifier + ..\..\externals\docs\reference + 8.0.30703 + 2.0 + + + true + full + false + bin\Debug + DEBUG; + prompt + 4 + None + false + + + full + true + bin\Release + prompt + 4 + false + false + + + + + + + + + + + Properties\GpsConsts.cs + + + + + + + + + + + + + + + {6A38FACF-F0C5-4A49-8A8A-7CE6634207CE} + Basement + + + {3F6BAE25-ADEB-468C-8384-AD655623C341} + Base + + + {865652D3-8D1A-4779-92FC-4C54719286B7} + Firebase-Common + + + {53F87D88-8871-41A2-9F81-B79AB02FEC24} + Tasks + + + {2858C3DB-1E15-4D12-AF09-02CFD624ADD4} + Firebase-Database-Connection + + + + + + Jars\firebase-database.jar + + + diff --git a/firebase-database/source/Jars/AboutJars.txt b/firebase-database/source/Jars/AboutJars.txt new file mode 100644 index 000000000..320a154be --- /dev/null +++ b/firebase-database/source/Jars/AboutJars.txt @@ -0,0 +1,37 @@ +This directory is for Android .jars. + +There are 4 types of jars that are supported: + +== Input Jar and Embedded Jar == + +This is the jar that bindings should be generated for. + +For example, if you were binding the Google Maps library, this would +be Google's "maps.jar". + +The difference between EmbeddedJar and InputJar is, EmbeddedJar is to be +embedded in the resulting dll as EmbeddedResource, while InputJar is not. +There are couple of reasons you wouldn't like to embed the target jar +in your dll (the ones that could be internally loaded by +feature e.g. maps.jar, or you cannot embed jars that are under some +proprietary license). + +Set the build action for these jars in the properties page to "InputJar". + + +== Reference Jar and Embedded Reference Jar == + +These are jars that are referenced by the input jar. C# bindings will +not be created for these jars. These jars will be used to resolve +types used by the input jar. + +NOTE: Do not add "android.jar" as a reference jar. It will be added automatically +based on the Target Framework selected. + +Set the build action for these jars in the properties page to "ReferenceJar". + +"EmbeddedJar" works like "ReferenceJar", but like "EmbeddedJar", it is +embedded in your dll. But at application build time, they are not included +in the final apk, like ReferenceJar files. + + diff --git a/firebase-database/source/Properties/AssemblyInfo.cs b/firebase-database/source/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..64ac1b456 --- /dev/null +++ b/firebase-database/source/Properties/AssemblyInfo.cs @@ -0,0 +1,48 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using Android.App; + +// Information about this assembly is defined by the following attributes. +// Change them to the values specific to your project. + +[assembly: AssemblyTitle ("Xamarin.Firebase.Database")] +[assembly: AssemblyDescription ("")] +[assembly: AssemblyConfiguration ("")] +[assembly: AssemblyCompany ("Xamarin")] +[assembly: AssemblyProduct ("")] +[assembly: AssemblyCopyright ("Xamarin")] +[assembly: AssemblyTrademark ("")] +[assembly: AssemblyCulture ("")] + +// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}". +// The form "{Major}.{Minor}.*" will automatically update the build and revision, +// and "{Major}.{Minor}.{Build}.*" will update just the revision. + +[assembly: AssemblyVersion ("1.0.0")] + +// The following attributes are used to specify the signing key for the assembly, +// if desired. See the Mono documentation for more information about signing. + +//[assembly: AssemblyDelaySign(false)] +//[assembly: AssemblyKeyFile("")] + +[assembly: Java.Interop.JavaLibraryReference ("classes.jar", + PackageName = __Consts.PackageName, + SourceUrl = __FbConsts.Url, + EmbeddedArchive = __Consts.AarPath, + Version = __FbConsts.Version)] +// AppCompat-v7 resources +[assembly: Android.IncludeAndroidResourcesFromAttribute ("./", + PackageName = __Consts.PackageName, + SourceUrl = __FbConsts.Url, + EmbeddedArchive = __Consts.AarPath, + Version = __FbConsts.Version)] + +// Google Addon feed with GPS in it: +// https://dl-ssl.google.com/android/repository/addon.xml + +static class __Consts { + public const string PackageName = "Firebase Database"; + public const string AarPath = "m2repository/com/google/firebase/firebase-database/" + __FbConsts.Version + "/firebase-database-" + __FbConsts.Version + ".aar"; +} + \ No newline at end of file diff --git a/firebase-database/source/Transforms/EnumFields.xml b/firebase-database/source/Transforms/EnumFields.xml new file mode 100644 index 000000000..e9af0eeb3 --- /dev/null +++ b/firebase-database/source/Transforms/EnumFields.xml @@ -0,0 +1,18 @@ + + + diff --git a/firebase-database/source/Transforms/EnumMethods.xml b/firebase-database/source/Transforms/EnumMethods.xml new file mode 100644 index 000000000..2efa81467 --- /dev/null +++ b/firebase-database/source/Transforms/EnumMethods.xml @@ -0,0 +1,18 @@ + + + diff --git a/firebase-database/source/Transforms/Metadata.generated.xml b/firebase-database/source/Transforms/Metadata.generated.xml new file mode 100644 index 000000000..26c2f6238 --- /dev/null +++ b/firebase-database/source/Transforms/Metadata.generated.xml @@ -0,0 +1,2 @@ + + diff --git a/firebase-database/source/Transforms/Metadata.xml b/firebase-database/source/Transforms/Metadata.xml new file mode 100644 index 000000000..4f4e0f16e --- /dev/null +++ b/firebase-database/source/Transforms/Metadata.xml @@ -0,0 +1,14 @@ + + + + Firebase.Database + + + + + + + + ValueEventArgs + ChildEventArgs + From ab79a3b81c245a00d6e59e88b04ef38e188447aa Mon Sep 17 00:00:00 2001 From: Redth Date: Wed, 1 Jun 2016 13:59:56 -0400 Subject: [PATCH 040/178] Added firebase-messaging binding --- .../nuget/Xamarin.Firebase.Messaging.nuspec | 27 ++++++ .../source/Additions/AboutAdditions.txt | 48 +++++++++++ .../source/Additions/Manifest.cs | 21 +++++ .../source/Firebase-Messaging.csproj | 83 +++++++++++++++++++ firebase-messaging/source/Jars/AboutJars.txt | 37 +++++++++ .../source/Properties/AssemblyInfo.cs | 48 +++++++++++ .../source/Transforms/EnumFields.xml | 18 ++++ .../source/Transforms/EnumMethods.xml | 18 ++++ .../source/Transforms/Metadata.generated.xml | 2 + .../source/Transforms/Metadata.xml | 12 +++ 10 files changed, 314 insertions(+) create mode 100644 firebase-messaging/nuget/Xamarin.Firebase.Messaging.nuspec create mode 100644 firebase-messaging/source/Additions/AboutAdditions.txt create mode 100644 firebase-messaging/source/Additions/Manifest.cs create mode 100644 firebase-messaging/source/Firebase-Messaging.csproj create mode 100644 firebase-messaging/source/Jars/AboutJars.txt create mode 100644 firebase-messaging/source/Properties/AssemblyInfo.cs create mode 100644 firebase-messaging/source/Transforms/EnumFields.xml create mode 100644 firebase-messaging/source/Transforms/EnumMethods.xml create mode 100644 firebase-messaging/source/Transforms/Metadata.generated.xml create mode 100644 firebase-messaging/source/Transforms/Metadata.xml diff --git a/firebase-messaging/nuget/Xamarin.Firebase.Messaging.nuspec b/firebase-messaging/nuget/Xamarin.Firebase.Messaging.nuspec new file mode 100644 index 000000000..a46857301 --- /dev/null +++ b/firebase-messaging/nuget/Xamarin.Firebase.Messaging.nuspec @@ -0,0 +1,27 @@ + + + + Xamarin.Firebase.Messaging + Xamarin Firebase - Messaging + $version$ + Xamarin Inc. + Xamarin Inc. + true + Xamarin.Android Bindings for Firebase - Messaging + + Xamarin.Android Bindings for Firebase - Messaging + + Copyright 2013-2016 + https://github.com/xamarin/GooglePlayServicesComponents/ + https://github.com/xamarin/GooglePlayServicesComponents/blob/master/LICENSE.md + https://xamarin-component-icons.s3.amazonaws.com/Xamarin.Firebase.Messaging.png + + + + + + + + + + diff --git a/firebase-messaging/source/Additions/AboutAdditions.txt b/firebase-messaging/source/Additions/AboutAdditions.txt new file mode 100644 index 000000000..c511f1d4e --- /dev/null +++ b/firebase-messaging/source/Additions/AboutAdditions.txt @@ -0,0 +1,48 @@ +Additions allow you to add arbitrary C# to the generated classes +before they are compiled. This can be helpful for providing convenience +methods or adding pure C# classes. + +== Adding Methods to Generated Classes == + +Let's say the library being bound has a Rectangle class with a constructor +that takes an x and y position, and a width and length size. It will look like +this: + +public partial class Rectangle +{ + public Rectangle (int x, int y, int width, int height) + { + // JNI bindings + } +} + +Imagine we want to add a constructor to this class that takes a Point and +Size structure instead of 4 ints. We can add a new file called Rectangle.cs +with a partial class containing our new method: + +public partial class Rectangle +{ + public Rectangle (Point location, Size size) : + this (location.X, location.Y, size.Width, size.Height) + { + } +} + +At compile time, the additions class will be added to the generated class +and the final assembly will a Rectangle class with both constructors. + + +== Adding C# Classes == + +Another thing that can be done is adding fully C# managed classes to the +generated library. In the above example, let's assume that there isn't a +Point class available in Java or our library. The one we create doesn't need +to interact with Java, so we'll create it like a normal class in C#. + +By adding a Point.cs file with this class, it will end up in the binding library: + +public class Point +{ + public int X { get; set; } + public int Y { get; set; } +} diff --git a/firebase-messaging/source/Additions/Manifest.cs b/firebase-messaging/source/Additions/Manifest.cs new file mode 100644 index 000000000..944ed6412 --- /dev/null +++ b/firebase-messaging/source/Additions/Manifest.cs @@ -0,0 +1,21 @@ +using System; +using Android.App; + +namespace Firebase.Messaging +{ + // + // + // + // + // + // + [Service (Name="com.google.firebase.messaging.FirebaseMessagingService", + Exported=true)] + [IntentFilter (new [] { "com.google.firebase.MESSAGING_EVENT" }, Priority=-500)] + public partial class FirebaseMessagingService + { + } +} diff --git a/firebase-messaging/source/Firebase-Messaging.csproj b/firebase-messaging/source/Firebase-Messaging.csproj new file mode 100644 index 000000000..725a71b85 --- /dev/null +++ b/firebase-messaging/source/Firebase-Messaging.csproj @@ -0,0 +1,83 @@ + + + + Debug + AnyCPU + {EFBA0AD7-5A72-4C68-AF49-83D382785DCF};{10368E6C-D01B-4462-8E8B-01FC667A7035};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + {2E333450-68BD-48C5-9540-CFA7A053DCA1} + Library + Xamarin.Firebase.Messaging + Resources + Assets + False + Xamarin.Firebase.Messaging + v4.1 + -XX:-UseSplitVerifier + ..\..\externals\docs\reference + 8.0.30703 + 2.0 + + + true + full + false + bin\Debug + DEBUG; + prompt + 4 + None + false + + + full + true + bin\Release + prompt + 4 + false + false + + + + + + + + + + + Properties\GpsConsts.cs + + + + + + + + + + + + + + + + {6A38FACF-F0C5-4A49-8A8A-7CE6634207CE} + Basement + + + {865652D3-8D1A-4779-92FC-4C54719286B7} + Firebase-Common + + + {B28F65D1-D8DD-45E8-9DD7-74A3BE40B4CE} + Firebase-Iid + + + + + + Jars\firebase-messaging.jar + + + diff --git a/firebase-messaging/source/Jars/AboutJars.txt b/firebase-messaging/source/Jars/AboutJars.txt new file mode 100644 index 000000000..320a154be --- /dev/null +++ b/firebase-messaging/source/Jars/AboutJars.txt @@ -0,0 +1,37 @@ +This directory is for Android .jars. + +There are 4 types of jars that are supported: + +== Input Jar and Embedded Jar == + +This is the jar that bindings should be generated for. + +For example, if you were binding the Google Maps library, this would +be Google's "maps.jar". + +The difference between EmbeddedJar and InputJar is, EmbeddedJar is to be +embedded in the resulting dll as EmbeddedResource, while InputJar is not. +There are couple of reasons you wouldn't like to embed the target jar +in your dll (the ones that could be internally loaded by +feature e.g. maps.jar, or you cannot embed jars that are under some +proprietary license). + +Set the build action for these jars in the properties page to "InputJar". + + +== Reference Jar and Embedded Reference Jar == + +These are jars that are referenced by the input jar. C# bindings will +not be created for these jars. These jars will be used to resolve +types used by the input jar. + +NOTE: Do not add "android.jar" as a reference jar. It will be added automatically +based on the Target Framework selected. + +Set the build action for these jars in the properties page to "ReferenceJar". + +"EmbeddedJar" works like "ReferenceJar", but like "EmbeddedJar", it is +embedded in your dll. But at application build time, they are not included +in the final apk, like ReferenceJar files. + + diff --git a/firebase-messaging/source/Properties/AssemblyInfo.cs b/firebase-messaging/source/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..db1b2b017 --- /dev/null +++ b/firebase-messaging/source/Properties/AssemblyInfo.cs @@ -0,0 +1,48 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using Android.App; + +// Information about this assembly is defined by the following attributes. +// Change them to the values specific to your project. + +[assembly: AssemblyTitle ("Xamarin.Firebase.Messaging")] +[assembly: AssemblyDescription ("")] +[assembly: AssemblyConfiguration ("")] +[assembly: AssemblyCompany ("Xamarin")] +[assembly: AssemblyProduct ("")] +[assembly: AssemblyCopyright ("Xamarin")] +[assembly: AssemblyTrademark ("")] +[assembly: AssemblyCulture ("")] + +// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}". +// The form "{Major}.{Minor}.*" will automatically update the build and revision, +// and "{Major}.{Minor}.{Build}.*" will update just the revision. + +[assembly: AssemblyVersion ("1.0.0")] + +// The following attributes are used to specify the signing key for the assembly, +// if desired. See the Mono documentation for more information about signing. + +//[assembly: AssemblyDelaySign(false)] +//[assembly: AssemblyKeyFile("")] + +[assembly: Java.Interop.JavaLibraryReference ("classes.jar", + PackageName = __Consts.PackageName, + SourceUrl = __FbConsts.Url, + EmbeddedArchive = __Consts.AarPath, + Version = __FbConsts.Version)] +// AppCompat-v7 resources +[assembly: Android.IncludeAndroidResourcesFromAttribute ("./", + PackageName = __Consts.PackageName, + SourceUrl = __FbConsts.Url, + EmbeddedArchive = __Consts.AarPath, + Version = __FbConsts.Version)] + +// Google Addon feed with GPS in it: +// https://dl-ssl.google.com/android/repository/addon.xml + +static class __Consts { + public const string PackageName = "Firebase Messaging"; + public const string AarPath = "m2repository/com/google/firebase/firebase-messaging/" + __FbConsts.Version + "/firebase-messaging-" + __FbConsts.Version + ".aar"; +} + \ No newline at end of file diff --git a/firebase-messaging/source/Transforms/EnumFields.xml b/firebase-messaging/source/Transforms/EnumFields.xml new file mode 100644 index 000000000..e9af0eeb3 --- /dev/null +++ b/firebase-messaging/source/Transforms/EnumFields.xml @@ -0,0 +1,18 @@ + + + diff --git a/firebase-messaging/source/Transforms/EnumMethods.xml b/firebase-messaging/source/Transforms/EnumMethods.xml new file mode 100644 index 000000000..2efa81467 --- /dev/null +++ b/firebase-messaging/source/Transforms/EnumMethods.xml @@ -0,0 +1,18 @@ + + + diff --git a/firebase-messaging/source/Transforms/Metadata.generated.xml b/firebase-messaging/source/Transforms/Metadata.generated.xml new file mode 100644 index 000000000..26c2f6238 --- /dev/null +++ b/firebase-messaging/source/Transforms/Metadata.generated.xml @@ -0,0 +1,2 @@ + + diff --git a/firebase-messaging/source/Transforms/Metadata.xml b/firebase-messaging/source/Transforms/Metadata.xml new file mode 100644 index 000000000..afdb6b09e --- /dev/null +++ b/firebase-messaging/source/Transforms/Metadata.xml @@ -0,0 +1,12 @@ + + + + Firebase.Messaging + + + + + + + + From ee75afc9b080196c2ff39d70e592b231ce9bb9fa Mon Sep 17 00:00:00 2001 From: Redth Date: Wed, 1 Jun 2016 14:00:05 -0400 Subject: [PATCH 041/178] Added firebase-crash binding --- .../nuget/Xamarin.Firebase.Crash.nuspec | 29 ++++++ .../source/Additions/AboutAdditions.txt | 48 ++++++++++ firebase-crash/source/Additions/Manifest.cs | 24 +++++ firebase-crash/source/Firebase-Crash.csproj | 95 +++++++++++++++++++ firebase-crash/source/Jars/AboutJars.txt | 37 ++++++++ .../source/Properties/AssemblyInfo.cs | 48 ++++++++++ .../source/Transforms/EnumFields.xml | 18 ++++ .../source/Transforms/EnumMethods.xml | 18 ++++ .../source/Transforms/Metadata.generated.xml | 2 + firebase-crash/source/Transforms/Metadata.xml | 16 ++++ 10 files changed, 335 insertions(+) create mode 100644 firebase-crash/nuget/Xamarin.Firebase.Crash.nuspec create mode 100644 firebase-crash/source/Additions/AboutAdditions.txt create mode 100644 firebase-crash/source/Additions/Manifest.cs create mode 100644 firebase-crash/source/Firebase-Crash.csproj create mode 100644 firebase-crash/source/Jars/AboutJars.txt create mode 100644 firebase-crash/source/Properties/AssemblyInfo.cs create mode 100644 firebase-crash/source/Transforms/EnumFields.xml create mode 100644 firebase-crash/source/Transforms/EnumMethods.xml create mode 100644 firebase-crash/source/Transforms/Metadata.generated.xml create mode 100644 firebase-crash/source/Transforms/Metadata.xml diff --git a/firebase-crash/nuget/Xamarin.Firebase.Crash.nuspec b/firebase-crash/nuget/Xamarin.Firebase.Crash.nuspec new file mode 100644 index 000000000..c00a36256 --- /dev/null +++ b/firebase-crash/nuget/Xamarin.Firebase.Crash.nuspec @@ -0,0 +1,29 @@ + + + + Xamarin.Firebase.Crash + Xamarin Firebase - Crash + $version$ + Xamarin Inc. + Xamarin Inc. + true + Xamarin.Android Bindings for Firebase - Crash + + Xamarin.Android Bindings for Firebase - Crash + + Copyright 2013-2016 + https://github.com/xamarin/GooglePlayServicesComponents/ + https://github.com/xamarin/GooglePlayServicesComponents/blob/master/LICENSE.md + https://xamarin-component-icons.s3.amazonaws.com/Xamarin.Firebase.Crash.png + + + + + + + + + + + + diff --git a/firebase-crash/source/Additions/AboutAdditions.txt b/firebase-crash/source/Additions/AboutAdditions.txt new file mode 100644 index 000000000..c511f1d4e --- /dev/null +++ b/firebase-crash/source/Additions/AboutAdditions.txt @@ -0,0 +1,48 @@ +Additions allow you to add arbitrary C# to the generated classes +before they are compiled. This can be helpful for providing convenience +methods or adding pure C# classes. + +== Adding Methods to Generated Classes == + +Let's say the library being bound has a Rectangle class with a constructor +that takes an x and y position, and a width and length size. It will look like +this: + +public partial class Rectangle +{ + public Rectangle (int x, int y, int width, int height) + { + // JNI bindings + } +} + +Imagine we want to add a constructor to this class that takes a Point and +Size structure instead of 4 ints. We can add a new file called Rectangle.cs +with a partial class containing our new method: + +public partial class Rectangle +{ + public Rectangle (Point location, Size size) : + this (location.X, location.Y, size.Width, size.Height) + { + } +} + +At compile time, the additions class will be added to the generated class +and the final assembly will a Rectangle class with both constructors. + + +== Adding C# Classes == + +Another thing that can be done is adding fully C# managed classes to the +generated library. In the above example, let's assume that there isn't a +Point class available in Java or our library. The one we create doesn't need +to interact with Java, so we'll create it like a normal class in C#. + +By adding a Point.cs file with this class, it will end up in the binding library: + +public class Point +{ + public int X { get; set; } + public int Y { get; set; } +} diff --git a/firebase-crash/source/Additions/Manifest.cs b/firebase-crash/source/Additions/Manifest.cs new file mode 100644 index 000000000..9288034a0 --- /dev/null +++ b/firebase-crash/source/Additions/Manifest.cs @@ -0,0 +1,24 @@ +using System; +using Android.App; + +[assembly: UsesPermission (Android.Manifest.Permission.Internet)] + +namespace Firebase.Crash.Internal.Service +{ + // + [Service (Name="com.google.firebase.crash.internal.service.FirebaseCrashReceiverService", + Process=":background_crash")] + public partial class FirebaseCrashReceiverService + { + } + + // + [Service (Name="com.google.firebase.crash.internal.service.FirebaseCrashSenderService", + Process=":background_crash")] + public partial class FirebaseCrashSenderService + { + } +} + diff --git a/firebase-crash/source/Firebase-Crash.csproj b/firebase-crash/source/Firebase-Crash.csproj new file mode 100644 index 000000000..1e780d1e4 --- /dev/null +++ b/firebase-crash/source/Firebase-Crash.csproj @@ -0,0 +1,95 @@ + + + + Debug + AnyCPU + {EFBA0AD7-5A72-4C68-AF49-83D382785DCF};{10368E6C-D01B-4462-8E8B-01FC667A7035};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + {7076C84E-08AE-404B-8F3C-8F66010FA1B1} + Library + Xamarin.Firebase.Crash + Resources + Assets + False + Xamarin.Firebase.Crash + v4.1 + -XX:-UseSplitVerifier + ..\..\externals\docs\reference + 8.0.30703 + 2.0 + + + true + full + false + bin\Debug + DEBUG; + prompt + 4 + None + false + + + full + true + bin\Release + prompt + 4 + false + false + + + + + + + + + + + Properties\GpsConsts.cs + + + + + + + + + + + + + + + + {6A38FACF-F0C5-4A49-8A8A-7CE6634207CE} + Basement + + + {865652D3-8D1A-4779-92FC-4C54719286B7} + Firebase-Common + + + {3F6BAE25-ADEB-468C-8384-AD655623C341} + Base + + + {B28F65D1-D8DD-45E8-9DD7-74A3BE40B4CE} + Firebase-Iid + + + {DC5BEB52-1715-4E53-88EF-2D4F1708E394} + Firebase-Analytics + + + {CFB0A03A-F787-4EE9-9EA6-8A2A65E82704} + Firebase-Analytics-Impl + + + + + + Jars\firebase-crash.jar + + + diff --git a/firebase-crash/source/Jars/AboutJars.txt b/firebase-crash/source/Jars/AboutJars.txt new file mode 100644 index 000000000..320a154be --- /dev/null +++ b/firebase-crash/source/Jars/AboutJars.txt @@ -0,0 +1,37 @@ +This directory is for Android .jars. + +There are 4 types of jars that are supported: + +== Input Jar and Embedded Jar == + +This is the jar that bindings should be generated for. + +For example, if you were binding the Google Maps library, this would +be Google's "maps.jar". + +The difference between EmbeddedJar and InputJar is, EmbeddedJar is to be +embedded in the resulting dll as EmbeddedResource, while InputJar is not. +There are couple of reasons you wouldn't like to embed the target jar +in your dll (the ones that could be internally loaded by +feature e.g. maps.jar, or you cannot embed jars that are under some +proprietary license). + +Set the build action for these jars in the properties page to "InputJar". + + +== Reference Jar and Embedded Reference Jar == + +These are jars that are referenced by the input jar. C# bindings will +not be created for these jars. These jars will be used to resolve +types used by the input jar. + +NOTE: Do not add "android.jar" as a reference jar. It will be added automatically +based on the Target Framework selected. + +Set the build action for these jars in the properties page to "ReferenceJar". + +"EmbeddedJar" works like "ReferenceJar", but like "EmbeddedJar", it is +embedded in your dll. But at application build time, they are not included +in the final apk, like ReferenceJar files. + + diff --git a/firebase-crash/source/Properties/AssemblyInfo.cs b/firebase-crash/source/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..735daf077 --- /dev/null +++ b/firebase-crash/source/Properties/AssemblyInfo.cs @@ -0,0 +1,48 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using Android.App; + +// Information about this assembly is defined by the following attributes. +// Change them to the values specific to your project. + +[assembly: AssemblyTitle ("Xamarin.Firebase.Config")] +[assembly: AssemblyDescription ("")] +[assembly: AssemblyConfiguration ("")] +[assembly: AssemblyCompany ("Xamarin")] +[assembly: AssemblyProduct ("")] +[assembly: AssemblyCopyright ("Xamarin")] +[assembly: AssemblyTrademark ("")] +[assembly: AssemblyCulture ("")] + +// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}". +// The form "{Major}.{Minor}.*" will automatically update the build and revision, +// and "{Major}.{Minor}.{Build}.*" will update just the revision. + +[assembly: AssemblyVersion ("1.0.0")] + +// The following attributes are used to specify the signing key for the assembly, +// if desired. See the Mono documentation for more information about signing. + +//[assembly: AssemblyDelaySign(false)] +//[assembly: AssemblyKeyFile("")] + +[assembly: Java.Interop.JavaLibraryReference ("classes.jar", + PackageName = __Consts.PackageName, + SourceUrl = __FbConsts.Url, + EmbeddedArchive = __Consts.AarPath, + Version = __FbConsts.Version)] +// AppCompat-v7 resources +[assembly: Android.IncludeAndroidResourcesFromAttribute ("./", + PackageName = __Consts.PackageName, + SourceUrl = __FbConsts.Url, + EmbeddedArchive = __Consts.AarPath, + Version = __FbConsts.Version)] + +// Google Addon feed with GPS in it: +// https://dl-ssl.google.com/android/repository/addon.xml + +static class __Consts { + public const string PackageName = "Firebase Config"; + public const string AarPath = "m2repository/com/google/firebase/firebase-config/" + __FbConsts.Version + "/firebase-config-" + __FbConsts.Version + ".aar"; +} + \ No newline at end of file diff --git a/firebase-crash/source/Transforms/EnumFields.xml b/firebase-crash/source/Transforms/EnumFields.xml new file mode 100644 index 000000000..e9af0eeb3 --- /dev/null +++ b/firebase-crash/source/Transforms/EnumFields.xml @@ -0,0 +1,18 @@ + + + diff --git a/firebase-crash/source/Transforms/EnumMethods.xml b/firebase-crash/source/Transforms/EnumMethods.xml new file mode 100644 index 000000000..2efa81467 --- /dev/null +++ b/firebase-crash/source/Transforms/EnumMethods.xml @@ -0,0 +1,18 @@ + + + diff --git a/firebase-crash/source/Transforms/Metadata.generated.xml b/firebase-crash/source/Transforms/Metadata.generated.xml new file mode 100644 index 000000000..26c2f6238 --- /dev/null +++ b/firebase-crash/source/Transforms/Metadata.generated.xml @@ -0,0 +1,2 @@ + + diff --git a/firebase-crash/source/Transforms/Metadata.xml b/firebase-crash/source/Transforms/Metadata.xml new file mode 100644 index 000000000..b08fb887a --- /dev/null +++ b/firebase-crash/source/Transforms/Metadata.xml @@ -0,0 +1,16 @@ + + + + Firebase.Crash + Firebase.Crash.Internal + Firebase.Crash.Internal.Config.Flag + Firebase.Crash.Internal.Service + + + + + + + + mono.android.app.IntentService + From c18074dd61c865464cba7dfc7da9da55cc7cbe7a Mon Sep 17 00:00:00 2001 From: Redth Date: Wed, 1 Jun 2016 14:00:37 -0400 Subject: [PATCH 042/178] Added firebase-core nuspec This is an empty package which just wraps (depends on) Firebase.Analytics This mirror's google's own packages --- .../nuget/Xamarin.Firebase.Core.nuspec | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 firebase-core/nuget/Xamarin.Firebase.Core.nuspec diff --git a/firebase-core/nuget/Xamarin.Firebase.Core.nuspec b/firebase-core/nuget/Xamarin.Firebase.Core.nuspec new file mode 100644 index 000000000..375da2401 --- /dev/null +++ b/firebase-core/nuget/Xamarin.Firebase.Core.nuspec @@ -0,0 +1,26 @@ + + + + Xamarin.Firebase.Core + Xamarin Firebase - Core + $version$ + Xamarin Inc. + Xamarin Inc. + true + Xamarin.Android Bindings for Firebase - Core + + Xamarin.Android Bindings for Firebase - Core + + Copyright 2013-2016 + https://github.com/xamarin/GooglePlayServicesComponents/ + https://github.com/xamarin/GooglePlayServicesComponents/blob/master/LICENSE.md + https://xamarin-component-icons.s3.amazonaws.com/Xamarin.Firebase.Core.png + + + + + + + + + From 6b56fcf45041566271903cd060978ca3e257e587 Mon Sep 17 00:00:00 2001 From: Redth Date: Wed, 1 Jun 2016 14:00:54 -0400 Subject: [PATCH 043/178] Updated .sln and master reference project with new bindings --- GooglePlayServices.sln | 171 ++++++++++++++++-- all/samples/GpsBuildAll/GpsBuildAll.csproj | 110 +++++++++-- .../Properties/AndroidManifest.xml | 7 +- 3 files changed, 250 insertions(+), 38 deletions(-) diff --git a/GooglePlayServices.sln b/GooglePlayServices.sln index f73367b4b..15fa06206 100644 --- a/GooglePlayServices.sln +++ b/GooglePlayServices.sln @@ -1,20 +1,16 @@  Microsoft Visual Studio Solution File, Format Version 11.00 # Visual Studio 2010 -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Bindings", "Bindings", "{AFB1EDA0-E0D2-4E95-BAEC-9781B046413E}" +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "PlayServices", "PlayServices", "{AFB1EDA0-E0D2-4E95-BAEC-9781B046413E}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Basement", "basement\source\Basement.csproj", "{6A38FACF-F0C5-4A49-8A8A-7CE6634207CE}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Base", "base\source\Base.csproj", "{3F6BAE25-ADEB-468C-8384-AD655623C341}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AppState", "appstate\source\AppState.csproj", "{8B84EE13-119C-41EB-98E8-E42D3ECD0DFD}" -EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Identity", "identity\source\Identity.csproj", "{09362350-BB7F-4B4C-83B5-97F5C439B649}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Gcm", "gcm\source\Gcm.csproj", "{1CE82D7E-9EA1-435F-AF8C-5E07AB917617}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Measurement", "measurement\source\Measurement.csproj", "{5C4C77A3-4523-4E2B-895B-6EFE4A6A1617}" -EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Analytics", "analytics\source\Analytics.csproj", "{EA04524D-2A97-4ED0-AD74-21F8C30DF4A5}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AppIndexing", "appindexing\source\AppIndexing.csproj", "{A069B942-EE12-4283-8C4C-F46549D3978A}" @@ -53,16 +49,66 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Wearable", "wearable\source EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Ads", "ads\source\Ads.csproj", "{CC4E534D-4992-4FBB-9528-A071EDDEA7E7}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Basement-BuildTasks", "basement\buildtasks\Basement-BuildTasks.csproj", "{21D99A15-AB98-4691-A45B-D236B2A91DEB}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tasks", "tasks\source\Tasks.csproj", "{53F87D88-8871-41A2-9F81-B79AB02FEC24}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Ads.Lite", "ads-lite\source\Ads.Lite.csproj", "{ECB1F68B-B588-4F3B-9A86-510CF4AAA784}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Auth.Base", "auth-base\source\Auth.Base.csproj", "{B04C50F7-B0CC-4170-8820-9D584E1C0ED3}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Analytics.Impl", "analytics-impl\source\Analytics.Impl.csproj", "{7893F52D-09B9-4441-AC47-6F7875BD68BC}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Iid", "iid\source\Iid.csproj", "{9F7F996D-AF44-4947-8392-07B3ED2ED00D}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TagManager", "tagmanager\source\TagManager.csproj", "{2EA64B09-174C-40D0-9A40-44C2BF10C9D4}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TagManager.Api", "tagmanager-api\source\TagManager.Api.csproj", "{B94069F7-2BD5-4695-B7B7-EBAA1C496DD9}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GpsBuildAll", "all\samples\GpsBuildAll\GpsBuildAll.csproj", "{A9BE4750-6DFD-412E-B998-26B725911CF3}" EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Firebase", "Firebase", "{1EC5651F-83A6-4862-AED2-6BE5103652D0}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Firebase-Common", "firebase-common\source\Firebase-Common.csproj", "{865652D3-8D1A-4779-92FC-4C54719286B7}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Firebase-Analytics", "firebase-analytics\source\Firebase-Analytics.csproj", "{DC5BEB52-1715-4E53-88EF-2D4F1708E394}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Firebase-Iid", "firebase-iid\source\Firebase-Iid.csproj", "{B28F65D1-D8DD-45E8-9DD7-74A3BE40B4CE}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Firebase-Analytics-Impl", "firebase-analytics-impl\source\Firebase-Analytics-Impl.csproj", "{CFB0A03A-F787-4EE9-9EA6-8A2A65E82704}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Firebase-Config", "firebase-config\source\Firebase-Config.csproj", "{00F7A18F-D2C4-4014-8E4C-552A0A0B0967}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Firebase-Crash", "firebase-crash\source\Firebase-Crash.csproj", "{7076C84E-08AE-404B-8F3C-8F66010FA1B1}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Firebase-Auth-Common", "firebase-auth-common\source\Firebase-Auth-Common.csproj", "{F53B34FB-4BBC-4314-8D8A-1F0CD959E83F}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Firebase-Auth", "firebase-auth\source\Firebase-Auth.csproj", "{62946D89-B6B1-4A38-A04D-C20912087EFD}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Firebase-Auth-Module", "firebase-auth-module\source\Firebase-Auth-Module.csproj", "{7DA24DFC-EF53-4C06-AB7A-FF6BEF513A1B}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Firebase-Database-Connection", "firebase-database-connection\source\Firebase-Database-Connection.csproj", "{2858C3DB-1E15-4D12-AF09-02CFD624ADD4}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Firebase-Database", "firebase-database\source\Firebase-Database.csproj", "{B02737A0-890C-4921-83A5-D77CFB8A6899}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Firebase-Messaging", "firebase-messaging\source\Firebase-Messaging.csproj", "{2E333450-68BD-48C5-9540-CFA7A053DCA1}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Firebase-Storage-Common", "firebase-storage-common\source\Firebase-Storage-Common.csproj", "{C360116C-0ED5-4E59-A974-E95F874B4398}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Firebase-Storage", "firebase-storage\source\Firebase-Storage.csproj", "{423414D9-6CB8-4AFF-8317-66AD03B6056D}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "BuildTasks", "BuildTasks", "{3330092C-6EB0-4AB6-9901-2F4070E2FD81}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Basement-BuildTasks", "basement\buildtasks\Basement-BuildTasks.csproj", "{21D99A15-AB98-4691-A45B-D236B2A91DEB}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU Release|Any CPU = Release|Any CPU EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution + {00F7A18F-D2C4-4014-8E4C-552A0A0B0967}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {00F7A18F-D2C4-4014-8E4C-552A0A0B0967}.Debug|Any CPU.Build.0 = Debug|Any CPU + {00F7A18F-D2C4-4014-8E4C-552A0A0B0967}.Release|Any CPU.ActiveCfg = Release|Any CPU + {00F7A18F-D2C4-4014-8E4C-552A0A0B0967}.Release|Any CPU.Build.0 = Release|Any CPU {09362350-BB7F-4B4C-83B5-97F5C439B649}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {09362350-BB7F-4B4C-83B5-97F5C439B649}.Debug|Any CPU.Build.0 = Debug|Any CPU {09362350-BB7F-4B4C-83B5-97F5C439B649}.Release|Any CPU.ActiveCfg = Release|Any CPU @@ -75,26 +121,54 @@ Global {21D99A15-AB98-4691-A45B-D236B2A91DEB}.Debug|Any CPU.Build.0 = Debug|Any CPU {21D99A15-AB98-4691-A45B-D236B2A91DEB}.Release|Any CPU.ActiveCfg = Release|Any CPU {21D99A15-AB98-4691-A45B-D236B2A91DEB}.Release|Any CPU.Build.0 = Release|Any CPU + {2858C3DB-1E15-4D12-AF09-02CFD624ADD4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2858C3DB-1E15-4D12-AF09-02CFD624ADD4}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2858C3DB-1E15-4D12-AF09-02CFD624ADD4}.Release|Any CPU.ActiveCfg = Release|Any CPU + {2858C3DB-1E15-4D12-AF09-02CFD624ADD4}.Release|Any CPU.Build.0 = Release|Any CPU + {2E333450-68BD-48C5-9540-CFA7A053DCA1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2E333450-68BD-48C5-9540-CFA7A053DCA1}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2E333450-68BD-48C5-9540-CFA7A053DCA1}.Release|Any CPU.ActiveCfg = Release|Any CPU + {2E333450-68BD-48C5-9540-CFA7A053DCA1}.Release|Any CPU.Build.0 = Release|Any CPU + {2EA64B09-174C-40D0-9A40-44C2BF10C9D4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2EA64B09-174C-40D0-9A40-44C2BF10C9D4}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2EA64B09-174C-40D0-9A40-44C2BF10C9D4}.Release|Any CPU.ActiveCfg = Release|Any CPU + {2EA64B09-174C-40D0-9A40-44C2BF10C9D4}.Release|Any CPU.Build.0 = Release|Any CPU {3F6BAE25-ADEB-468C-8384-AD655623C341}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {3F6BAE25-ADEB-468C-8384-AD655623C341}.Debug|Any CPU.Build.0 = Debug|Any CPU {3F6BAE25-ADEB-468C-8384-AD655623C341}.Release|Any CPU.ActiveCfg = Release|Any CPU {3F6BAE25-ADEB-468C-8384-AD655623C341}.Release|Any CPU.Build.0 = Release|Any CPU - {5C4C77A3-4523-4E2B-895B-6EFE4A6A1617}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {5C4C77A3-4523-4E2B-895B-6EFE4A6A1617}.Debug|Any CPU.Build.0 = Debug|Any CPU - {5C4C77A3-4523-4E2B-895B-6EFE4A6A1617}.Release|Any CPU.ActiveCfg = Release|Any CPU - {5C4C77A3-4523-4E2B-895B-6EFE4A6A1617}.Release|Any CPU.Build.0 = Release|Any CPU + {423414D9-6CB8-4AFF-8317-66AD03B6056D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {423414D9-6CB8-4AFF-8317-66AD03B6056D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {423414D9-6CB8-4AFF-8317-66AD03B6056D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {423414D9-6CB8-4AFF-8317-66AD03B6056D}.Release|Any CPU.Build.0 = Release|Any CPU + {53F87D88-8871-41A2-9F81-B79AB02FEC24}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {53F87D88-8871-41A2-9F81-B79AB02FEC24}.Debug|Any CPU.Build.0 = Debug|Any CPU + {53F87D88-8871-41A2-9F81-B79AB02FEC24}.Release|Any CPU.ActiveCfg = Release|Any CPU + {53F87D88-8871-41A2-9F81-B79AB02FEC24}.Release|Any CPU.Build.0 = Release|Any CPU {5DF42846-151E-40CD-A349-C0A0C6216F7B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {5DF42846-151E-40CD-A349-C0A0C6216F7B}.Debug|Any CPU.Build.0 = Debug|Any CPU {5DF42846-151E-40CD-A349-C0A0C6216F7B}.Release|Any CPU.ActiveCfg = Release|Any CPU {5DF42846-151E-40CD-A349-C0A0C6216F7B}.Release|Any CPU.Build.0 = Release|Any CPU + {62946D89-B6B1-4A38-A04D-C20912087EFD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {62946D89-B6B1-4A38-A04D-C20912087EFD}.Debug|Any CPU.Build.0 = Debug|Any CPU + {62946D89-B6B1-4A38-A04D-C20912087EFD}.Release|Any CPU.ActiveCfg = Release|Any CPU + {62946D89-B6B1-4A38-A04D-C20912087EFD}.Release|Any CPU.Build.0 = Release|Any CPU {6A38FACF-F0C5-4A49-8A8A-7CE6634207CE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {6A38FACF-F0C5-4A49-8A8A-7CE6634207CE}.Debug|Any CPU.Build.0 = Debug|Any CPU {6A38FACF-F0C5-4A49-8A8A-7CE6634207CE}.Release|Any CPU.ActiveCfg = Release|Any CPU {6A38FACF-F0C5-4A49-8A8A-7CE6634207CE}.Release|Any CPU.Build.0 = Release|Any CPU + {7076C84E-08AE-404B-8F3C-8F66010FA1B1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7076C84E-08AE-404B-8F3C-8F66010FA1B1}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7076C84E-08AE-404B-8F3C-8F66010FA1B1}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7076C84E-08AE-404B-8F3C-8F66010FA1B1}.Release|Any CPU.Build.0 = Release|Any CPU {72CC5E29-5EA5-40E3-98E4-87ED8AB75589}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {72CC5E29-5EA5-40E3-98E4-87ED8AB75589}.Debug|Any CPU.Build.0 = Debug|Any CPU {72CC5E29-5EA5-40E3-98E4-87ED8AB75589}.Release|Any CPU.ActiveCfg = Release|Any CPU {72CC5E29-5EA5-40E3-98E4-87ED8AB75589}.Release|Any CPU.Build.0 = Release|Any CPU + {7893F52D-09B9-4441-AC47-6F7875BD68BC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7893F52D-09B9-4441-AC47-6F7875BD68BC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7893F52D-09B9-4441-AC47-6F7875BD68BC}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7893F52D-09B9-4441-AC47-6F7875BD68BC}.Release|Any CPU.Build.0 = Release|Any CPU {7A015585-036A-4BD1-8D46-A669EFA89743}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {7A015585-036A-4BD1-8D46-A669EFA89743}.Debug|Any CPU.Build.0 = Debug|Any CPU {7A015585-036A-4BD1-8D46-A669EFA89743}.Release|Any CPU.ActiveCfg = Release|Any CPU @@ -107,18 +181,22 @@ Global {7CB92D61-E2FF-472A-9FDF-7E42D15B3EE6}.Debug|Any CPU.Build.0 = Debug|Any CPU {7CB92D61-E2FF-472A-9FDF-7E42D15B3EE6}.Release|Any CPU.ActiveCfg = Release|Any CPU {7CB92D61-E2FF-472A-9FDF-7E42D15B3EE6}.Release|Any CPU.Build.0 = Release|Any CPU + {7DA24DFC-EF53-4C06-AB7A-FF6BEF513A1B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7DA24DFC-EF53-4C06-AB7A-FF6BEF513A1B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7DA24DFC-EF53-4C06-AB7A-FF6BEF513A1B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7DA24DFC-EF53-4C06-AB7A-FF6BEF513A1B}.Release|Any CPU.Build.0 = Release|Any CPU {7DD8E926-9F75-4F25-95A3-920A5FF48EF8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {7DD8E926-9F75-4F25-95A3-920A5FF48EF8}.Debug|Any CPU.Build.0 = Debug|Any CPU {7DD8E926-9F75-4F25-95A3-920A5FF48EF8}.Release|Any CPU.ActiveCfg = Release|Any CPU {7DD8E926-9F75-4F25-95A3-920A5FF48EF8}.Release|Any CPU.Build.0 = Release|Any CPU + {865652D3-8D1A-4779-92FC-4C54719286B7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {865652D3-8D1A-4779-92FC-4C54719286B7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {865652D3-8D1A-4779-92FC-4C54719286B7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {865652D3-8D1A-4779-92FC-4C54719286B7}.Release|Any CPU.Build.0 = Release|Any CPU {8900C5EF-1182-4E8B-88FE-596EC2DB379D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {8900C5EF-1182-4E8B-88FE-596EC2DB379D}.Debug|Any CPU.Build.0 = Debug|Any CPU {8900C5EF-1182-4E8B-88FE-596EC2DB379D}.Release|Any CPU.ActiveCfg = Release|Any CPU {8900C5EF-1182-4E8B-88FE-596EC2DB379D}.Release|Any CPU.Build.0 = Release|Any CPU - {8B84EE13-119C-41EB-98E8-E42D3ECD0DFD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8B84EE13-119C-41EB-98E8-E42D3ECD0DFD}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8B84EE13-119C-41EB-98E8-E42D3ECD0DFD}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8B84EE13-119C-41EB-98E8-E42D3ECD0DFD}.Release|Any CPU.Build.0 = Release|Any CPU {8BAFA1ED-B5D9-49ED-A553-E557D2A0357F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {8BAFA1ED-B5D9-49ED-A553-E557D2A0357F}.Debug|Any CPU.Build.0 = Debug|Any CPU {8BAFA1ED-B5D9-49ED-A553-E557D2A0357F}.Release|Any CPU.ActiveCfg = Release|Any CPU @@ -131,6 +209,10 @@ Global {9E3CD219-C950-4AA9-88E5-818F42C12566}.Debug|Any CPU.Build.0 = Debug|Any CPU {9E3CD219-C950-4AA9-88E5-818F42C12566}.Release|Any CPU.ActiveCfg = Release|Any CPU {9E3CD219-C950-4AA9-88E5-818F42C12566}.Release|Any CPU.Build.0 = Release|Any CPU + {9F7F996D-AF44-4947-8392-07B3ED2ED00D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9F7F996D-AF44-4947-8392-07B3ED2ED00D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9F7F996D-AF44-4947-8392-07B3ED2ED00D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9F7F996D-AF44-4947-8392-07B3ED2ED00D}.Release|Any CPU.Build.0 = Release|Any CPU {A069B942-EE12-4283-8C4C-F46549D3978A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {A069B942-EE12-4283-8C4C-F46549D3978A}.Debug|Any CPU.Build.0 = Debug|Any CPU {A069B942-EE12-4283-8C4C-F46549D3978A}.Release|Any CPU.ActiveCfg = Release|Any CPU @@ -155,18 +237,54 @@ Global {A9BE4750-6DFD-412E-B998-26B725911CF3}.Debug|Any CPU.Build.0 = Debug|Any CPU {A9BE4750-6DFD-412E-B998-26B725911CF3}.Release|Any CPU.ActiveCfg = Release|Any CPU {A9BE4750-6DFD-412E-B998-26B725911CF3}.Release|Any CPU.Build.0 = Release|Any CPU + {B02737A0-890C-4921-83A5-D77CFB8A6899}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B02737A0-890C-4921-83A5-D77CFB8A6899}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B02737A0-890C-4921-83A5-D77CFB8A6899}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B02737A0-890C-4921-83A5-D77CFB8A6899}.Release|Any CPU.Build.0 = Release|Any CPU + {B04C50F7-B0CC-4170-8820-9D584E1C0ED3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B04C50F7-B0CC-4170-8820-9D584E1C0ED3}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B04C50F7-B0CC-4170-8820-9D584E1C0ED3}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B04C50F7-B0CC-4170-8820-9D584E1C0ED3}.Release|Any CPU.Build.0 = Release|Any CPU + {B28F65D1-D8DD-45E8-9DD7-74A3BE40B4CE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B28F65D1-D8DD-45E8-9DD7-74A3BE40B4CE}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B28F65D1-D8DD-45E8-9DD7-74A3BE40B4CE}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B28F65D1-D8DD-45E8-9DD7-74A3BE40B4CE}.Release|Any CPU.Build.0 = Release|Any CPU + {B94069F7-2BD5-4695-B7B7-EBAA1C496DD9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B94069F7-2BD5-4695-B7B7-EBAA1C496DD9}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B94069F7-2BD5-4695-B7B7-EBAA1C496DD9}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B94069F7-2BD5-4695-B7B7-EBAA1C496DD9}.Release|Any CPU.Build.0 = Release|Any CPU {C1A9C587-B744-44D2-AD42-14386D424667}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {C1A9C587-B744-44D2-AD42-14386D424667}.Debug|Any CPU.Build.0 = Debug|Any CPU {C1A9C587-B744-44D2-AD42-14386D424667}.Release|Any CPU.ActiveCfg = Release|Any CPU {C1A9C587-B744-44D2-AD42-14386D424667}.Release|Any CPU.Build.0 = Release|Any CPU + {C360116C-0ED5-4E59-A974-E95F874B4398}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C360116C-0ED5-4E59-A974-E95F874B4398}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C360116C-0ED5-4E59-A974-E95F874B4398}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C360116C-0ED5-4E59-A974-E95F874B4398}.Release|Any CPU.Build.0 = Release|Any CPU {CC4E534D-4992-4FBB-9528-A071EDDEA7E7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {CC4E534D-4992-4FBB-9528-A071EDDEA7E7}.Debug|Any CPU.Build.0 = Debug|Any CPU {CC4E534D-4992-4FBB-9528-A071EDDEA7E7}.Release|Any CPU.ActiveCfg = Release|Any CPU {CC4E534D-4992-4FBB-9528-A071EDDEA7E7}.Release|Any CPU.Build.0 = Release|Any CPU + {CFB0A03A-F787-4EE9-9EA6-8A2A65E82704}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {CFB0A03A-F787-4EE9-9EA6-8A2A65E82704}.Debug|Any CPU.Build.0 = Debug|Any CPU + {CFB0A03A-F787-4EE9-9EA6-8A2A65E82704}.Release|Any CPU.ActiveCfg = Release|Any CPU + {CFB0A03A-F787-4EE9-9EA6-8A2A65E82704}.Release|Any CPU.Build.0 = Release|Any CPU + {DC5BEB52-1715-4E53-88EF-2D4F1708E394}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {DC5BEB52-1715-4E53-88EF-2D4F1708E394}.Debug|Any CPU.Build.0 = Debug|Any CPU + {DC5BEB52-1715-4E53-88EF-2D4F1708E394}.Release|Any CPU.ActiveCfg = Release|Any CPU + {DC5BEB52-1715-4E53-88EF-2D4F1708E394}.Release|Any CPU.Build.0 = Release|Any CPU {EA04524D-2A97-4ED0-AD74-21F8C30DF4A5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {EA04524D-2A97-4ED0-AD74-21F8C30DF4A5}.Debug|Any CPU.Build.0 = Debug|Any CPU {EA04524D-2A97-4ED0-AD74-21F8C30DF4A5}.Release|Any CPU.ActiveCfg = Release|Any CPU {EA04524D-2A97-4ED0-AD74-21F8C30DF4A5}.Release|Any CPU.Build.0 = Release|Any CPU + {ECB1F68B-B588-4F3B-9A86-510CF4AAA784}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {ECB1F68B-B588-4F3B-9A86-510CF4AAA784}.Debug|Any CPU.Build.0 = Debug|Any CPU + {ECB1F68B-B588-4F3B-9A86-510CF4AAA784}.Release|Any CPU.ActiveCfg = Release|Any CPU + {ECB1F68B-B588-4F3B-9A86-510CF4AAA784}.Release|Any CPU.Build.0 = Release|Any CPU + {F53B34FB-4BBC-4314-8D8A-1F0CD959E83F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F53B34FB-4BBC-4314-8D8A-1F0CD959E83F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F53B34FB-4BBC-4314-8D8A-1F0CD959E83F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F53B34FB-4BBC-4314-8D8A-1F0CD959E83F}.Release|Any CPU.Build.0 = Release|Any CPU {F666DC89-9CE4-491C-8450-6FBC70298FA3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {F666DC89-9CE4-491C-8450-6FBC70298FA3}.Debug|Any CPU.Build.0 = Debug|Any CPU {F666DC89-9CE4-491C-8450-6FBC70298FA3}.Release|Any CPU.ActiveCfg = Release|Any CPU @@ -175,10 +293,8 @@ Global GlobalSection(NestedProjects) = preSolution {6A38FACF-F0C5-4A49-8A8A-7CE6634207CE} = {AFB1EDA0-E0D2-4E95-BAEC-9781B046413E} {3F6BAE25-ADEB-468C-8384-AD655623C341} = {AFB1EDA0-E0D2-4E95-BAEC-9781B046413E} - {8B84EE13-119C-41EB-98E8-E42D3ECD0DFD} = {AFB1EDA0-E0D2-4E95-BAEC-9781B046413E} {09362350-BB7F-4B4C-83B5-97F5C439B649} = {AFB1EDA0-E0D2-4E95-BAEC-9781B046413E} {1CE82D7E-9EA1-435F-AF8C-5E07AB917617} = {AFB1EDA0-E0D2-4E95-BAEC-9781B046413E} - {5C4C77A3-4523-4E2B-895B-6EFE4A6A1617} = {AFB1EDA0-E0D2-4E95-BAEC-9781B046413E} {EA04524D-2A97-4ED0-AD74-21F8C30DF4A5} = {AFB1EDA0-E0D2-4E95-BAEC-9781B046413E} {A069B942-EE12-4283-8C4C-F46549D3978A} = {AFB1EDA0-E0D2-4E95-BAEC-9781B046413E} {A069B942-EE12-4283-9C4C-F46549D3978A} = {AFB1EDA0-E0D2-4E95-BAEC-9781B046413E} @@ -198,6 +314,27 @@ Global {7AF74235-AEE2-4F3A-AEDB-7504ED93DDC0} = {AFB1EDA0-E0D2-4E95-BAEC-9781B046413E} {92BDA198-6A78-4408-844C-CAAF4C04EAFD} = {AFB1EDA0-E0D2-4E95-BAEC-9781B046413E} {CC4E534D-4992-4FBB-9528-A071EDDEA7E7} = {AFB1EDA0-E0D2-4E95-BAEC-9781B046413E} - {21D99A15-AB98-4691-A45B-D236B2A91DEB} = {AFB1EDA0-E0D2-4E95-BAEC-9781B046413E} + {53F87D88-8871-41A2-9F81-B79AB02FEC24} = {AFB1EDA0-E0D2-4E95-BAEC-9781B046413E} + {ECB1F68B-B588-4F3B-9A86-510CF4AAA784} = {AFB1EDA0-E0D2-4E95-BAEC-9781B046413E} + {B04C50F7-B0CC-4170-8820-9D584E1C0ED3} = {AFB1EDA0-E0D2-4E95-BAEC-9781B046413E} + {7893F52D-09B9-4441-AC47-6F7875BD68BC} = {AFB1EDA0-E0D2-4E95-BAEC-9781B046413E} + {9F7F996D-AF44-4947-8392-07B3ED2ED00D} = {AFB1EDA0-E0D2-4E95-BAEC-9781B046413E} + {2EA64B09-174C-40D0-9A40-44C2BF10C9D4} = {AFB1EDA0-E0D2-4E95-BAEC-9781B046413E} + {B94069F7-2BD5-4695-B7B7-EBAA1C496DD9} = {AFB1EDA0-E0D2-4E95-BAEC-9781B046413E} + {865652D3-8D1A-4779-92FC-4C54719286B7} = {1EC5651F-83A6-4862-AED2-6BE5103652D0} + {DC5BEB52-1715-4E53-88EF-2D4F1708E394} = {1EC5651F-83A6-4862-AED2-6BE5103652D0} + {B28F65D1-D8DD-45E8-9DD7-74A3BE40B4CE} = {1EC5651F-83A6-4862-AED2-6BE5103652D0} + {CFB0A03A-F787-4EE9-9EA6-8A2A65E82704} = {1EC5651F-83A6-4862-AED2-6BE5103652D0} + {00F7A18F-D2C4-4014-8E4C-552A0A0B0967} = {1EC5651F-83A6-4862-AED2-6BE5103652D0} + {7076C84E-08AE-404B-8F3C-8F66010FA1B1} = {1EC5651F-83A6-4862-AED2-6BE5103652D0} + {F53B34FB-4BBC-4314-8D8A-1F0CD959E83F} = {1EC5651F-83A6-4862-AED2-6BE5103652D0} + {62946D89-B6B1-4A38-A04D-C20912087EFD} = {1EC5651F-83A6-4862-AED2-6BE5103652D0} + {7DA24DFC-EF53-4C06-AB7A-FF6BEF513A1B} = {1EC5651F-83A6-4862-AED2-6BE5103652D0} + {2858C3DB-1E15-4D12-AF09-02CFD624ADD4} = {1EC5651F-83A6-4862-AED2-6BE5103652D0} + {B02737A0-890C-4921-83A5-D77CFB8A6899} = {1EC5651F-83A6-4862-AED2-6BE5103652D0} + {2E333450-68BD-48C5-9540-CFA7A053DCA1} = {1EC5651F-83A6-4862-AED2-6BE5103652D0} + {C360116C-0ED5-4E59-A974-E95F874B4398} = {1EC5651F-83A6-4862-AED2-6BE5103652D0} + {423414D9-6CB8-4AFF-8317-66AD03B6056D} = {1EC5651F-83A6-4862-AED2-6BE5103652D0} + {21D99A15-AB98-4691-A45B-D236B2A91DEB} = {3330092C-6EB0-4AB6-9901-2F4070E2FD81} EndGlobalSection EndGlobal diff --git a/all/samples/GpsBuildAll/GpsBuildAll.csproj b/all/samples/GpsBuildAll/GpsBuildAll.csproj index f5883322a..be47d2947 100644 --- a/all/samples/GpsBuildAll/GpsBuildAll.csproj +++ b/all/samples/GpsBuildAll/GpsBuildAll.csproj @@ -17,7 +17,7 @@ False GpsBuildAll Properties\AndroidManifest.xml - v5.0 + v6.0 true @@ -111,10 +111,6 @@ {7CB92D61-E2FF-472A-9FDF-7E42D15B3EE6} Maps - - {5C4C77A3-4523-4E2B-895B-6EFE4A6A1617} - Measurement - {A7ADD277-FCAB-46D5-8F18-2E4BFFDA3AE7} Nearby @@ -131,10 +127,6 @@ {7A015585-036A-4BD1-8D46-A669EFA89743} SafetyNet - - {7DD8E926-9F75-4F25-95A3-920A5FF48EF8} - SupportWearable - {72CC5E29-5EA5-40E3-98E4-87ED8AB75589} Vision @@ -143,10 +135,6 @@ {7AF74235-AEE2-4F3A-AEDB-7504ED93DDC0} Wallet - - {92BDA198-6A78-4408-844C-CAAF4C04EAFD} - Wearable - {6A38FACF-F0C5-4A49-8A8A-7CE6634207CE} Basement @@ -159,10 +147,6 @@ {A0CDF507-32B7-4994-8248-94FAB8646E35} Auth - - {8B84EE13-119C-41EB-98E8-E42D3ECD0DFD} - AppState - {A069B942-EE12-4283-9C4C-F46549D3978A} AppInvite @@ -179,5 +163,97 @@ {CC4E534D-4992-4FBB-9528-A071EDDEA7E7} Ads + + {7893F52D-09B9-4441-AC47-6F7875BD68BC} + Analytics.Impl + + + {ECB1F68B-B588-4F3B-9A86-510CF4AAA784} + Ads.Lite + + + {9F7F996D-AF44-4947-8392-07B3ED2ED00D} + Iid + + + {2EA64B09-174C-40D0-9A40-44C2BF10C9D4} + TagManager + + + {B94069F7-2BD5-4695-B7B7-EBAA1C496DD9} + TagManager.Api + + + {53F87D88-8871-41A2-9F81-B79AB02FEC24} + Tasks + + + {DC5BEB52-1715-4E53-88EF-2D4F1708E394} + Firebase-Analytics + + + {CFB0A03A-F787-4EE9-9EA6-8A2A65E82704} + Firebase-Analytics-Impl + + + {865652D3-8D1A-4779-92FC-4C54719286B7} + Firebase-Common + + + {B28F65D1-D8DD-45E8-9DD7-74A3BE40B4CE} + Firebase-Iid + + + {B04C50F7-B0CC-4170-8820-9D584E1C0ED3} + Auth.Base + + + {F53B34FB-4BBC-4314-8D8A-1F0CD959E83F} + Firebase-Auth-Common + + + {62946D89-B6B1-4A38-A04D-C20912087EFD} + Firebase-Auth + + + {7DA24DFC-EF53-4C06-AB7A-FF6BEF513A1B} + Firebase-Auth-Module + + + {00F7A18F-D2C4-4014-8E4C-552A0A0B0967} + Firebase-Config + + + {7076C84E-08AE-404B-8F3C-8F66010FA1B1} + Firebase-Crash + + + {B02737A0-890C-4921-83A5-D77CFB8A6899} + Firebase-Database + + + {2858C3DB-1E15-4D12-AF09-02CFD624ADD4} + Firebase-Database-Connection + + + {2E333450-68BD-48C5-9540-CFA7A053DCA1} + Firebase-Messaging + + + {423414D9-6CB8-4AFF-8317-66AD03B6056D} + Firebase-Storage + + + {C360116C-0ED5-4E59-A974-E95F874B4398} + Firebase-Storage-Common + + + {7DD8E926-9F75-4F25-95A3-920A5FF48EF8} + SupportWearable + + + {92BDA198-6A78-4408-844C-CAAF4C04EAFD} + Wearable + \ No newline at end of file diff --git a/all/samples/GpsBuildAll/Properties/AndroidManifest.xml b/all/samples/GpsBuildAll/Properties/AndroidManifest.xml index db20a4a57..4daef56ac 100644 --- a/all/samples/GpsBuildAll/Properties/AndroidManifest.xml +++ b/all/samples/GpsBuildAll/Properties/AndroidManifest.xml @@ -1,6 +1,5 @@ - + - - - + + \ No newline at end of file From f701b7f72cb429f06656220c9659140ef019afc9 Mon Sep 17 00:00:00 2001 From: Redth Date: Thu, 2 Jun 2016 14:15:40 -0400 Subject: [PATCH 044/178] Let's call it alpha for now... --- build.cake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.cake b/build.cake index 28565797c..710d2e3f8 100644 --- a/build.cake +++ b/build.cake @@ -13,7 +13,7 @@ var DOCS_URL = "https://dl-ssl.google.com/android/repository/google_play_service var M2_REPOSITORY = "https://dl-ssl.google.com/android/repository/google_m2repository_r27.zip"; var PLAY_COMPONENT_VERSION = "30.0.1.0"; -var PLAY_NUGET_VERSION = "30.0.1-beta1"; +var PLAY_NUGET_VERSION = "30.0.1-alpha1"; var PLAY_AAR_VERSION = "9.0.1"; var WEAR_COMPONENT_VERSION = "1.4.0.0"; From e59dfb76270ac1ed58d56918016e6b9b8fac1468 Mon Sep 17 00:00:00 2001 From: Redth Date: Fri, 3 Jun 2016 15:35:13 -0400 Subject: [PATCH 045/178] Fixed paths in nuspec files Mac packaging was failing to find the files with the ./ prefix on the paths --- ads-lite/nuget/Xamarin.GooglePlayServices.Ads.Lite.nuspec | 2 +- ads/nuget/Xamarin.GooglePlayServices.Ads.nuspec | 2 +- all/nuget/Xamarin.GooglePlayServices.nuspec | 2 +- .../nuget/Xamarin.GooglePlayServices.Analytics.Impl.nuspec | 2 +- analytics/nuget/Xamarin.GooglePlayServices.Analytics.nuspec | 2 +- .../nuget/Xamarin.GooglePlayServices.AppIndexing.nuspec | 2 +- appinvite/nuget/Xamarin.GooglePlayServices.AppInvite.nuspec | 2 +- appstate/nuget/Xamarin.GooglePlayServices.AppState.nuspec | 6 +++--- auth-base/nuget/Xamarin.GooglePlayServices.Auth.Base.nuspec | 2 +- auth/nuget/Xamarin.GooglePlayServices.Auth.nuspec | 6 +++--- base/nuget/Xamarin.GooglePlayServices.Base.nuspec | 4 ++-- cast/nuget/Xamarin.GooglePlayServices.Cast.nuspec | 2 +- drive/nuget/Xamarin.GooglePlayServices.Drive.nuspec | 2 +- firebase-ads/nuget/Xamarin.Firebase.Ads.nuspec | 4 ++-- .../nuget/Xamarin.Firebase.Analytics.Impl.nuspec | 2 +- firebase-analytics/nuget/Xamarin.Firebase.Analytics.nuspec | 4 ++-- .../nuget/Xamarin.Firebase.Auth.Common.nuspec | 2 +- .../nuget/Xamarin.Firebase.Auth.Module.nuspec | 2 +- firebase-auth/nuget/Xamarin.Firebase.Auth.nuspec | 2 +- firebase-common/nuget/Xamarin.Firebase.Common.nuspec | 2 +- firebase-config/nuget/Xamarin.Firebase.Config.nuspec | 2 +- firebase-core/nuget/Xamarin.Firebase.Core.nuspec | 2 +- firebase-crash/nuget/Xamarin.Firebase.Crash.nuspec | 2 +- .../nuget/Xamarin.Firebase.Database.Connection.nuspec | 2 +- firebase-database/nuget/Xamarin.Firebase.Database.nuspec | 2 +- firebase-iid/nuget/Xamarin.Firebase.Iid.nuspec | 2 +- firebase-messaging/nuget/Xamarin.Firebase.Messaging.nuspec | 2 +- .../nuget/Xamarin.Firebase.Storage.Common.nuspec | 2 +- firebase-storage/nuget/Xamarin.Firebase.Storage.nuspec | 2 +- fitness/nuget/Xamarin.GooglePlayServices.Fitness.nuspec | 2 +- games/nuget/Xamarin.GooglePlayServices.Games.nuspec | 2 +- gcm/nuget/Xamarin.GooglePlayServices.Gcm.nuspec | 2 +- identity/nuget/Xamarin.GooglePlayServices.Identity.nuspec | 2 +- iid/nuget/Xamarin.GooglePlayServices.Iid.nuspec | 2 +- location/nuget/Xamarin.GooglePlayServices.Location.nuspec | 2 +- maps/nuget/Xamarin.GooglePlayServices.Maps.nuspec | 2 +- .../nuget/Xamarin.GooglePlayServices.Measurement.nuspec | 2 +- nearby/nuget/Xamarin.GooglePlayServices.Nearby.nuspec | 2 +- panorama/nuget/Xamarin.GooglePlayServices.Panorama.nuspec | 2 +- plus/nuget/Xamarin.GooglePlayServices.Plus.nuspec | 2 +- safetynet/nuget/Xamarin.GooglePlayServices.SafetyNet.nuspec | 2 +- support-wearable/nuget/Xamarin.Android.Wear.nuspec | 2 +- .../nuget/Xamarin.GooglePlayServices.TagManager.Api.nuspec | 2 +- .../nuget/Xamarin.GooglePlayServices.TagManager.nuspec | 2 +- tasks/nuget/Xamarin.GooglePlayServices.Tasks.nuspec | 2 +- vision/nuget/Xamarin.GooglePlayServices.Vision.nuspec | 2 +- wallet/nuget/Xamarin.GooglePlayServices.Wallet.nuspec | 2 +- wearable/nuget/Xamarin.GooglePlayServices.Wearable.nuspec | 2 +- 48 files changed, 55 insertions(+), 55 deletions(-) diff --git a/ads-lite/nuget/Xamarin.GooglePlayServices.Ads.Lite.nuspec b/ads-lite/nuget/Xamarin.GooglePlayServices.Ads.Lite.nuspec index 30ddbde3b..9ff7cc609 100644 --- a/ads-lite/nuget/Xamarin.GooglePlayServices.Ads.Lite.nuspec +++ b/ads-lite/nuget/Xamarin.GooglePlayServices.Ads.Lite.nuspec @@ -22,6 +22,6 @@ - + diff --git a/ads/nuget/Xamarin.GooglePlayServices.Ads.nuspec b/ads/nuget/Xamarin.GooglePlayServices.Ads.nuspec index 503f13955..dadc97d89 100644 --- a/ads/nuget/Xamarin.GooglePlayServices.Ads.nuspec +++ b/ads/nuget/Xamarin.GooglePlayServices.Ads.nuspec @@ -22,6 +22,6 @@ - + diff --git a/all/nuget/Xamarin.GooglePlayServices.nuspec b/all/nuget/Xamarin.GooglePlayServices.nuspec index 565edace3..e63453aca 100644 --- a/all/nuget/Xamarin.GooglePlayServices.nuspec +++ b/all/nuget/Xamarin.GooglePlayServices.nuspec @@ -44,6 +44,6 @@ - + diff --git a/analytics-impl/nuget/Xamarin.GooglePlayServices.Analytics.Impl.nuspec b/analytics-impl/nuget/Xamarin.GooglePlayServices.Analytics.Impl.nuspec index 18b4a7948..38243b89c 100644 --- a/analytics-impl/nuget/Xamarin.GooglePlayServices.Analytics.Impl.nuspec +++ b/analytics-impl/nuget/Xamarin.GooglePlayServices.Analytics.Impl.nuspec @@ -22,6 +22,6 @@ - + diff --git a/analytics/nuget/Xamarin.GooglePlayServices.Analytics.nuspec b/analytics/nuget/Xamarin.GooglePlayServices.Analytics.nuspec index e3560c622..9bcdb08eb 100644 --- a/analytics/nuget/Xamarin.GooglePlayServices.Analytics.nuspec +++ b/analytics/nuget/Xamarin.GooglePlayServices.Analytics.nuspec @@ -22,6 +22,6 @@ - + diff --git a/appindexing/nuget/Xamarin.GooglePlayServices.AppIndexing.nuspec b/appindexing/nuget/Xamarin.GooglePlayServices.AppIndexing.nuspec index 4b73eeac3..321959056 100644 --- a/appindexing/nuget/Xamarin.GooglePlayServices.AppIndexing.nuspec +++ b/appindexing/nuget/Xamarin.GooglePlayServices.AppIndexing.nuspec @@ -23,6 +23,6 @@ - + diff --git a/appinvite/nuget/Xamarin.GooglePlayServices.AppInvite.nuspec b/appinvite/nuget/Xamarin.GooglePlayServices.AppInvite.nuspec index 5f402f496..a1d66886d 100644 --- a/appinvite/nuget/Xamarin.GooglePlayServices.AppInvite.nuspec +++ b/appinvite/nuget/Xamarin.GooglePlayServices.AppInvite.nuspec @@ -23,6 +23,6 @@ - + diff --git a/appstate/nuget/Xamarin.GooglePlayServices.AppState.nuspec b/appstate/nuget/Xamarin.GooglePlayServices.AppState.nuspec index 830935cfd..d0b89302a 100644 --- a/appstate/nuget/Xamarin.GooglePlayServices.AppState.nuspec +++ b/appstate/nuget/Xamarin.GooglePlayServices.AppState.nuspec @@ -12,14 +12,14 @@ Copyright 2013-2016 https://github.com/xamarin/GooglePlayServicesComponents/ - https://github.com/xamarin/GooglePlayServicesComponents/blob/master/LICENSE.md + https://github.com/xamarin/GooglePlayServicesComponents/blob/master/LICENSE.md https://xamarin-component-icons.s3.amazonaws.com/Xamarin.GooglePlayServices.AppState.png - + - + diff --git a/auth-base/nuget/Xamarin.GooglePlayServices.Auth.Base.nuspec b/auth-base/nuget/Xamarin.GooglePlayServices.Auth.Base.nuspec index e2f038299..bfa4989ed 100644 --- a/auth-base/nuget/Xamarin.GooglePlayServices.Auth.Base.nuspec +++ b/auth-base/nuget/Xamarin.GooglePlayServices.Auth.Base.nuspec @@ -20,6 +20,6 @@ - + diff --git a/auth/nuget/Xamarin.GooglePlayServices.Auth.nuspec b/auth/nuget/Xamarin.GooglePlayServices.Auth.nuspec index e944c8bb4..ebe24d789 100644 --- a/auth/nuget/Xamarin.GooglePlayServices.Auth.nuspec +++ b/auth/nuget/Xamarin.GooglePlayServices.Auth.nuspec @@ -12,14 +12,14 @@ Copyright 2013-2016 https://github.com/xamarin/GooglePlayServicesComponents/ - https://github.com/xamarin/GooglePlayServicesComponents/blob/master/LICENSE.md + https://github.com/xamarin/GooglePlayServicesComponents/blob/master/LICENSE.md https://xamarin-component-icons.s3.amazonaws.com/Xamarin.GooglePlayServices.Auth.png - + - + diff --git a/base/nuget/Xamarin.GooglePlayServices.Base.nuspec b/base/nuget/Xamarin.GooglePlayServices.Base.nuspec index 12ddee3c0..d0915d2a8 100644 --- a/base/nuget/Xamarin.GooglePlayServices.Base.nuspec +++ b/base/nuget/Xamarin.GooglePlayServices.Base.nuspec @@ -41,9 +41,9 @@ - + - + diff --git a/cast/nuget/Xamarin.GooglePlayServices.Cast.nuspec b/cast/nuget/Xamarin.GooglePlayServices.Cast.nuspec index 384106b96..d1cc3b0f7 100644 --- a/cast/nuget/Xamarin.GooglePlayServices.Cast.nuspec +++ b/cast/nuget/Xamarin.GooglePlayServices.Cast.nuspec @@ -26,6 +26,6 @@ - + diff --git a/drive/nuget/Xamarin.GooglePlayServices.Drive.nuspec b/drive/nuget/Xamarin.GooglePlayServices.Drive.nuspec index 5f825679b..75a413837 100644 --- a/drive/nuget/Xamarin.GooglePlayServices.Drive.nuspec +++ b/drive/nuget/Xamarin.GooglePlayServices.Drive.nuspec @@ -23,6 +23,6 @@ - + diff --git a/firebase-ads/nuget/Xamarin.Firebase.Ads.nuspec b/firebase-ads/nuget/Xamarin.Firebase.Ads.nuspec index 5979d3c6c..3d6b9cdcc 100644 --- a/firebase-ads/nuget/Xamarin.Firebase.Ads.nuspec +++ b/firebase-ads/nuget/Xamarin.Firebase.Ads.nuspec @@ -18,10 +18,10 @@ - + - + diff --git a/firebase-analytics-impl/nuget/Xamarin.Firebase.Analytics.Impl.nuspec b/firebase-analytics-impl/nuget/Xamarin.Firebase.Analytics.Impl.nuspec index db47a8b61..b4f686a42 100644 --- a/firebase-analytics-impl/nuget/Xamarin.Firebase.Analytics.Impl.nuspec +++ b/firebase-analytics-impl/nuget/Xamarin.Firebase.Analytics.Impl.nuspec @@ -21,6 +21,6 @@ - + diff --git a/firebase-analytics/nuget/Xamarin.Firebase.Analytics.nuspec b/firebase-analytics/nuget/Xamarin.Firebase.Analytics.nuspec index 54140fd73..3eb0dc579 100644 --- a/firebase-analytics/nuget/Xamarin.Firebase.Analytics.nuspec +++ b/firebase-analytics/nuget/Xamarin.Firebase.Analytics.nuspec @@ -18,9 +18,9 @@ - + - + diff --git a/firebase-auth-common/nuget/Xamarin.Firebase.Auth.Common.nuspec b/firebase-auth-common/nuget/Xamarin.Firebase.Auth.Common.nuspec index 6d2d7fe94..c85b2352f 100644 --- a/firebase-auth-common/nuget/Xamarin.Firebase.Auth.Common.nuspec +++ b/firebase-auth-common/nuget/Xamarin.Firebase.Auth.Common.nuspec @@ -23,6 +23,6 @@ - + diff --git a/firebase-auth-module/nuget/Xamarin.Firebase.Auth.Module.nuspec b/firebase-auth-module/nuget/Xamarin.Firebase.Auth.Module.nuspec index 3c7d4564e..fed28d84e 100644 --- a/firebase-auth-module/nuget/Xamarin.Firebase.Auth.Module.nuspec +++ b/firebase-auth-module/nuget/Xamarin.Firebase.Auth.Module.nuspec @@ -21,6 +21,6 @@ - + diff --git a/firebase-auth/nuget/Xamarin.Firebase.Auth.nuspec b/firebase-auth/nuget/Xamarin.Firebase.Auth.nuspec index 60bb7af38..bcf387861 100644 --- a/firebase-auth/nuget/Xamarin.Firebase.Auth.nuspec +++ b/firebase-auth/nuget/Xamarin.Firebase.Auth.nuspec @@ -24,6 +24,6 @@ - + diff --git a/firebase-common/nuget/Xamarin.Firebase.Common.nuspec b/firebase-common/nuget/Xamarin.Firebase.Common.nuspec index 2d28f7b7e..03a698b27 100644 --- a/firebase-common/nuget/Xamarin.Firebase.Common.nuspec +++ b/firebase-common/nuget/Xamarin.Firebase.Common.nuspec @@ -21,6 +21,6 @@ - + diff --git a/firebase-config/nuget/Xamarin.Firebase.Config.nuspec b/firebase-config/nuget/Xamarin.Firebase.Config.nuspec index 178f701c6..fa3aa863a 100644 --- a/firebase-config/nuget/Xamarin.Firebase.Config.nuspec +++ b/firebase-config/nuget/Xamarin.Firebase.Config.nuspec @@ -24,6 +24,6 @@ - + diff --git a/firebase-core/nuget/Xamarin.Firebase.Core.nuspec b/firebase-core/nuget/Xamarin.Firebase.Core.nuspec index 375da2401..d117dfbda 100644 --- a/firebase-core/nuget/Xamarin.Firebase.Core.nuspec +++ b/firebase-core/nuget/Xamarin.Firebase.Core.nuspec @@ -21,6 +21,6 @@ - + diff --git a/firebase-crash/nuget/Xamarin.Firebase.Crash.nuspec b/firebase-crash/nuget/Xamarin.Firebase.Crash.nuspec index c00a36256..515dd5808 100644 --- a/firebase-crash/nuget/Xamarin.Firebase.Crash.nuspec +++ b/firebase-crash/nuget/Xamarin.Firebase.Crash.nuspec @@ -24,6 +24,6 @@ - + diff --git a/firebase-database-connection/nuget/Xamarin.Firebase.Database.Connection.nuspec b/firebase-database-connection/nuget/Xamarin.Firebase.Database.Connection.nuspec index ba74bd627..fb30d915f 100644 --- a/firebase-database-connection/nuget/Xamarin.Firebase.Database.Connection.nuspec +++ b/firebase-database-connection/nuget/Xamarin.Firebase.Database.Connection.nuspec @@ -22,6 +22,6 @@ - + diff --git a/firebase-database/nuget/Xamarin.Firebase.Database.nuspec b/firebase-database/nuget/Xamarin.Firebase.Database.nuspec index ab5e42742..fa6969341 100644 --- a/firebase-database/nuget/Xamarin.Firebase.Database.nuspec +++ b/firebase-database/nuget/Xamarin.Firebase.Database.nuspec @@ -24,6 +24,6 @@ - + diff --git a/firebase-iid/nuget/Xamarin.Firebase.Iid.nuspec b/firebase-iid/nuget/Xamarin.Firebase.Iid.nuspec index abafd7b9d..cdfcdfc63 100644 --- a/firebase-iid/nuget/Xamarin.Firebase.Iid.nuspec +++ b/firebase-iid/nuget/Xamarin.Firebase.Iid.nuspec @@ -21,6 +21,6 @@ - + diff --git a/firebase-messaging/nuget/Xamarin.Firebase.Messaging.nuspec b/firebase-messaging/nuget/Xamarin.Firebase.Messaging.nuspec index a46857301..26ae7d43f 100644 --- a/firebase-messaging/nuget/Xamarin.Firebase.Messaging.nuspec +++ b/firebase-messaging/nuget/Xamarin.Firebase.Messaging.nuspec @@ -22,6 +22,6 @@ - + diff --git a/firebase-storage-common/nuget/Xamarin.Firebase.Storage.Common.nuspec b/firebase-storage-common/nuget/Xamarin.Firebase.Storage.Common.nuspec index c6a80fd47..35db377bc 100644 --- a/firebase-storage-common/nuget/Xamarin.Firebase.Storage.Common.nuspec +++ b/firebase-storage-common/nuget/Xamarin.Firebase.Storage.Common.nuspec @@ -21,6 +21,6 @@ - + diff --git a/firebase-storage/nuget/Xamarin.Firebase.Storage.nuspec b/firebase-storage/nuget/Xamarin.Firebase.Storage.nuspec index c5a8a3295..e7215855f 100644 --- a/firebase-storage/nuget/Xamarin.Firebase.Storage.nuspec +++ b/firebase-storage/nuget/Xamarin.Firebase.Storage.nuspec @@ -24,6 +24,6 @@ - + diff --git a/fitness/nuget/Xamarin.GooglePlayServices.Fitness.nuspec b/fitness/nuget/Xamarin.GooglePlayServices.Fitness.nuspec index ba871f9d0..c7d9b8d5b 100644 --- a/fitness/nuget/Xamarin.GooglePlayServices.Fitness.nuspec +++ b/fitness/nuget/Xamarin.GooglePlayServices.Fitness.nuspec @@ -26,6 +26,6 @@ - + diff --git a/games/nuget/Xamarin.GooglePlayServices.Games.nuspec b/games/nuget/Xamarin.GooglePlayServices.Games.nuspec index 00ea3ef44..7ed9261ef 100644 --- a/games/nuget/Xamarin.GooglePlayServices.Games.nuspec +++ b/games/nuget/Xamarin.GooglePlayServices.Games.nuspec @@ -24,6 +24,6 @@ - + diff --git a/gcm/nuget/Xamarin.GooglePlayServices.Gcm.nuspec b/gcm/nuget/Xamarin.GooglePlayServices.Gcm.nuspec index c017593fe..34e30b7ee 100644 --- a/gcm/nuget/Xamarin.GooglePlayServices.Gcm.nuspec +++ b/gcm/nuget/Xamarin.GooglePlayServices.Gcm.nuspec @@ -26,6 +26,6 @@ - + diff --git a/identity/nuget/Xamarin.GooglePlayServices.Identity.nuspec b/identity/nuget/Xamarin.GooglePlayServices.Identity.nuspec index 7328cd90a..ade279eb5 100644 --- a/identity/nuget/Xamarin.GooglePlayServices.Identity.nuspec +++ b/identity/nuget/Xamarin.GooglePlayServices.Identity.nuspec @@ -21,6 +21,6 @@ - + diff --git a/iid/nuget/Xamarin.GooglePlayServices.Iid.nuspec b/iid/nuget/Xamarin.GooglePlayServices.Iid.nuspec index 21feee27e..e184075c0 100644 --- a/iid/nuget/Xamarin.GooglePlayServices.Iid.nuspec +++ b/iid/nuget/Xamarin.GooglePlayServices.Iid.nuspec @@ -20,6 +20,6 @@ - + diff --git a/location/nuget/Xamarin.GooglePlayServices.Location.nuspec b/location/nuget/Xamarin.GooglePlayServices.Location.nuspec index 8670b2602..6f869bd28 100644 --- a/location/nuget/Xamarin.GooglePlayServices.Location.nuspec +++ b/location/nuget/Xamarin.GooglePlayServices.Location.nuspec @@ -24,6 +24,6 @@ - + diff --git a/maps/nuget/Xamarin.GooglePlayServices.Maps.nuspec b/maps/nuget/Xamarin.GooglePlayServices.Maps.nuspec index 1d2e6d684..85abf8ef4 100644 --- a/maps/nuget/Xamarin.GooglePlayServices.Maps.nuspec +++ b/maps/nuget/Xamarin.GooglePlayServices.Maps.nuspec @@ -24,6 +24,6 @@ - + diff --git a/measurement/nuget/Xamarin.GooglePlayServices.Measurement.nuspec b/measurement/nuget/Xamarin.GooglePlayServices.Measurement.nuspec index 2cbe27c09..58ed655ae 100644 --- a/measurement/nuget/Xamarin.GooglePlayServices.Measurement.nuspec +++ b/measurement/nuget/Xamarin.GooglePlayServices.Measurement.nuspec @@ -21,6 +21,6 @@ - + diff --git a/nearby/nuget/Xamarin.GooglePlayServices.Nearby.nuspec b/nearby/nuget/Xamarin.GooglePlayServices.Nearby.nuspec index 0b37dd327..3cd29bd00 100644 --- a/nearby/nuget/Xamarin.GooglePlayServices.Nearby.nuspec +++ b/nearby/nuget/Xamarin.GooglePlayServices.Nearby.nuspec @@ -23,6 +23,6 @@ - + diff --git a/panorama/nuget/Xamarin.GooglePlayServices.Panorama.nuspec b/panorama/nuget/Xamarin.GooglePlayServices.Panorama.nuspec index b27787949..9c723a610 100644 --- a/panorama/nuget/Xamarin.GooglePlayServices.Panorama.nuspec +++ b/panorama/nuget/Xamarin.GooglePlayServices.Panorama.nuspec @@ -23,6 +23,6 @@ - + diff --git a/plus/nuget/Xamarin.GooglePlayServices.Plus.nuspec b/plus/nuget/Xamarin.GooglePlayServices.Plus.nuspec index 5e588706a..c58561c61 100644 --- a/plus/nuget/Xamarin.GooglePlayServices.Plus.nuspec +++ b/plus/nuget/Xamarin.GooglePlayServices.Plus.nuspec @@ -22,6 +22,6 @@ - + diff --git a/safetynet/nuget/Xamarin.GooglePlayServices.SafetyNet.nuspec b/safetynet/nuget/Xamarin.GooglePlayServices.SafetyNet.nuspec index f2f368545..f6e1f8f9b 100644 --- a/safetynet/nuget/Xamarin.GooglePlayServices.SafetyNet.nuspec +++ b/safetynet/nuget/Xamarin.GooglePlayServices.SafetyNet.nuspec @@ -23,6 +23,6 @@ - + diff --git a/support-wearable/nuget/Xamarin.Android.Wear.nuspec b/support-wearable/nuget/Xamarin.Android.Wear.nuspec index a2f688ebe..a37d32e05 100644 --- a/support-wearable/nuget/Xamarin.Android.Wear.nuspec +++ b/support-wearable/nuget/Xamarin.Android.Wear.nuspec @@ -29,6 +29,6 @@ - + diff --git a/tagmanager-api/nuget/Xamarin.GooglePlayServices.TagManager.Api.nuspec b/tagmanager-api/nuget/Xamarin.GooglePlayServices.TagManager.Api.nuspec index 30a62870f..33d2fd660 100644 --- a/tagmanager-api/nuget/Xamarin.GooglePlayServices.TagManager.Api.nuspec +++ b/tagmanager-api/nuget/Xamarin.GooglePlayServices.TagManager.Api.nuspec @@ -20,6 +20,6 @@ - + diff --git a/tagmanager/nuget/Xamarin.GooglePlayServices.TagManager.nuspec b/tagmanager/nuget/Xamarin.GooglePlayServices.TagManager.nuspec index 8e3e78628..426fcf423 100644 --- a/tagmanager/nuget/Xamarin.GooglePlayServices.TagManager.nuspec +++ b/tagmanager/nuget/Xamarin.GooglePlayServices.TagManager.nuspec @@ -20,6 +20,6 @@ - + diff --git a/tasks/nuget/Xamarin.GooglePlayServices.Tasks.nuspec b/tasks/nuget/Xamarin.GooglePlayServices.Tasks.nuspec index 046b80d5a..d6ed0818f 100644 --- a/tasks/nuget/Xamarin.GooglePlayServices.Tasks.nuspec +++ b/tasks/nuget/Xamarin.GooglePlayServices.Tasks.nuspec @@ -21,6 +21,6 @@ - + diff --git a/vision/nuget/Xamarin.GooglePlayServices.Vision.nuspec b/vision/nuget/Xamarin.GooglePlayServices.Vision.nuspec index c1111aa9b..2ddd7697b 100644 --- a/vision/nuget/Xamarin.GooglePlayServices.Vision.nuspec +++ b/vision/nuget/Xamarin.GooglePlayServices.Vision.nuspec @@ -27,6 +27,6 @@ - + diff --git a/wallet/nuget/Xamarin.GooglePlayServices.Wallet.nuspec b/wallet/nuget/Xamarin.GooglePlayServices.Wallet.nuspec index 3992dd6f2..79d253d89 100644 --- a/wallet/nuget/Xamarin.GooglePlayServices.Wallet.nuspec +++ b/wallet/nuget/Xamarin.GooglePlayServices.Wallet.nuspec @@ -26,6 +26,6 @@ - + diff --git a/wearable/nuget/Xamarin.GooglePlayServices.Wearable.nuspec b/wearable/nuget/Xamarin.GooglePlayServices.Wearable.nuspec index 91e41ec21..3728535dd 100644 --- a/wearable/nuget/Xamarin.GooglePlayServices.Wearable.nuspec +++ b/wearable/nuget/Xamarin.GooglePlayServices.Wearable.nuspec @@ -25,6 +25,6 @@ - + From 0c7942a7e4abedc857466f9175a094480c05e0b9 Mon Sep 17 00:00:00 2001 From: Redth Date: Mon, 6 Jun 2016 15:10:02 -0400 Subject: [PATCH 046/178] Bump nuget versions --- build.cake | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build.cake b/build.cake index 710d2e3f8..6064126e4 100644 --- a/build.cake +++ b/build.cake @@ -13,11 +13,11 @@ var DOCS_URL = "https://dl-ssl.google.com/android/repository/google_play_service var M2_REPOSITORY = "https://dl-ssl.google.com/android/repository/google_m2repository_r27.zip"; var PLAY_COMPONENT_VERSION = "30.0.1.0"; -var PLAY_NUGET_VERSION = "30.0.1-alpha1"; +var PLAY_NUGET_VERSION = "30.0.1-alpha2"; var PLAY_AAR_VERSION = "9.0.1"; var WEAR_COMPONENT_VERSION = "1.4.0.0"; -var WEAR_NUGET_VERSION = "1.4.0.0-alpha1"; +var WEAR_NUGET_VERSION = "1.4.0.0-alpha2"; var WEAR_AAR_VERSION = PLAY_AAR_VERSION; var WEARABLE_SUPPORT_VERSION = "1.4.0"; From ad44cc16f42e6c81c5f1609a6fc92864252f0da0 Mon Sep 17 00:00:00 2001 From: Redth Date: Tue, 7 Jun 2016 11:35:36 -0400 Subject: [PATCH 047/178] Fixed slash for OSX NuGet packaging in the target attribute of the nuspec --- ads-lite/nuget/Xamarin.GooglePlayServices.Ads.Lite.nuspec | 2 +- ads/nuget/Xamarin.GooglePlayServices.Ads.nuspec | 2 +- all/nuget/Xamarin.GooglePlayServices.nuspec | 2 +- .../nuget/Xamarin.GooglePlayServices.Analytics.Impl.nuspec | 2 +- analytics/nuget/Xamarin.GooglePlayServices.Analytics.nuspec | 2 +- appindexing/nuget/Xamarin.GooglePlayServices.AppIndexing.nuspec | 2 +- appinvite/nuget/Xamarin.GooglePlayServices.AppInvite.nuspec | 2 +- appstate/nuget/Xamarin.GooglePlayServices.AppState.nuspec | 2 +- auth-base/nuget/Xamarin.GooglePlayServices.Auth.Base.nuspec | 2 +- auth/nuget/Xamarin.GooglePlayServices.Auth.nuspec | 2 +- base/nuget/Xamarin.GooglePlayServices.Base.nuspec | 2 +- basement/nuget/Xamarin.GooglePlayServices.Basement.nuspec | 2 +- cast/nuget/Xamarin.GooglePlayServices.Cast.nuspec | 2 +- drive/nuget/Xamarin.GooglePlayServices.Drive.nuspec | 2 +- firebase-ads/nuget/Xamarin.Firebase.Ads.nuspec | 2 +- .../nuget/Xamarin.Firebase.Analytics.Impl.nuspec | 2 +- firebase-analytics/nuget/Xamarin.Firebase.Analytics.nuspec | 2 +- firebase-auth-common/nuget/Xamarin.Firebase.Auth.Common.nuspec | 2 +- firebase-auth-module/nuget/Xamarin.Firebase.Auth.Module.nuspec | 2 +- firebase-auth/nuget/Xamarin.Firebase.Auth.nuspec | 2 +- firebase-common/nuget/Xamarin.Firebase.Common.nuspec | 2 +- firebase-config/nuget/Xamarin.Firebase.Config.nuspec | 2 +- firebase-core/nuget/Xamarin.Firebase.Core.nuspec | 2 +- firebase-crash/nuget/Xamarin.Firebase.Crash.nuspec | 2 +- .../nuget/Xamarin.Firebase.Database.Connection.nuspec | 2 +- firebase-database/nuget/Xamarin.Firebase.Database.nuspec | 2 +- firebase-iid/nuget/Xamarin.Firebase.Iid.nuspec | 2 +- firebase-messaging/nuget/Xamarin.Firebase.Messaging.nuspec | 2 +- .../nuget/Xamarin.Firebase.Storage.Common.nuspec | 2 +- firebase-storage/nuget/Xamarin.Firebase.Storage.nuspec | 2 +- fitness/nuget/Xamarin.GooglePlayServices.Fitness.nuspec | 2 +- games/nuget/Xamarin.GooglePlayServices.Games.nuspec | 2 +- gcm/nuget/Xamarin.GooglePlayServices.Gcm.nuspec | 2 +- identity/nuget/Xamarin.GooglePlayServices.Identity.nuspec | 2 +- iid/nuget/Xamarin.GooglePlayServices.Iid.nuspec | 2 +- location/nuget/Xamarin.GooglePlayServices.Location.nuspec | 2 +- maps/nuget/Xamarin.GooglePlayServices.Maps.nuspec | 2 +- measurement/nuget/Xamarin.GooglePlayServices.Measurement.nuspec | 2 +- nearby/nuget/Xamarin.GooglePlayServices.Nearby.nuspec | 2 +- panorama/nuget/Xamarin.GooglePlayServices.Panorama.nuspec | 2 +- plus/nuget/Xamarin.GooglePlayServices.Plus.nuspec | 2 +- safetynet/nuget/Xamarin.GooglePlayServices.SafetyNet.nuspec | 2 +- support-wearable/nuget/Xamarin.Android.Wear.nuspec | 2 +- .../nuget/Xamarin.GooglePlayServices.TagManager.Api.nuspec | 2 +- tagmanager/nuget/Xamarin.GooglePlayServices.TagManager.nuspec | 2 +- tasks/nuget/Xamarin.GooglePlayServices.Tasks.nuspec | 2 +- vision/nuget/Xamarin.GooglePlayServices.Vision.nuspec | 2 +- wallet/nuget/Xamarin.GooglePlayServices.Wallet.nuspec | 2 +- wearable/nuget/Xamarin.GooglePlayServices.Wearable.nuspec | 2 +- 49 files changed, 49 insertions(+), 49 deletions(-) diff --git a/ads-lite/nuget/Xamarin.GooglePlayServices.Ads.Lite.nuspec b/ads-lite/nuget/Xamarin.GooglePlayServices.Ads.Lite.nuspec index 9ff7cc609..29077cc4b 100644 --- a/ads-lite/nuget/Xamarin.GooglePlayServices.Ads.Lite.nuspec +++ b/ads-lite/nuget/Xamarin.GooglePlayServices.Ads.Lite.nuspec @@ -22,6 +22,6 @@ - + diff --git a/ads/nuget/Xamarin.GooglePlayServices.Ads.nuspec b/ads/nuget/Xamarin.GooglePlayServices.Ads.nuspec index dadc97d89..31a42ad0e 100644 --- a/ads/nuget/Xamarin.GooglePlayServices.Ads.nuspec +++ b/ads/nuget/Xamarin.GooglePlayServices.Ads.nuspec @@ -22,6 +22,6 @@ - + diff --git a/all/nuget/Xamarin.GooglePlayServices.nuspec b/all/nuget/Xamarin.GooglePlayServices.nuspec index e63453aca..629705902 100644 --- a/all/nuget/Xamarin.GooglePlayServices.nuspec +++ b/all/nuget/Xamarin.GooglePlayServices.nuspec @@ -44,6 +44,6 @@ - + diff --git a/analytics-impl/nuget/Xamarin.GooglePlayServices.Analytics.Impl.nuspec b/analytics-impl/nuget/Xamarin.GooglePlayServices.Analytics.Impl.nuspec index 38243b89c..d030a1a99 100644 --- a/analytics-impl/nuget/Xamarin.GooglePlayServices.Analytics.Impl.nuspec +++ b/analytics-impl/nuget/Xamarin.GooglePlayServices.Analytics.Impl.nuspec @@ -22,6 +22,6 @@ - + diff --git a/analytics/nuget/Xamarin.GooglePlayServices.Analytics.nuspec b/analytics/nuget/Xamarin.GooglePlayServices.Analytics.nuspec index 9bcdb08eb..f9d2464eb 100644 --- a/analytics/nuget/Xamarin.GooglePlayServices.Analytics.nuspec +++ b/analytics/nuget/Xamarin.GooglePlayServices.Analytics.nuspec @@ -22,6 +22,6 @@ - + diff --git a/appindexing/nuget/Xamarin.GooglePlayServices.AppIndexing.nuspec b/appindexing/nuget/Xamarin.GooglePlayServices.AppIndexing.nuspec index 321959056..a712b797d 100644 --- a/appindexing/nuget/Xamarin.GooglePlayServices.AppIndexing.nuspec +++ b/appindexing/nuget/Xamarin.GooglePlayServices.AppIndexing.nuspec @@ -23,6 +23,6 @@ - + diff --git a/appinvite/nuget/Xamarin.GooglePlayServices.AppInvite.nuspec b/appinvite/nuget/Xamarin.GooglePlayServices.AppInvite.nuspec index a1d66886d..f32a9d4e4 100644 --- a/appinvite/nuget/Xamarin.GooglePlayServices.AppInvite.nuspec +++ b/appinvite/nuget/Xamarin.GooglePlayServices.AppInvite.nuspec @@ -23,6 +23,6 @@ - + diff --git a/appstate/nuget/Xamarin.GooglePlayServices.AppState.nuspec b/appstate/nuget/Xamarin.GooglePlayServices.AppState.nuspec index d0b89302a..f524dcbf4 100644 --- a/appstate/nuget/Xamarin.GooglePlayServices.AppState.nuspec +++ b/appstate/nuget/Xamarin.GooglePlayServices.AppState.nuspec @@ -20,6 +20,6 @@ - + diff --git a/auth-base/nuget/Xamarin.GooglePlayServices.Auth.Base.nuspec b/auth-base/nuget/Xamarin.GooglePlayServices.Auth.Base.nuspec index bfa4989ed..6058e29e4 100644 --- a/auth-base/nuget/Xamarin.GooglePlayServices.Auth.Base.nuspec +++ b/auth-base/nuget/Xamarin.GooglePlayServices.Auth.Base.nuspec @@ -20,6 +20,6 @@ - + diff --git a/auth/nuget/Xamarin.GooglePlayServices.Auth.nuspec b/auth/nuget/Xamarin.GooglePlayServices.Auth.nuspec index ebe24d789..b0d09a2cb 100644 --- a/auth/nuget/Xamarin.GooglePlayServices.Auth.nuspec +++ b/auth/nuget/Xamarin.GooglePlayServices.Auth.nuspec @@ -20,6 +20,6 @@ - + diff --git a/base/nuget/Xamarin.GooglePlayServices.Base.nuspec b/base/nuget/Xamarin.GooglePlayServices.Base.nuspec index d0915d2a8..42eee25e4 100644 --- a/base/nuget/Xamarin.GooglePlayServices.Base.nuspec +++ b/base/nuget/Xamarin.GooglePlayServices.Base.nuspec @@ -44,6 +44,6 @@ - + diff --git a/basement/nuget/Xamarin.GooglePlayServices.Basement.nuspec b/basement/nuget/Xamarin.GooglePlayServices.Basement.nuspec index 99a5845e7..8328a7001 100644 --- a/basement/nuget/Xamarin.GooglePlayServices.Basement.nuspec +++ b/basement/nuget/Xamarin.GooglePlayServices.Basement.nuspec @@ -47,6 +47,6 @@ - + diff --git a/cast/nuget/Xamarin.GooglePlayServices.Cast.nuspec b/cast/nuget/Xamarin.GooglePlayServices.Cast.nuspec index d1cc3b0f7..f7a29c640 100644 --- a/cast/nuget/Xamarin.GooglePlayServices.Cast.nuspec +++ b/cast/nuget/Xamarin.GooglePlayServices.Cast.nuspec @@ -26,6 +26,6 @@ - + diff --git a/drive/nuget/Xamarin.GooglePlayServices.Drive.nuspec b/drive/nuget/Xamarin.GooglePlayServices.Drive.nuspec index 75a413837..e22b5489d 100644 --- a/drive/nuget/Xamarin.GooglePlayServices.Drive.nuspec +++ b/drive/nuget/Xamarin.GooglePlayServices.Drive.nuspec @@ -23,6 +23,6 @@ - + diff --git a/firebase-ads/nuget/Xamarin.Firebase.Ads.nuspec b/firebase-ads/nuget/Xamarin.Firebase.Ads.nuspec index 3d6b9cdcc..dba4ebe6c 100644 --- a/firebase-ads/nuget/Xamarin.Firebase.Ads.nuspec +++ b/firebase-ads/nuget/Xamarin.Firebase.Ads.nuspec @@ -22,6 +22,6 @@ - + diff --git a/firebase-analytics-impl/nuget/Xamarin.Firebase.Analytics.Impl.nuspec b/firebase-analytics-impl/nuget/Xamarin.Firebase.Analytics.Impl.nuspec index b4f686a42..da619d0fa 100644 --- a/firebase-analytics-impl/nuget/Xamarin.Firebase.Analytics.Impl.nuspec +++ b/firebase-analytics-impl/nuget/Xamarin.Firebase.Analytics.Impl.nuspec @@ -21,6 +21,6 @@ - + diff --git a/firebase-analytics/nuget/Xamarin.Firebase.Analytics.nuspec b/firebase-analytics/nuget/Xamarin.Firebase.Analytics.nuspec index 3eb0dc579..c4d207ed1 100644 --- a/firebase-analytics/nuget/Xamarin.Firebase.Analytics.nuspec +++ b/firebase-analytics/nuget/Xamarin.Firebase.Analytics.nuspec @@ -21,6 +21,6 @@ - + diff --git a/firebase-auth-common/nuget/Xamarin.Firebase.Auth.Common.nuspec b/firebase-auth-common/nuget/Xamarin.Firebase.Auth.Common.nuspec index c85b2352f..17016240b 100644 --- a/firebase-auth-common/nuget/Xamarin.Firebase.Auth.Common.nuspec +++ b/firebase-auth-common/nuget/Xamarin.Firebase.Auth.Common.nuspec @@ -23,6 +23,6 @@ - + diff --git a/firebase-auth-module/nuget/Xamarin.Firebase.Auth.Module.nuspec b/firebase-auth-module/nuget/Xamarin.Firebase.Auth.Module.nuspec index fed28d84e..76a42874c 100644 --- a/firebase-auth-module/nuget/Xamarin.Firebase.Auth.Module.nuspec +++ b/firebase-auth-module/nuget/Xamarin.Firebase.Auth.Module.nuspec @@ -21,6 +21,6 @@ - + diff --git a/firebase-auth/nuget/Xamarin.Firebase.Auth.nuspec b/firebase-auth/nuget/Xamarin.Firebase.Auth.nuspec index bcf387861..f9892ab94 100644 --- a/firebase-auth/nuget/Xamarin.Firebase.Auth.nuspec +++ b/firebase-auth/nuget/Xamarin.Firebase.Auth.nuspec @@ -24,6 +24,6 @@ - + diff --git a/firebase-common/nuget/Xamarin.Firebase.Common.nuspec b/firebase-common/nuget/Xamarin.Firebase.Common.nuspec index 03a698b27..5d3107654 100644 --- a/firebase-common/nuget/Xamarin.Firebase.Common.nuspec +++ b/firebase-common/nuget/Xamarin.Firebase.Common.nuspec @@ -21,6 +21,6 @@ - + diff --git a/firebase-config/nuget/Xamarin.Firebase.Config.nuspec b/firebase-config/nuget/Xamarin.Firebase.Config.nuspec index fa3aa863a..6fe30d46d 100644 --- a/firebase-config/nuget/Xamarin.Firebase.Config.nuspec +++ b/firebase-config/nuget/Xamarin.Firebase.Config.nuspec @@ -24,6 +24,6 @@ - + diff --git a/firebase-core/nuget/Xamarin.Firebase.Core.nuspec b/firebase-core/nuget/Xamarin.Firebase.Core.nuspec index d117dfbda..2a2395538 100644 --- a/firebase-core/nuget/Xamarin.Firebase.Core.nuspec +++ b/firebase-core/nuget/Xamarin.Firebase.Core.nuspec @@ -21,6 +21,6 @@ - + diff --git a/firebase-crash/nuget/Xamarin.Firebase.Crash.nuspec b/firebase-crash/nuget/Xamarin.Firebase.Crash.nuspec index 515dd5808..fa36f5d56 100644 --- a/firebase-crash/nuget/Xamarin.Firebase.Crash.nuspec +++ b/firebase-crash/nuget/Xamarin.Firebase.Crash.nuspec @@ -24,6 +24,6 @@ - + diff --git a/firebase-database-connection/nuget/Xamarin.Firebase.Database.Connection.nuspec b/firebase-database-connection/nuget/Xamarin.Firebase.Database.Connection.nuspec index fb30d915f..83edeeeba 100644 --- a/firebase-database-connection/nuget/Xamarin.Firebase.Database.Connection.nuspec +++ b/firebase-database-connection/nuget/Xamarin.Firebase.Database.Connection.nuspec @@ -22,6 +22,6 @@ - + diff --git a/firebase-database/nuget/Xamarin.Firebase.Database.nuspec b/firebase-database/nuget/Xamarin.Firebase.Database.nuspec index fa6969341..99b26b963 100644 --- a/firebase-database/nuget/Xamarin.Firebase.Database.nuspec +++ b/firebase-database/nuget/Xamarin.Firebase.Database.nuspec @@ -24,6 +24,6 @@ - + diff --git a/firebase-iid/nuget/Xamarin.Firebase.Iid.nuspec b/firebase-iid/nuget/Xamarin.Firebase.Iid.nuspec index cdfcdfc63..3abeaee21 100644 --- a/firebase-iid/nuget/Xamarin.Firebase.Iid.nuspec +++ b/firebase-iid/nuget/Xamarin.Firebase.Iid.nuspec @@ -21,6 +21,6 @@ - + diff --git a/firebase-messaging/nuget/Xamarin.Firebase.Messaging.nuspec b/firebase-messaging/nuget/Xamarin.Firebase.Messaging.nuspec index 26ae7d43f..c7eb856eb 100644 --- a/firebase-messaging/nuget/Xamarin.Firebase.Messaging.nuspec +++ b/firebase-messaging/nuget/Xamarin.Firebase.Messaging.nuspec @@ -22,6 +22,6 @@ - + diff --git a/firebase-storage-common/nuget/Xamarin.Firebase.Storage.Common.nuspec b/firebase-storage-common/nuget/Xamarin.Firebase.Storage.Common.nuspec index 35db377bc..1dcd2d815 100644 --- a/firebase-storage-common/nuget/Xamarin.Firebase.Storage.Common.nuspec +++ b/firebase-storage-common/nuget/Xamarin.Firebase.Storage.Common.nuspec @@ -21,6 +21,6 @@ - + diff --git a/firebase-storage/nuget/Xamarin.Firebase.Storage.nuspec b/firebase-storage/nuget/Xamarin.Firebase.Storage.nuspec index e7215855f..6a78cf954 100644 --- a/firebase-storage/nuget/Xamarin.Firebase.Storage.nuspec +++ b/firebase-storage/nuget/Xamarin.Firebase.Storage.nuspec @@ -24,6 +24,6 @@ - + diff --git a/fitness/nuget/Xamarin.GooglePlayServices.Fitness.nuspec b/fitness/nuget/Xamarin.GooglePlayServices.Fitness.nuspec index c7d9b8d5b..81b2767c7 100644 --- a/fitness/nuget/Xamarin.GooglePlayServices.Fitness.nuspec +++ b/fitness/nuget/Xamarin.GooglePlayServices.Fitness.nuspec @@ -26,6 +26,6 @@ - + diff --git a/games/nuget/Xamarin.GooglePlayServices.Games.nuspec b/games/nuget/Xamarin.GooglePlayServices.Games.nuspec index 7ed9261ef..e08abd953 100644 --- a/games/nuget/Xamarin.GooglePlayServices.Games.nuspec +++ b/games/nuget/Xamarin.GooglePlayServices.Games.nuspec @@ -24,6 +24,6 @@ - + diff --git a/gcm/nuget/Xamarin.GooglePlayServices.Gcm.nuspec b/gcm/nuget/Xamarin.GooglePlayServices.Gcm.nuspec index 34e30b7ee..d18f67f8f 100644 --- a/gcm/nuget/Xamarin.GooglePlayServices.Gcm.nuspec +++ b/gcm/nuget/Xamarin.GooglePlayServices.Gcm.nuspec @@ -26,6 +26,6 @@ - + diff --git a/identity/nuget/Xamarin.GooglePlayServices.Identity.nuspec b/identity/nuget/Xamarin.GooglePlayServices.Identity.nuspec index ade279eb5..e6f0a41ef 100644 --- a/identity/nuget/Xamarin.GooglePlayServices.Identity.nuspec +++ b/identity/nuget/Xamarin.GooglePlayServices.Identity.nuspec @@ -21,6 +21,6 @@ - + diff --git a/iid/nuget/Xamarin.GooglePlayServices.Iid.nuspec b/iid/nuget/Xamarin.GooglePlayServices.Iid.nuspec index e184075c0..630187944 100644 --- a/iid/nuget/Xamarin.GooglePlayServices.Iid.nuspec +++ b/iid/nuget/Xamarin.GooglePlayServices.Iid.nuspec @@ -20,6 +20,6 @@ - + diff --git a/location/nuget/Xamarin.GooglePlayServices.Location.nuspec b/location/nuget/Xamarin.GooglePlayServices.Location.nuspec index 6f869bd28..9c8af0408 100644 --- a/location/nuget/Xamarin.GooglePlayServices.Location.nuspec +++ b/location/nuget/Xamarin.GooglePlayServices.Location.nuspec @@ -24,6 +24,6 @@ - + diff --git a/maps/nuget/Xamarin.GooglePlayServices.Maps.nuspec b/maps/nuget/Xamarin.GooglePlayServices.Maps.nuspec index 85abf8ef4..743a3d775 100644 --- a/maps/nuget/Xamarin.GooglePlayServices.Maps.nuspec +++ b/maps/nuget/Xamarin.GooglePlayServices.Maps.nuspec @@ -24,6 +24,6 @@ - + diff --git a/measurement/nuget/Xamarin.GooglePlayServices.Measurement.nuspec b/measurement/nuget/Xamarin.GooglePlayServices.Measurement.nuspec index 58ed655ae..0ead1b29c 100644 --- a/measurement/nuget/Xamarin.GooglePlayServices.Measurement.nuspec +++ b/measurement/nuget/Xamarin.GooglePlayServices.Measurement.nuspec @@ -21,6 +21,6 @@ - + diff --git a/nearby/nuget/Xamarin.GooglePlayServices.Nearby.nuspec b/nearby/nuget/Xamarin.GooglePlayServices.Nearby.nuspec index 3cd29bd00..395495657 100644 --- a/nearby/nuget/Xamarin.GooglePlayServices.Nearby.nuspec +++ b/nearby/nuget/Xamarin.GooglePlayServices.Nearby.nuspec @@ -23,6 +23,6 @@ - + diff --git a/panorama/nuget/Xamarin.GooglePlayServices.Panorama.nuspec b/panorama/nuget/Xamarin.GooglePlayServices.Panorama.nuspec index 9c723a610..990de819e 100644 --- a/panorama/nuget/Xamarin.GooglePlayServices.Panorama.nuspec +++ b/panorama/nuget/Xamarin.GooglePlayServices.Panorama.nuspec @@ -23,6 +23,6 @@ - + diff --git a/plus/nuget/Xamarin.GooglePlayServices.Plus.nuspec b/plus/nuget/Xamarin.GooglePlayServices.Plus.nuspec index c58561c61..529d3d037 100644 --- a/plus/nuget/Xamarin.GooglePlayServices.Plus.nuspec +++ b/plus/nuget/Xamarin.GooglePlayServices.Plus.nuspec @@ -22,6 +22,6 @@ - + diff --git a/safetynet/nuget/Xamarin.GooglePlayServices.SafetyNet.nuspec b/safetynet/nuget/Xamarin.GooglePlayServices.SafetyNet.nuspec index f6e1f8f9b..a12c84ca1 100644 --- a/safetynet/nuget/Xamarin.GooglePlayServices.SafetyNet.nuspec +++ b/safetynet/nuget/Xamarin.GooglePlayServices.SafetyNet.nuspec @@ -23,6 +23,6 @@ - + diff --git a/support-wearable/nuget/Xamarin.Android.Wear.nuspec b/support-wearable/nuget/Xamarin.Android.Wear.nuspec index a37d32e05..bd37d7729 100644 --- a/support-wearable/nuget/Xamarin.Android.Wear.nuspec +++ b/support-wearable/nuget/Xamarin.Android.Wear.nuspec @@ -29,6 +29,6 @@ - + diff --git a/tagmanager-api/nuget/Xamarin.GooglePlayServices.TagManager.Api.nuspec b/tagmanager-api/nuget/Xamarin.GooglePlayServices.TagManager.Api.nuspec index 33d2fd660..088c6b0e1 100644 --- a/tagmanager-api/nuget/Xamarin.GooglePlayServices.TagManager.Api.nuspec +++ b/tagmanager-api/nuget/Xamarin.GooglePlayServices.TagManager.Api.nuspec @@ -20,6 +20,6 @@ - + diff --git a/tagmanager/nuget/Xamarin.GooglePlayServices.TagManager.nuspec b/tagmanager/nuget/Xamarin.GooglePlayServices.TagManager.nuspec index 426fcf423..b33a4a46e 100644 --- a/tagmanager/nuget/Xamarin.GooglePlayServices.TagManager.nuspec +++ b/tagmanager/nuget/Xamarin.GooglePlayServices.TagManager.nuspec @@ -20,6 +20,6 @@ - + diff --git a/tasks/nuget/Xamarin.GooglePlayServices.Tasks.nuspec b/tasks/nuget/Xamarin.GooglePlayServices.Tasks.nuspec index d6ed0818f..0ce485364 100644 --- a/tasks/nuget/Xamarin.GooglePlayServices.Tasks.nuspec +++ b/tasks/nuget/Xamarin.GooglePlayServices.Tasks.nuspec @@ -21,6 +21,6 @@ - + diff --git a/vision/nuget/Xamarin.GooglePlayServices.Vision.nuspec b/vision/nuget/Xamarin.GooglePlayServices.Vision.nuspec index 2ddd7697b..d981b5d29 100644 --- a/vision/nuget/Xamarin.GooglePlayServices.Vision.nuspec +++ b/vision/nuget/Xamarin.GooglePlayServices.Vision.nuspec @@ -27,6 +27,6 @@ - + diff --git a/wallet/nuget/Xamarin.GooglePlayServices.Wallet.nuspec b/wallet/nuget/Xamarin.GooglePlayServices.Wallet.nuspec index 79d253d89..afe2b0409 100644 --- a/wallet/nuget/Xamarin.GooglePlayServices.Wallet.nuspec +++ b/wallet/nuget/Xamarin.GooglePlayServices.Wallet.nuspec @@ -26,6 +26,6 @@ - + diff --git a/wearable/nuget/Xamarin.GooglePlayServices.Wearable.nuspec b/wearable/nuget/Xamarin.GooglePlayServices.Wearable.nuspec index 3728535dd..3868c91cd 100644 --- a/wearable/nuget/Xamarin.GooglePlayServices.Wearable.nuspec +++ b/wearable/nuget/Xamarin.GooglePlayServices.Wearable.nuspec @@ -25,6 +25,6 @@ - + From ac04154e720358e3d66b9f88103a84ea4c665488 Mon Sep 17 00:00:00 2001 From: Redth Date: Tue, 7 Jun 2016 11:35:50 -0400 Subject: [PATCH 048/178] Explicitly use nuget v3.4.4 to build --- build.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.sh b/build.sh index 20cfc6d04..c2c05fa99 100644 --- a/build.sh +++ b/build.sh @@ -52,7 +52,7 @@ fi # Download NuGet if it does not exist. if [ ! -f "$NUGET_EXE" ]; then echo "Downloading NuGet..." - curl -Lsfo "$NUGET_EXE" https://dist.nuget.org/win-x86-commandline/latest/nuget.exe + curl -Lsfo "$NUGET_EXE" https://dist.nuget.org/win-x86-commandline/v3.4.4/NuGet.exe if [ $? -ne 0 ]; then echo "An error occured while downloading nuget.exe." exit 1 From 71372f9b5b18cb764f5d1f09801494934b7ce320 Mon Sep 17 00:00:00 2001 From: Redth Date: Tue, 7 Jun 2016 12:46:34 -0400 Subject: [PATCH 049/178] Bump to new alpha version --- build.cake | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build.cake b/build.cake index 6064126e4..23e30d0c7 100644 --- a/build.cake +++ b/build.cake @@ -13,11 +13,11 @@ var DOCS_URL = "https://dl-ssl.google.com/android/repository/google_play_service var M2_REPOSITORY = "https://dl-ssl.google.com/android/repository/google_m2repository_r27.zip"; var PLAY_COMPONENT_VERSION = "30.0.1.0"; -var PLAY_NUGET_VERSION = "30.0.1-alpha2"; +var PLAY_NUGET_VERSION = "30.0.1-alpha3"; var PLAY_AAR_VERSION = "9.0.1"; var WEAR_COMPONENT_VERSION = "1.4.0.0"; -var WEAR_NUGET_VERSION = "1.4.0.0-alpha2"; +var WEAR_NUGET_VERSION = "1.4.0.0-alpha3"; var WEAR_AAR_VERSION = PLAY_AAR_VERSION; var WEARABLE_SUPPORT_VERSION = "1.4.0"; From b5ea9ea8163d271cab7826c54fceb2609cf6e216 Mon Sep 17 00:00:00 2001 From: Redth Date: Tue, 7 Jun 2016 14:16:34 -0400 Subject: [PATCH 050/178] Fix nuspec dependency chains for 9.0.1 --- ads/nuget/Xamarin.GooglePlayServices.Ads.nuspec | 2 ++ .../nuget/Xamarin.GooglePlayServices.Analytics.Impl.nuspec | 1 + .../nuget/Xamarin.GooglePlayServices.Analytics.nuspec | 2 ++ .../nuget/Xamarin.GooglePlayServices.AppIndexing.nuspec | 2 ++ .../nuget/Xamarin.GooglePlayServices.Auth.Base.nuspec | 2 +- auth/nuget/Xamarin.GooglePlayServices.Auth.nuspec | 1 + base/nuget/Xamarin.GooglePlayServices.Base.nuspec | 3 ++- cast/nuget/Xamarin.GooglePlayServices.Cast.nuspec | 2 -- .../nuget/Xamarin.Firebase.Analytics.Impl.nuspec | 6 ++++-- firebase-analytics/nuget/Xamarin.Firebase.Analytics.nuspec | 3 ++- firebase-auth/nuget/Xamarin.Firebase.Auth.nuspec | 5 +++-- firebase-common/nuget/Xamarin.Firebase.Common.nuspec | 4 ++-- firebase-config/nuget/Xamarin.Firebase.Config.nuspec | 6 +++--- firebase-crash/nuget/Xamarin.Firebase.Crash.nuspec | 4 ++-- firebase-database/nuget/Xamarin.Firebase.Database.nuspec | 6 +++--- firebase-messaging/nuget/Xamarin.Firebase.Messaging.nuspec | 4 ++-- firebase-storage/nuget/Xamarin.Firebase.Storage.nuspec | 6 +++--- fitness/nuget/Xamarin.GooglePlayServices.Fitness.nuspec | 2 -- games/nuget/Xamarin.GooglePlayServices.Games.nuspec | 1 + gcm/nuget/Xamarin.GooglePlayServices.Gcm.nuspec | 2 +- maps/nuget/Xamarin.GooglePlayServices.Maps.nuspec | 1 - plus/nuget/Xamarin.GooglePlayServices.Plus.nuspec | 1 + .../nuget/Xamarin.GooglePlayServices.TagManager.Api.nuspec | 4 ++-- .../nuget/Xamarin.GooglePlayServices.TagManager.nuspec | 7 ++++--- tasks/nuget/Xamarin.GooglePlayServices.Tasks.nuspec | 1 - wallet/nuget/Xamarin.GooglePlayServices.Wallet.nuspec | 1 - 26 files changed, 44 insertions(+), 35 deletions(-) diff --git a/ads/nuget/Xamarin.GooglePlayServices.Ads.nuspec b/ads/nuget/Xamarin.GooglePlayServices.Ads.nuspec index 31a42ad0e..212d7f297 100644 --- a/ads/nuget/Xamarin.GooglePlayServices.Ads.nuspec +++ b/ads/nuget/Xamarin.GooglePlayServices.Ads.nuspec @@ -18,6 +18,8 @@ http://components.xamarin.com/license/googleplayservices-ads/ https://xamarin-component-icons.s3.amazonaws.com/Xamarin.GooglePlayServices.Ads.png + + diff --git a/analytics-impl/nuget/Xamarin.GooglePlayServices.Analytics.Impl.nuspec b/analytics-impl/nuget/Xamarin.GooglePlayServices.Analytics.Impl.nuspec index d030a1a99..c5684d4a9 100644 --- a/analytics-impl/nuget/Xamarin.GooglePlayServices.Analytics.Impl.nuspec +++ b/analytics-impl/nuget/Xamarin.GooglePlayServices.Analytics.Impl.nuspec @@ -18,6 +18,7 @@ https://github.com/xamarin/GooglePlayServicesComponents/blob/master/LICENSE.md https://xamarin-component-icons.s3.amazonaws.com/Xamarin.GooglePlayServices.Analytics.Impl.png + diff --git a/analytics/nuget/Xamarin.GooglePlayServices.Analytics.nuspec b/analytics/nuget/Xamarin.GooglePlayServices.Analytics.nuspec index f9d2464eb..0db36ca39 100644 --- a/analytics/nuget/Xamarin.GooglePlayServices.Analytics.nuspec +++ b/analytics/nuget/Xamarin.GooglePlayServices.Analytics.nuspec @@ -18,6 +18,8 @@ http://components.xamarin.com/license/googleplayservices-analytics/ https://xamarin-component-icons.s3.amazonaws.com/Xamarin.GooglePlayServices.Analytics.png + + diff --git a/appindexing/nuget/Xamarin.GooglePlayServices.AppIndexing.nuspec b/appindexing/nuget/Xamarin.GooglePlayServices.AppIndexing.nuspec index a712b797d..cc5675ea6 100644 --- a/appindexing/nuget/Xamarin.GooglePlayServices.AppIndexing.nuspec +++ b/appindexing/nuget/Xamarin.GooglePlayServices.AppIndexing.nuspec @@ -20,6 +20,8 @@ + + diff --git a/auth-base/nuget/Xamarin.GooglePlayServices.Auth.Base.nuspec b/auth-base/nuget/Xamarin.GooglePlayServices.Auth.Base.nuspec index 6058e29e4..614036e62 100644 --- a/auth-base/nuget/Xamarin.GooglePlayServices.Auth.Base.nuspec +++ b/auth-base/nuget/Xamarin.GooglePlayServices.Auth.Base.nuspec @@ -20,6 +20,6 @@ - + diff --git a/auth/nuget/Xamarin.GooglePlayServices.Auth.nuspec b/auth/nuget/Xamarin.GooglePlayServices.Auth.nuspec index b0d09a2cb..a57310378 100644 --- a/auth/nuget/Xamarin.GooglePlayServices.Auth.nuspec +++ b/auth/nuget/Xamarin.GooglePlayServices.Auth.nuspec @@ -15,6 +15,7 @@ https://github.com/xamarin/GooglePlayServicesComponents/blob/master/LICENSE.md https://xamarin-component-icons.s3.amazonaws.com/Xamarin.GooglePlayServices.Auth.png + diff --git a/base/nuget/Xamarin.GooglePlayServices.Base.nuspec b/base/nuget/Xamarin.GooglePlayServices.Base.nuspec index 42eee25e4..1026274b7 100644 --- a/base/nuget/Xamarin.GooglePlayServices.Base.nuspec +++ b/base/nuget/Xamarin.GooglePlayServices.Base.nuspec @@ -40,7 +40,8 @@ https://xamarin-component-icons.s3.amazonaws.com/Xamarin.GooglePlayServices.Base.png - + + diff --git a/cast/nuget/Xamarin.GooglePlayServices.Cast.nuspec b/cast/nuget/Xamarin.GooglePlayServices.Cast.nuspec index f7a29c640..741bb8c03 100644 --- a/cast/nuget/Xamarin.GooglePlayServices.Cast.nuspec +++ b/cast/nuget/Xamarin.GooglePlayServices.Cast.nuspec @@ -20,9 +20,7 @@ - - diff --git a/firebase-analytics-impl/nuget/Xamarin.Firebase.Analytics.Impl.nuspec b/firebase-analytics-impl/nuget/Xamarin.Firebase.Analytics.Impl.nuspec index da619d0fa..0e7e34bcb 100644 --- a/firebase-analytics-impl/nuget/Xamarin.Firebase.Analytics.Impl.nuspec +++ b/firebase-analytics-impl/nuget/Xamarin.Firebase.Analytics.Impl.nuspec @@ -16,9 +16,11 @@ https://github.com/xamarin/GooglePlayServicesComponents/blob/master/LICENSE.md https://xamarin-component-icons.s3.amazonaws.com/Xamarin.Firebase.Analytics.Impl.png - - + + + + diff --git a/firebase-analytics/nuget/Xamarin.Firebase.Analytics.nuspec b/firebase-analytics/nuget/Xamarin.Firebase.Analytics.nuspec index c4d207ed1..ffc9dbb4a 100644 --- a/firebase-analytics/nuget/Xamarin.Firebase.Analytics.nuspec +++ b/firebase-analytics/nuget/Xamarin.Firebase.Analytics.nuspec @@ -17,7 +17,8 @@ https://xamarin-component-icons.s3.amazonaws.com/Xamarin.Firebase.Analytics.png - + + diff --git a/firebase-auth/nuget/Xamarin.Firebase.Auth.nuspec b/firebase-auth/nuget/Xamarin.Firebase.Auth.nuspec index f9892ab94..7ba15b97d 100644 --- a/firebase-auth/nuget/Xamarin.Firebase.Auth.nuspec +++ b/firebase-auth/nuget/Xamarin.Firebase.Auth.nuspec @@ -18,10 +18,11 @@ - + - + + diff --git a/firebase-common/nuget/Xamarin.Firebase.Common.nuspec b/firebase-common/nuget/Xamarin.Firebase.Common.nuspec index 5d3107654..ea90d3960 100644 --- a/firebase-common/nuget/Xamarin.Firebase.Common.nuspec +++ b/firebase-common/nuget/Xamarin.Firebase.Common.nuspec @@ -17,8 +17,8 @@ https://xamarin-component-icons.s3.amazonaws.com/Xamarin.Firebase.Common.png - - + + diff --git a/firebase-config/nuget/Xamarin.Firebase.Config.nuspec b/firebase-config/nuget/Xamarin.Firebase.Config.nuspec index 6fe30d46d..947e62b77 100644 --- a/firebase-config/nuget/Xamarin.Firebase.Config.nuspec +++ b/firebase-config/nuget/Xamarin.Firebase.Config.nuspec @@ -18,10 +18,10 @@ - - - + + + diff --git a/firebase-crash/nuget/Xamarin.Firebase.Crash.nuspec b/firebase-crash/nuget/Xamarin.Firebase.Crash.nuspec index fa36f5d56..e39098643 100644 --- a/firebase-crash/nuget/Xamarin.Firebase.Crash.nuspec +++ b/firebase-crash/nuget/Xamarin.Firebase.Crash.nuspec @@ -18,10 +18,10 @@ - + - + diff --git a/firebase-database/nuget/Xamarin.Firebase.Database.nuspec b/firebase-database/nuget/Xamarin.Firebase.Database.nuspec index 99b26b963..2a87789df 100644 --- a/firebase-database/nuget/Xamarin.Firebase.Database.nuspec +++ b/firebase-database/nuget/Xamarin.Firebase.Database.nuspec @@ -18,10 +18,10 @@ - - - + + + diff --git a/firebase-messaging/nuget/Xamarin.Firebase.Messaging.nuspec b/firebase-messaging/nuget/Xamarin.Firebase.Messaging.nuspec index c7eb856eb..07aa5357d 100644 --- a/firebase-messaging/nuget/Xamarin.Firebase.Messaging.nuspec +++ b/firebase-messaging/nuget/Xamarin.Firebase.Messaging.nuspec @@ -17,9 +17,9 @@ https://xamarin-component-icons.s3.amazonaws.com/Xamarin.Firebase.Messaging.png - - + + diff --git a/firebase-storage/nuget/Xamarin.Firebase.Storage.nuspec b/firebase-storage/nuget/Xamarin.Firebase.Storage.nuspec index 6a78cf954..4fcf5ae3f 100644 --- a/firebase-storage/nuget/Xamarin.Firebase.Storage.nuspec +++ b/firebase-storage/nuget/Xamarin.Firebase.Storage.nuspec @@ -18,10 +18,10 @@ - - - + + + diff --git a/fitness/nuget/Xamarin.GooglePlayServices.Fitness.nuspec b/fitness/nuget/Xamarin.GooglePlayServices.Fitness.nuspec index 81b2767c7..ad1e000d3 100644 --- a/fitness/nuget/Xamarin.GooglePlayServices.Fitness.nuspec +++ b/fitness/nuget/Xamarin.GooglePlayServices.Fitness.nuspec @@ -21,8 +21,6 @@ - - diff --git a/games/nuget/Xamarin.GooglePlayServices.Games.nuspec b/games/nuget/Xamarin.GooglePlayServices.Games.nuspec index e08abd953..0cf90b5f3 100644 --- a/games/nuget/Xamarin.GooglePlayServices.Games.nuspec +++ b/games/nuget/Xamarin.GooglePlayServices.Games.nuspec @@ -18,6 +18,7 @@ http://components.xamarin.com/license/googleplayservices-games/ https://xamarin-component-icons.s3.amazonaws.com/Xamarin.GooglePlayServices.Games.png + diff --git a/gcm/nuget/Xamarin.GooglePlayServices.Gcm.nuspec b/gcm/nuget/Xamarin.GooglePlayServices.Gcm.nuspec index d18f67f8f..15e6c1e62 100644 --- a/gcm/nuget/Xamarin.GooglePlayServices.Gcm.nuspec +++ b/gcm/nuget/Xamarin.GooglePlayServices.Gcm.nuspec @@ -22,7 +22,7 @@ - + diff --git a/maps/nuget/Xamarin.GooglePlayServices.Maps.nuspec b/maps/nuget/Xamarin.GooglePlayServices.Maps.nuspec index 743a3d775..11b074cc3 100644 --- a/maps/nuget/Xamarin.GooglePlayServices.Maps.nuspec +++ b/maps/nuget/Xamarin.GooglePlayServices.Maps.nuspec @@ -20,7 +20,6 @@ - diff --git a/plus/nuget/Xamarin.GooglePlayServices.Plus.nuspec b/plus/nuget/Xamarin.GooglePlayServices.Plus.nuspec index 529d3d037..c7a7469e0 100644 --- a/plus/nuget/Xamarin.GooglePlayServices.Plus.nuspec +++ b/plus/nuget/Xamarin.GooglePlayServices.Plus.nuspec @@ -17,6 +17,7 @@ http://components.xamarin.com/view/googleplayservices-plus/ http://components.xamarin.com/license/googleplayservices-plus/ + diff --git a/tagmanager-api/nuget/Xamarin.GooglePlayServices.TagManager.Api.nuspec b/tagmanager-api/nuget/Xamarin.GooglePlayServices.TagManager.Api.nuspec index 088c6b0e1..097c3b6b2 100644 --- a/tagmanager-api/nuget/Xamarin.GooglePlayServices.TagManager.Api.nuspec +++ b/tagmanager-api/nuget/Xamarin.GooglePlayServices.TagManager.Api.nuspec @@ -15,8 +15,8 @@ https://github.com/xamarin/GooglePlayServicesComponents/blob/master/LICENSE.md https://xamarin-component-icons.s3.amazonaws.com/Xamarin.GooglePlayServices.TagManager.Api.png - - + + diff --git a/tagmanager/nuget/Xamarin.GooglePlayServices.TagManager.nuspec b/tagmanager/nuget/Xamarin.GooglePlayServices.TagManager.nuspec index b33a4a46e..0d7782a9e 100644 --- a/tagmanager/nuget/Xamarin.GooglePlayServices.TagManager.nuspec +++ b/tagmanager/nuget/Xamarin.GooglePlayServices.TagManager.nuspec @@ -12,11 +12,12 @@ Copyright 2013-2016 https://github.com/xamarin/GooglePlayServicesComponents/ - https://github.com/xamarin/GooglePlayServicesComponents/blob/master/LICENSE.md + https://github.com/xamarin/GooglePlayServicesComponents/blob/master/LICENSE.md https://xamarin-component-icons.s3.amazonaws.com/Xamarin.GooglePlayServices.TagManager.png - - + + + diff --git a/tasks/nuget/Xamarin.GooglePlayServices.Tasks.nuspec b/tasks/nuget/Xamarin.GooglePlayServices.Tasks.nuspec index 0ce485364..d8bf736c2 100644 --- a/tasks/nuget/Xamarin.GooglePlayServices.Tasks.nuspec +++ b/tasks/nuget/Xamarin.GooglePlayServices.Tasks.nuspec @@ -17,7 +17,6 @@ https://xamarin-component-icons.s3.amazonaws.com/Xamarin.GooglePlayServices.Tasks.png - diff --git a/wallet/nuget/Xamarin.GooglePlayServices.Wallet.nuspec b/wallet/nuget/Xamarin.GooglePlayServices.Wallet.nuspec index afe2b0409..911b418d4 100644 --- a/wallet/nuget/Xamarin.GooglePlayServices.Wallet.nuspec +++ b/wallet/nuget/Xamarin.GooglePlayServices.Wallet.nuspec @@ -22,7 +22,6 @@ - From 9b8789acd936375f713772c7264a30191a3e69f0 Mon Sep 17 00:00:00 2001 From: Jonathan Dick Date: Wed, 8 Jun 2016 16:58:23 -0400 Subject: [PATCH 051/178] Export nuget.exe path This will explicitly set which nuget.exe will be used which is critical to how packaging works on mac. Some versions of nuget.exe will produce corrupt .zip files. This should cause the cake build scripts usage of nuget.exe to be explicitly the one downloaded by this bootstrapper script --- build.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.sh b/build.sh index c2c05fa99..046304c43 100644 --- a/build.sh +++ b/build.sh @@ -7,7 +7,7 @@ # Define directories. SCRIPT_DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd ) TOOLS_DIR=$SCRIPT_DIR/tools -NUGET_EXE=$TOOLS_DIR/nuget.exe +export NUGET_EXE=$TOOLS_DIR/nuget.exe CAKE_EXE=$TOOLS_DIR/Cake/Cake.exe # Define default arguments. From 35628ab965745a07e3127fd41b930a403534ad29 Mon Sep 17 00:00:00 2001 From: Redth Date: Thu, 9 Jun 2016 20:38:24 -0400 Subject: [PATCH 052/178] Bump nuget version --- build.cake | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build.cake b/build.cake index 23e30d0c7..94556cd63 100644 --- a/build.cake +++ b/build.cake @@ -13,11 +13,11 @@ var DOCS_URL = "https://dl-ssl.google.com/android/repository/google_play_service var M2_REPOSITORY = "https://dl-ssl.google.com/android/repository/google_m2repository_r27.zip"; var PLAY_COMPONENT_VERSION = "30.0.1.0"; -var PLAY_NUGET_VERSION = "30.0.1-alpha3"; +var PLAY_NUGET_VERSION = "30.0.1-alpha4"; var PLAY_AAR_VERSION = "9.0.1"; var WEAR_COMPONENT_VERSION = "1.4.0.0"; -var WEAR_NUGET_VERSION = "1.4.0.0-alpha3"; +var WEAR_NUGET_VERSION = "1.4.0.0-alpha4"; var WEAR_AAR_VERSION = PLAY_AAR_VERSION; var WEARABLE_SUPPORT_VERSION = "1.4.0"; From 020565cc576f4cc9226cc92e48177ea91115e8a6 Mon Sep 17 00:00:00 2001 From: Bill Holmes Date: Sat, 11 Jun 2016 14:06:53 -0400 Subject: [PATCH 053/178] Downloading a patched System.IO.Compression.dll for NuGet MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit There appears to be an issue with Mono’s compression. I believe it is linked to this commit. https://github.com/mono/mono/commit/77b034cbe78bfccfe4c1995152bd5562a1d69ef5 That commit changed the ‘version made by’ instead of the ‘version needed to extract.’ I believe this is the correct fix https://gist.github.com/bholmes/09c9a4e5a5c9a2f14831a7b2b7ce89aa The dll downloaded has that patch with the mono-4.4.0-branch-c7-baseline/5995f74 version. I will work with the Mono team to get this resolved and we can remove this when the fix propagates to the build bots officially. Without this patch NuGet 3.4.4 creates a corrupt nupkg. --- build.sh | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/build.sh b/build.sh index 046304c43..1e3c49fb4 100644 --- a/build.sh +++ b/build.sh @@ -57,6 +57,12 @@ if [ ! -f "$NUGET_EXE" ]; then echo "An error occured while downloading nuget.exe." exit 1 fi + echo "Downloading patched System.IO.Compression.dll..." + curl -Lsfo "$TOOLS_DIR/System.IO.Compression.dll" https://www.dropbox.com/s/j3zuglw23059nx5/System.IO.Compression.dll?dl=0 + if [ $? -ne 0 ]; then + echo "An error occured while downloading patched System.IO.Compression.dll." + exit 1 + fi fi # Restore tools from NuGet. From 8a11b99f930033f286e16454425cba4888dd654b Mon Sep 17 00:00:00 2001 From: Redth Date: Mon, 13 Jun 2016 08:45:20 -0400 Subject: [PATCH 054/178] Temp Workaround: System.IO.Compression fix There is a bug in Mono's System.IO.Compression which causes ZipArchive to produce an incorrect .zip file. This results in corrupt .nupkg files which do not properly install in the IDE. Until the mono bug is fixed, this workaround is needed to build valid .nupkg files --- build.sh | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/build.sh b/build.sh index c2c05fa99..a5506ea73 100644 --- a/build.sh +++ b/build.sh @@ -10,6 +10,10 @@ TOOLS_DIR=$SCRIPT_DIR/tools NUGET_EXE=$TOOLS_DIR/nuget.exe CAKE_EXE=$TOOLS_DIR/Cake/Cake.exe +# BEGIN TEMP WORKAROUND +SYSIOCOMP=$TOOLS_DIR/System.IO.Compression.dll +# END TEMP WORKAROUND + # Define default arguments. SCRIPT="build.cake" TARGET="Default" @@ -59,6 +63,20 @@ if [ ! -f "$NUGET_EXE" ]; then fi fi +# BEGIN TEMP WORKAROUND +# There is a bug in Mono's System.IO.Compression +# This binary fixes the bug for now +# Download System.IO.Compression if it does not exist. +if [ ! -f "$SYSIOCOMP" ]; then + echo "Downloading System.IO.Compression.dll ..." + curl -Lsfo "$SYSIOCOMP" http://xamarin-components-binaries.s3.amazonaws.com/System.IO.Compression.dll + if [ $? -ne 0 ]; then + echo "An error occured while downloading System.IO.Compression.dll." + exit 1 + fi +fi +# END TEMP WORKAROUND + # Restore tools from NuGet. pushd "$TOOLS_DIR" >/dev/null mono "$NUGET_EXE" install -ExcludeVersion From a15174ee2dd445bca600be072cf877b898191882 Mon Sep 17 00:00:00 2001 From: Redth Date: Mon, 13 Jun 2016 16:51:18 -0400 Subject: [PATCH 055/178] Cleaned up duplicate work around --- build.sh | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/build.sh b/build.sh index d2d4c3baf..bc44d9752 100644 --- a/build.sh +++ b/build.sh @@ -10,10 +10,6 @@ TOOLS_DIR=$SCRIPT_DIR/tools export NUGET_EXE=$TOOLS_DIR/nuget.exe CAKE_EXE=$TOOLS_DIR/Cake/Cake.exe -# BEGIN TEMP WORKAROUND -SYSIOCOMP=$TOOLS_DIR/System.IO.Compression.dll -# END TEMP WORKAROUND - # Define default arguments. SCRIPT="build.cake" TARGET="Default" @@ -61,18 +57,13 @@ if [ ! -f "$NUGET_EXE" ]; then echo "An error occured while downloading nuget.exe." exit 1 fi - echo "Downloading patched System.IO.Compression.dll..." - curl -Lsfo "$TOOLS_DIR/System.IO.Compression.dll" https://www.dropbox.com/s/j3zuglw23059nx5/System.IO.Compression.dll?dl=0 - if [ $? -ne 0 ]; then - echo "An error occured while downloading patched System.IO.Compression.dll." - exit 1 - fi fi # BEGIN TEMP WORKAROUND # There is a bug in Mono's System.IO.Compression # This binary fixes the bug for now # Download System.IO.Compression if it does not exist. +SYSIOCOMP=$TOOLS_DIR/System.IO.Compression.dll if [ ! -f "$SYSIOCOMP" ]; then echo "Downloading System.IO.Compression.dll ..." curl -Lsfo "$SYSIOCOMP" http://xamarin-components-binaries.s3.amazonaws.com/System.IO.Compression.dll From 99722b9c571ce0bb692a090903921a59e5865d03 Mon Sep 17 00:00:00 2001 From: Redth Date: Wed, 15 Jun 2016 09:25:40 -0400 Subject: [PATCH 056/178] Updated models for new google-services.json values --- basement/buildtasks/Models.cs | 74 ++++++++++++++++++++++++++++++++++- 1 file changed, 73 insertions(+), 1 deletion(-) diff --git a/basement/buildtasks/Models.cs b/basement/buildtasks/Models.cs index 7a07d10f0..275070865 100644 --- a/basement/buildtasks/Models.cs +++ b/basement/buildtasks/Models.cs @@ -15,6 +15,10 @@ public class ProjectInfo public string ProjectNumber { get; set; } [DataMember (Name="name")] public string Name { get; set; } + [DataMember (Name="firebase_url")] + public string FirebaseUrl { get; set; } + [DataMember (Name="storage_bucket")] + public string StorageBucket { get; set; } } [DataContract] @@ -168,11 +172,19 @@ public class Client [DataMember (Name="oauth_client")] public List OauthClient { get; set; } [DataMember (Name="api_key")] - public List ApiKey { get; set; } + public List ApiKey { get; set; } [DataMember (Name="services")] public Services Services { get; set; } } + [DataContract] + [Serializable] + public class ApiKey + { + [DataMember (Name = "current_key")] + public string CurrentKey { get; set; } + } + [DataContract] [Serializable] public class GoogleServices @@ -254,6 +266,66 @@ public string GetTestInterstitialAdUnitId (string packageName) return null; } + + public string GetDefaultWebClientId (string packageName) + { + // default_web_client_id: + // {YOUR_CLIENT}/oauth_client/client_id(client_type == 3) + + var client = GetClient (packageName); + if (client == null) + return null; + + if (client.OauthClient != null && client.OauthClient.Any ()) { + var oauthClient = client.OauthClient.FirstOrDefault (c => c.ClientType == 3); + if (oauthClient != null) + return oauthClient.ClientId; + } + + return null; + } + + public string GetGoogleApiKey (string packageName) + { + // google_api_key: + // {YOUR_CLIENT}/api_key/current_key + + var client = GetClient (packageName); + if (client == null) + return null; + + if (client.ApiKey != null && client.ApiKey.Any ()) + return client.ApiKey.FirstOrDefault ().CurrentKey; + + return null; + } + + public string GetFirebaseDatabaseUrl () + { + // firebase_database_url: + // project_info/firebase_url + + if (ProjectInfo != null) + return ProjectInfo.FirebaseUrl; + + return null; + } + + public string GetCrashReportingApiKey (string packageName) + { + // google_crash_reporting_api_key: + // {YOUR_CLIENT}/api_key/current_key + + var client = GetClient (packageName); + if (client == null) + return null; + + if (client.ApiKey != null && client.ApiKey.Any ()) + return client.ApiKey.FirstOrDefault ().CurrentKey; + + return null; + } + } } From a916a6bee1a39848e25cb39aa184c04b61d4496e Mon Sep 17 00:00:00 2001 From: Redth Date: Wed, 15 Jun 2016 09:27:00 -0400 Subject: [PATCH 057/178] Updated google-services.json processor There are new values to be written to resources from the json file Also split out the main deserialization logic so it can be called from unit tests --- .../buildtasks/Basement-BuildTasks.csproj | 1 + .../buildtasks/GoogleServicesJsonProcessor.cs | 25 +++++++++++++++++++ .../buildtasks/ProcessGoogleServicesJson.cs | 19 +++++++------- 3 files changed, 36 insertions(+), 9 deletions(-) create mode 100644 basement/buildtasks/GoogleServicesJsonProcessor.cs diff --git a/basement/buildtasks/Basement-BuildTasks.csproj b/basement/buildtasks/Basement-BuildTasks.csproj index 5e5a287f3..eb6fa7b7c 100644 --- a/basement/buildtasks/Basement-BuildTasks.csproj +++ b/basement/buildtasks/Basement-BuildTasks.csproj @@ -46,6 +46,7 @@ + diff --git a/basement/buildtasks/GoogleServicesJsonProcessor.cs b/basement/buildtasks/GoogleServicesJsonProcessor.cs new file mode 100644 index 000000000..c27568ff2 --- /dev/null +++ b/basement/buildtasks/GoogleServicesJsonProcessor.cs @@ -0,0 +1,25 @@ +using System; +using System.IO; +using System.Runtime.Serialization.Json; + +namespace Xamarin.GooglePlayServices.Tasks +{ + public class GoogleServicesJsonProcessor + { + public GoogleServicesJsonProcessor () + { + } + + public static GoogleServices ProcessJson (string packageName, Stream json) + { + GoogleServices googleServices; + + var serializer = new DataContractJsonSerializer (typeof (GoogleServices)); + googleServices = serializer.ReadObject (json) as GoogleServices; + if (googleServices == null) + throw new NullReferenceException (); + return googleServices; + } + } +} + diff --git a/basement/buildtasks/ProcessGoogleServicesJson.cs b/basement/buildtasks/ProcessGoogleServicesJson.cs index df88b0978..0a64884a3 100644 --- a/basement/buildtasks/ProcessGoogleServicesJson.cs +++ b/basement/buildtasks/ProcessGoogleServicesJson.cs @@ -49,23 +49,20 @@ public override bool Execute () var gsPath = CleanPath (gsItem.ItemSpec); - GoogleServices googleServices; try { - var serializer = new DataContractJsonSerializer (typeof (GoogleServices)); - using (var sr = System.IO.File.OpenRead (gsPath)){ - googleServices = serializer.ReadObject (sr) as GoogleServices; - if (googleServices == null) - throw new NullReferenceException (); + using (var sr = File.OpenRead (gsPath)) { + googleServices = GoogleServicesJsonProcessor.ProcessJson (AndroidPackageName, sr); } + if (googleServices == null) + throw new NullReferenceException (); } catch (Exception ex) { Log.LogError ("Failed to Read or Deserialize GoogleServicesJson file: {0}{1}{2}", gsPath, Environment.NewLine, ex); DeleteFiles (valuesPath, xmlPath); return false; } - if (string.IsNullOrEmpty (AndroidPackageName)) { Log.LogError ("Android Package Name not specified for project"); return false; @@ -76,9 +73,13 @@ public override bool Execute () { "gcm_defaultSenderId", googleServices.GetDefaultGcmSenderId () }, { "google_app_id", googleServices.GetGoogleAppId (AndroidPackageName) }, { "test_banner_ad_unit_id", googleServices.GetTestBannerAdUnitId (AndroidPackageName) }, - { "test_interstitial_ad_unit_id", googleServices.GetTestInterstitialAdUnitId (AndroidPackageName) } + { "test_interstitial_ad_unit_id", googleServices.GetTestInterstitialAdUnitId (AndroidPackageName) }, + { "default_web_client_id", googleServices.GetDefaultWebClientId (AndroidPackageName) }, + { "firebase_database_url", googleServices.GetFirebaseDatabaseUrl () }, + { "google_api_key", googleServices.GetGoogleApiKey (AndroidPackageName) }, + { "google_crash_reporting_api_key", googleServices.GetCrashReportingApiKey (AndroidPackageName) }, }; - + // We only want to create the file if not all of these values are missing if (valuesItems.Any (kvp => !string.IsNullOrEmpty (kvp.Value))) { Log.LogMessage ("Writing Resource File: {0}", valuesPath); From 6c24e38d6c97c9042bac3aa7ae6f69546921d9c1 Mon Sep 17 00:00:00 2001 From: Redth Date: Wed, 15 Jun 2016 09:27:29 -0400 Subject: [PATCH 058/178] Added tests for google-services.json processing --- GooglePlayServices.sln | 7 ++ .../Basement.BuildTasks.Tests.csproj | 50 +++++++++++ basement/buildtasks.tests/Test.cs | 85 +++++++++++++++++++ .../google-services.json | 41 ++++----- basement/buildtasks.tests/packages.config | 4 + 5 files changed, 164 insertions(+), 23 deletions(-) create mode 100644 basement/buildtasks.tests/Basement.BuildTasks.Tests.csproj create mode 100644 basement/buildtasks.tests/Test.cs rename basement/{buildtasks => buildtasks.tests}/google-services.json (67%) create mode 100644 basement/buildtasks.tests/packages.config diff --git a/GooglePlayServices.sln b/GooglePlayServices.sln index 15fa06206..9b8dbf95a 100644 --- a/GooglePlayServices.sln +++ b/GooglePlayServices.sln @@ -99,6 +99,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "BuildTasks", "BuildTasks", EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Basement-BuildTasks", "basement\buildtasks\Basement-BuildTasks.csproj", "{21D99A15-AB98-4691-A45B-D236B2A91DEB}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Basement.BuildTasks.Tests", "basement\buildtasks.tests\Basement.BuildTasks.Tests.csproj", "{76CDBE93-0177-4980-8514-C4D785E1DC78}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -289,6 +291,10 @@ Global {F666DC89-9CE4-491C-8450-6FBC70298FA3}.Debug|Any CPU.Build.0 = Debug|Any CPU {F666DC89-9CE4-491C-8450-6FBC70298FA3}.Release|Any CPU.ActiveCfg = Release|Any CPU {F666DC89-9CE4-491C-8450-6FBC70298FA3}.Release|Any CPU.Build.0 = Release|Any CPU + {76CDBE93-0177-4980-8514-C4D785E1DC78}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {76CDBE93-0177-4980-8514-C4D785E1DC78}.Debug|Any CPU.Build.0 = Debug|Any CPU + {76CDBE93-0177-4980-8514-C4D785E1DC78}.Release|Any CPU.ActiveCfg = Release|Any CPU + {76CDBE93-0177-4980-8514-C4D785E1DC78}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(NestedProjects) = preSolution {6A38FACF-F0C5-4A49-8A8A-7CE6634207CE} = {AFB1EDA0-E0D2-4E95-BAEC-9781B046413E} @@ -336,5 +342,6 @@ Global {C360116C-0ED5-4E59-A974-E95F874B4398} = {1EC5651F-83A6-4862-AED2-6BE5103652D0} {423414D9-6CB8-4AFF-8317-66AD03B6056D} = {1EC5651F-83A6-4862-AED2-6BE5103652D0} {21D99A15-AB98-4691-A45B-D236B2A91DEB} = {3330092C-6EB0-4AB6-9901-2F4070E2FD81} + {76CDBE93-0177-4980-8514-C4D785E1DC78} = {3330092C-6EB0-4AB6-9901-2F4070E2FD81} EndGlobalSection EndGlobal diff --git a/basement/buildtasks.tests/Basement.BuildTasks.Tests.csproj b/basement/buildtasks.tests/Basement.BuildTasks.Tests.csproj new file mode 100644 index 000000000..09cec4014 --- /dev/null +++ b/basement/buildtasks.tests/Basement.BuildTasks.Tests.csproj @@ -0,0 +1,50 @@ + + + + Debug + AnyCPU + 8.0.30703 + 2.0 + {76CDBE93-0177-4980-8514-C4D785E1DC78} + Library + buildtasks.tests + buildtasks.tests + v4.5 + + + true + full + false + bin\Debug + DEBUG; + prompt + 4 + false + + + true + bin\Release + prompt + 4 + false + + + + + ..\..\packages\NUnit.2.6.4\lib\nunit.framework.dll + + + + + + + + + + + {21D99A15-AB98-4691-A45B-D236B2A91DEB} + Basement-BuildTasks + + + + \ No newline at end of file diff --git a/basement/buildtasks.tests/Test.cs b/basement/buildtasks.tests/Test.cs new file mode 100644 index 000000000..3545be809 --- /dev/null +++ b/basement/buildtasks.tests/Test.cs @@ -0,0 +1,85 @@ +using NUnit.Framework; +using System; +using System.IO; +using Xamarin.GooglePlayServices.Tasks; +using System.Reflection; + +namespace buildtasks.tests +{ + [TestFixture ()] + public class GoogleServicesJsonTests + { + const string TestPkgName = "com.xamarin.sample"; + + static Stream OpenTestFile () + { + var path = Path.Combine (TestContext.CurrentContext.TestDirectory, "..", "..", "google-services.json"); + + return File.OpenRead (path); + } + + [Test] + public void GoogleApiKey_Should_Match_Test () + { + var g = GoogleServicesJsonProcessor.ProcessJson (TestPkgName, OpenTestFile ()); + var v = g.GetGoogleApiKey (TestPkgName); + + Assert.AreEqual ("AIzaSyCfJp9rrUEaA07vdoGvGQgJqm0Fa9cJGiw", v); + } + + [Test] + public void GoogleAppId_Should_Match_Test () + { + var g = GoogleServicesJsonProcessor.ProcessJson (TestPkgName, OpenTestFile ()); + var v = g.GetGoogleAppId (TestPkgName); + + Assert.AreEqual ("1:1041063143217:android:ffbe6976403db935", v); + } + + [Test] + public void CrashReportingApiKey_Should_Match_Test () + { + var g = GoogleServicesJsonProcessor.ProcessJson (TestPkgName, OpenTestFile ()); + var v = g.GetCrashReportingApiKey (TestPkgName); + + Assert.AreEqual ("AIzaSyCfJp9rrUEaA07vdoGvGQgJqm0Fa9cJGiw", v); + } + + [Test] + public void DefaultGcmSenderId_Should_Match_Test () + { + var g = GoogleServicesJsonProcessor.ProcessJson (TestPkgName, OpenTestFile ()); + var v = g.GetDefaultGcmSenderId (); + + Assert.AreEqual ("1041063143217", v); + } + + [Test] + public void DefaultWebClientId_Should_Match_Test () + { + var g = GoogleServicesJsonProcessor.ProcessJson (TestPkgName, OpenTestFile ()); + var v = g.GetDefaultWebClientId (TestPkgName); + + Assert.AreEqual ("1041063143217-hu5u4dnv8dkj19i4tpi6piv97kd2k9i0.apps.googleusercontent.com", v); + } + + [Test] + public void FirebaseDatabaseUrl_Should_Match_Test () + { + var g = GoogleServicesJsonProcessor.ProcessJson (TestPkgName, OpenTestFile ()); + var v = g.GetFirebaseDatabaseUrl (); + + Assert.AreEqual ("https://white-cedar-97320.firebaseio.com", v); + } + + [Test] + public void GATrackingId_Should_Match_Test () + { + var g = GoogleServicesJsonProcessor.ProcessJson (TestPkgName, OpenTestFile ()); + var v = g.GetGATrackingId (TestPkgName); + + Assert.AreEqual ("UA-6465612-26", v); + } + } +} + diff --git a/basement/buildtasks/google-services.json b/basement/buildtasks.tests/google-services.json similarity index 67% rename from basement/buildtasks/google-services.json rename to basement/buildtasks.tests/google-services.json index efaf9cf8f..f9d9e874e 100644 --- a/basement/buildtasks/google-services.json +++ b/basement/buildtasks.tests/google-services.json @@ -1,18 +1,16 @@ { "project_info": { - "project_id": "white-cedar-97320", "project_number": "1041063143217", - "name": "Xamarin" + "firebase_url": "https://white-cedar-97320.firebaseio.com", + "project_id": "white-cedar-97320", + "storage_bucket": "white-cedar-97320.appspot.com" }, "client": [ { "client_info": { "mobilesdk_app_id": "1:1041063143217:android:ffbe6976403db935", - "client_id": "android:com.xamarin.sample", - "client_type": 1, "android_client_info": { - "package_name": "com.xamarin.sample", - "certificate_hash": [] + "package_name": "com.xamarin.sample" } }, "oauth_client": [ @@ -24,12 +22,20 @@ "certificate_hash": "84949BBD3F34C8290A55AC9B66AD0A701EBA67AC" } }, + { + "client_id": "1041063143217-hu5u4dnv8dkj19i4tpi6piv97kd2k9i0.apps.googleusercontent.com", + "client_type": 3 + }, { "client_id": "1041063143217-n82odtjjgs9g2qnh1t470mdhj086id9f.apps.googleusercontent.com", "client_type": 3 } ], - "api_key": [], + "api_key": [ + { + "current_key": "AIzaSyCfJp9rrUEaA07vdoGvGQgJqm0Fa9cJGiw" + } + ], "services": { "analytics_service": { "status": 2, @@ -37,38 +43,27 @@ "tracking_id": "UA-6465612-26" } }, - "cloud_messaging_service": { - "status": 2, - "apns_config": [] - }, "appinvite_service": { "status": 2, "other_platform_oauth_client": [ { - "client_id": "1041063143217-n82odtjjgs9g2qnh1t470mdhj086id9f.apps.googleusercontent.com", + "client_id": "1041063143217-hu5u4dnv8dkj19i4tpi6piv97kd2k9i0.apps.googleusercontent.com", "client_type": 3 }, { "client_id": "1041063143217-rdc97s7jssl1k29c83b6oci04sihqkdi.apps.googleusercontent.com", "client_type": 2, "ios_info": { - "bundle_id": "com.xamarin.googleios.collectallthestars", - "app_store_id": "" + "bundle_id": "com.xamarin.googleios.collectallthestars" } } ] }, - "google_signin_service": { - "status": 2 - }, "ads_service": { - "status": 2, - "test_banner_ad_unit_id": "ca-app-pub-3940256099942544/6300978111", - "test_interstitial_ad_unit_id": "ca-app-pub-3940256099942544/1033173712" + "status": 2 } } } ], - "client_info": [], - "ARTIFACT_VERSION": "1" -} \ No newline at end of file + "configuration_version": "1" +} diff --git a/basement/buildtasks.tests/packages.config b/basement/buildtasks.tests/packages.config new file mode 100644 index 000000000..c714ef3a2 --- /dev/null +++ b/basement/buildtasks.tests/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file From 3ca2451d04a39f96e8a92a04fc5af71d31aeea12 Mon Sep 17 00:00:00 2001 From: Redth Date: Wed, 15 Jun 2016 09:28:22 -0400 Subject: [PATCH 059/178] Bump nuget version --- build.cake | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build.cake b/build.cake index 94556cd63..f2dc6da9f 100644 --- a/build.cake +++ b/build.cake @@ -13,11 +13,11 @@ var DOCS_URL = "https://dl-ssl.google.com/android/repository/google_play_service var M2_REPOSITORY = "https://dl-ssl.google.com/android/repository/google_m2repository_r27.zip"; var PLAY_COMPONENT_VERSION = "30.0.1.0"; -var PLAY_NUGET_VERSION = "30.0.1-alpha4"; +var PLAY_NUGET_VERSION = "30.0.1-alpha5"; var PLAY_AAR_VERSION = "9.0.1"; var WEAR_COMPONENT_VERSION = "1.4.0.0"; -var WEAR_NUGET_VERSION = "1.4.0.0-alpha4"; +var WEAR_NUGET_VERSION = "1.4.0.0-alpha5"; var WEAR_AAR_VERSION = PLAY_AAR_VERSION; var WEARABLE_SUPPORT_VERSION = "1.4.0"; From 88a2aae5c75dcb58800f65871ba09a654fa33892 Mon Sep 17 00:00:00 2001 From: Redth Date: Mon, 20 Jun 2016 13:46:46 -0400 Subject: [PATCH 060/178] Added some more logging to the google-services.json build task --- basement/buildtasks/ProcessGoogleServicesJson.cs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/basement/buildtasks/ProcessGoogleServicesJson.cs b/basement/buildtasks/ProcessGoogleServicesJson.cs index 0a64884a3..cfcaf44a2 100644 --- a/basement/buildtasks/ProcessGoogleServicesJson.cs +++ b/basement/buildtasks/ProcessGoogleServicesJson.cs @@ -32,6 +32,8 @@ public override bool Execute () { Log.LogMessage ("Started ProcessGoogleServicesJson..."); + Log.LogMessage ("Android Package Name: {0}", AndroidPackageName); + // Paths to write resource files to var xmlPath = Path.Combine (MonoAndroidResDirIntermediate, "xml", RESFILE_XML); var valuesPath = Path.Combine (MonoAndroidResDirIntermediate, "values", RESFILE_VALUES); @@ -68,6 +70,11 @@ public override bool Execute () return false; } + var resolvedClientInfo = googleServices.GetClient (AndroidPackageName); + if (resolvedClientInfo == null) { + Log.LogWarning ("Failed to find client_info in google-services.json matching package name: {0}", AndroidPackageName); + } + var valuesItems = new Dictionary { { "ga_trackingId", googleServices.GetGATrackingId (AndroidPackageName) }, { "gcm_defaultSenderId", googleServices.GetDefaultGcmSenderId () }, From a934d2fa86e957f2ec6952bcec8a86a8f27d873e Mon Sep 17 00:00:00 2001 From: Redth Date: Mon, 20 Jun 2016 13:59:53 -0400 Subject: [PATCH 061/178] Added some async'ified versions of bound methods --- firebase-auth/source/Additions/Additions.cs | 34 +++++++++++++++++++++ firebase-auth/source/Firebase-Auth.csproj | 5 +++ 2 files changed, 39 insertions(+) create mode 100644 firebase-auth/source/Additions/Additions.cs diff --git a/firebase-auth/source/Additions/Additions.cs b/firebase-auth/source/Additions/Additions.cs new file mode 100644 index 000000000..b8cabdef9 --- /dev/null +++ b/firebase-auth/source/Additions/Additions.cs @@ -0,0 +1,34 @@ +using System; +using Android.Gms.Extensions; + +namespace Firebase.Auth +{ + public partial class FirebaseAuth + { + public System.Threading.Tasks.Task SignInAnonymouslyAsync () + { + return SignInAnonymously ().AsAsync (); + } + + public System.Threading.Tasks.Task SignInWithCustomTokenAsync (string customToken) + { + return SignInWithCustomToken (customToken).AsAsync (); + } + + public System.Threading.Tasks.Task CreateUserWithEmailAndPasswordAsync (string email, string password) + { + return CreateUserWithEmailAndPassword (email, password).AsAsync (); + } + + public System.Threading.Tasks.Task SignInWithCredentialAsync (AuthCredential authCredential) + { + return SignInWithCredential (authCredential).AsAsync (); + } + + public System.Threading.Tasks.Task SignInWithEmailAndPasswordAsync (string email, string password) + { + return SignInWithEmailAndPassword (email, password).AsAsync (); + } + } +} + diff --git a/firebase-auth/source/Firebase-Auth.csproj b/firebase-auth/source/Firebase-Auth.csproj index ea18d64e8..ecc07a386 100644 --- a/firebase-auth/source/Firebase-Auth.csproj +++ b/firebase-auth/source/Firebase-Auth.csproj @@ -48,6 +48,7 @@ Properties\GpsConsts.cs + @@ -80,6 +81,10 @@ {53F87D88-8871-41A2-9F81-B79AB02FEC24} Tasks + + {7DA24DFC-EF53-4C06-AB7A-FF6BEF513A1B} + Firebase-Auth-Module + From 726f923b664341cdeb175b58145f9f607fc4b81e Mon Sep 17 00:00:00 2001 From: Redth Date: Mon, 20 Jun 2016 14:16:17 -0400 Subject: [PATCH 062/178] Added some convenience methods for firebase-crash You can report System.Exception's now as well as use LogPriority enum in the Logcat method calls. --- firebase-crash/source/Additions/Additions.cs | 23 ++++++++++++++++++++ firebase-crash/source/Firebase-Crash.csproj | 1 + 2 files changed, 24 insertions(+) create mode 100644 firebase-crash/source/Additions/Additions.cs diff --git a/firebase-crash/source/Additions/Additions.cs b/firebase-crash/source/Additions/Additions.cs new file mode 100644 index 000000000..51eb9b89d --- /dev/null +++ b/firebase-crash/source/Additions/Additions.cs @@ -0,0 +1,23 @@ +using System; + +namespace Firebase.Crash +{ + public partial class FirebaseCrash + { + public static void Logcat (Android.Util.LogPriority logPriority, string tag, string message) + { + Logcat ((int)logPriority, tag, message); + } + + public static void Logcat (Android.Util.LogPriority logPriority, string tag, string format, params object[] args) + { + Logcat ((int)logPriority, tag, string.Format (format, args)); + } + + public static void Report (System.Exception exception) + { + Report (Java.Lang.Throwable.FromException (exception)); + } + } +} + diff --git a/firebase-crash/source/Firebase-Crash.csproj b/firebase-crash/source/Firebase-Crash.csproj index 1e780d1e4..01aea1393 100644 --- a/firebase-crash/source/Firebase-Crash.csproj +++ b/firebase-crash/source/Firebase-Crash.csproj @@ -49,6 +49,7 @@ Properties\GpsConsts.cs + From c6d89db977c0ac4f1dab963c4ee4c24f031d7cde Mon Sep 17 00:00:00 2001 From: Redth Date: Mon, 20 Jun 2016 14:16:45 -0400 Subject: [PATCH 063/178] Added async'ified version of bound method --- firebase-common/source/Additions/Additions.cs | 14 ++++++++++++++ firebase-common/source/Firebase-Common.csproj | 1 + 2 files changed, 15 insertions(+) create mode 100644 firebase-common/source/Additions/Additions.cs diff --git a/firebase-common/source/Additions/Additions.cs b/firebase-common/source/Additions/Additions.cs new file mode 100644 index 000000000..5ef6e9164 --- /dev/null +++ b/firebase-common/source/Additions/Additions.cs @@ -0,0 +1,14 @@ +using System; +using Android.Gms.Tasks; +using Android.Gms.Extensions; + +namespace Firebase.Auth +{ + public partial class FirebaseUser + { + public System.Threading.Tasks.Task LinkWithCredentialAsync (AuthCredential credential) + { + return LinkWithCredential (credential).AsAsync (); + } + } +} diff --git a/firebase-common/source/Firebase-Common.csproj b/firebase-common/source/Firebase-Common.csproj index e9bc0bfcb..e2a241ff6 100644 --- a/firebase-common/source/Firebase-Common.csproj +++ b/firebase-common/source/Firebase-Common.csproj @@ -55,6 +55,7 @@ Properties\GpsConsts.cs + From d7c6c818f96c93c20165efbb0137cf493326aa20 Mon Sep 17 00:00:00 2001 From: Redth Date: Mon, 20 Jun 2016 14:17:11 -0400 Subject: [PATCH 064/178] Fixed incorrect paths to aar in firebase-crash binding --- firebase-crash/source/Properties/AssemblyInfo.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/firebase-crash/source/Properties/AssemblyInfo.cs b/firebase-crash/source/Properties/AssemblyInfo.cs index 735daf077..f344625df 100644 --- a/firebase-crash/source/Properties/AssemblyInfo.cs +++ b/firebase-crash/source/Properties/AssemblyInfo.cs @@ -42,7 +42,7 @@ // https://dl-ssl.google.com/android/repository/addon.xml static class __Consts { - public const string PackageName = "Firebase Config"; - public const string AarPath = "m2repository/com/google/firebase/firebase-config/" + __FbConsts.Version + "/firebase-config-" + __FbConsts.Version + ".aar"; + public const string PackageName = "Firebase Crash"; + public const string AarPath = "m2repository/com/google/firebase/firebase-crash/" + __FbConsts.Version + "/firebase-crash-" + __FbConsts.Version + ".aar"; } \ No newline at end of file From eeba573546b39e6c93e4ed006004ff7c5de310d1 Mon Sep 17 00:00:00 2001 From: Redth Date: Mon, 20 Jun 2016 14:20:56 -0400 Subject: [PATCH 065/178] Reworked GPS Task extensions The Task should now be awaitable with the correct extension method --- tasks/source/Additions/Task.cs | 90 +++++++++++++++++++++++----------- 1 file changed, 62 insertions(+), 28 deletions(-) diff --git a/tasks/source/Additions/Task.cs b/tasks/source/Additions/Task.cs index b931faefe..1bb1197b0 100644 --- a/tasks/source/Additions/Task.cs +++ b/tasks/source/Additions/Task.cs @@ -1,55 +1,89 @@ using System; using Android.Runtime; +using Android.Gms.Tasks; +using System.Runtime.CompilerServices; +using Android.Gms.Extensions; -namespace Android.Gms.Tasks +namespace Android.Gms.Extensions { - public abstract partial class Task : Task where TResult : Java.Lang.Object + public static class TasksExtensions { - public TResult Result { get { return this.RawResult.JavaCast(); } } + + public static System.Threading.Tasks.Task AsAsync (this Task task) where TResult : class, IJavaObject + { + var c = new AwaitableTaskCompleteListener (); - System.Threading.Tasks.TaskCompletionSource tcs; - InternalTaskCompletionListener completeListener; + // The Java Task returned from this call is the same task + // so we do not have to await it + task.AddOnCompleteListener (c); - public Task () : base () - { - init(); + return c.AwaitAsync (); } - protected Task (IntPtr javaReference, JniHandleOwnership transfer) : base (javaReference, transfer) + public static System.Threading.Tasks.Task AsAsync (this Task task) { - init(); + var c = new AwaitableTaskCompleteListener (); + + task.AddOnCompleteListener (c); + + return c.AwaitAsync (); } - void init () + public static TaskAwaiter GetAwaiter (this Task task) where TResult : class, IJavaObject { - tcs = new System.Threading.Tasks.TaskCompletionSource (); + var c = new AwaitableTaskCompleteListener (); + + task.AddOnCompleteListener (c); - completeListener = new InternalTaskCompletionListener - { - OnCompleteHandler = completedTask => { - if (this.IsSuccessful) - tcs.SetResult(this.Result); - else - tcs.SetException(this.Exception); - } - }; - this.AddOnCompleteListener(completeListener); + return c.GetAwaiter (); } - public System.Runtime.CompilerServices.TaskAwaiter GetAwaiter () + public static TaskAwaiter GetAwaiter (this Task task) { - return tcs.Task.GetAwaiter (); + var c = new AwaitableTaskCompleteListener (); + + task.AddOnCompleteListener (c); + + return c.GetAwaiter (); } } - internal class InternalTaskCompletionListener : Java.Lang.Object, IOnCompleteListener + class AwaitableTaskCompleteListener : Java.Lang.Object, IOnCompleteListener where TResult : class, IJavaObject { - public Action OnCompleteHandler { get; set; } + System.Threading.Tasks.TaskCompletionSource taskCompletionSource; + + public AwaitableTaskCompleteListener () + { + taskCompletionSource = new System.Threading.Tasks.TaskCompletionSource (); + } public void OnComplete (Task task) { - if (OnCompleteHandler != null) - OnCompleteHandler (task); + if (task.IsSuccessful) { + taskCompletionSource.SetResult (task?.Result?.JavaCast ()); + } else { + taskCompletionSource.SetException (task.Exception); + } + } + + public System.Threading.Tasks.Task AwaitAsync () + { + return taskCompletionSource.Task; + } + + public TaskAwaiter GetAwaiter () + { + return taskCompletionSource.Task.GetAwaiter (); + } + } +} + +namespace Android.Gms.Tasks +{ + public partial class Task + { + public virtual Java.Lang.Object Result { + get { return RawResult; } } } } From 6719fa7e28de3671d66496595085bfdd5ab8c485 Mon Sep 17 00:00:00 2001 From: Redth Date: Mon, 20 Jun 2016 14:21:37 -0400 Subject: [PATCH 066/178] Updated to v9.0.2 --- GpsConsts.cs | 4 ++-- build.cake | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/GpsConsts.cs b/GpsConsts.cs index 4e587a6f3..c6f1f0b4e 100644 --- a/GpsConsts.cs +++ b/GpsConsts.cs @@ -3,8 +3,8 @@ // https://dl-ssl.google.com/android/repository/addon.xml static class __GpsConsts { - public const string Url = "https://dl-ssl.google.com/android/repository/google_m2repository_r27.zip"; - public const string Version = "9.0.1"; + public const string Url = "https://dl-ssl.google.com/android/repository/google_m2repository_r28.zip"; + public const string Version = "9.0.2"; public const string WearVersion = "1.4.0"; } diff --git a/build.cake b/build.cake index f2dc6da9f..9d0ea8262 100644 --- a/build.cake +++ b/build.cake @@ -10,14 +10,14 @@ // To find new URL: https://dl-ssl.google.com/android/repository/addon.xml and search for google_play_services_*.zip var DOCS_URL = "https://dl-ssl.google.com/android/repository/google_play_services_9080000_r30.zip"; -var M2_REPOSITORY = "https://dl-ssl.google.com/android/repository/google_m2repository_r27.zip"; +var M2_REPOSITORY = "https://dl-ssl.google.com/android/repository/google_m2repository_r28.zip"; -var PLAY_COMPONENT_VERSION = "30.0.1.0"; -var PLAY_NUGET_VERSION = "30.0.1-alpha5"; -var PLAY_AAR_VERSION = "9.0.1"; +var PLAY_COMPONENT_VERSION = "30.0.2.0"; +var PLAY_NUGET_VERSION = "30.0.2-alpha1"; +var PLAY_AAR_VERSION = "9.0.2"; var WEAR_COMPONENT_VERSION = "1.4.0.0"; -var WEAR_NUGET_VERSION = "1.4.0.0-alpha5"; +var WEAR_NUGET_VERSION = "1.4.0.0-alpha6"; var WEAR_AAR_VERSION = PLAY_AAR_VERSION; var WEARABLE_SUPPORT_VERSION = "1.4.0"; From e115e4104ca90ec65520698a2ecc504785888373 Mon Sep 17 00:00:00 2001 From: Redth Date: Mon, 20 Jun 2016 21:08:24 -0400 Subject: [PATCH 067/178] Added some artwork for sample assets --- art/.gitignore | 1 + art/xamarin-firebase-banner.sketch | Bin 0 -> 49152 bytes 2 files changed, 1 insertion(+) create mode 100644 art/.gitignore create mode 100644 art/xamarin-firebase-banner.sketch diff --git a/art/.gitignore b/art/.gitignore new file mode 100644 index 000000000..66afd82eb --- /dev/null +++ b/art/.gitignore @@ -0,0 +1 @@ +Resources/ diff --git a/art/xamarin-firebase-banner.sketch b/art/xamarin-firebase-banner.sketch new file mode 100644 index 0000000000000000000000000000000000000000..5eb91361f0ab544b6213dbf872c809b5843b3b79 GIT binary patch literal 49152 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 literal 0 HcmV?d00001 From 34cd4594d44368575b0dbd781df1edf77ff555e3 Mon Sep 17 00:00:00 2001 From: Redth Date: Tue, 21 Jun 2016 09:28:16 -0400 Subject: [PATCH 068/178] Added Outputs to basement build task We add them to the _AndroidResourceDest item group so they get picked up by _UpdateAndroidResgen --- .../buildtasks/ProcessGoogleServicesJson.cs | 17 +++++++++++++++++ .../Xamarin.GooglePlayServices.Basement.targets | 7 ++++++- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/basement/buildtasks/ProcessGoogleServicesJson.cs b/basement/buildtasks/ProcessGoogleServicesJson.cs index cfcaf44a2..6737201b4 100644 --- a/basement/buildtasks/ProcessGoogleServicesJson.cs +++ b/basement/buildtasks/ProcessGoogleServicesJson.cs @@ -16,6 +16,9 @@ public class ProcessGoogleServicesJson : Task public string IntermediateOutputPrefix { get; set; } + [Output] + public ITaskItem[] GoogleServicesGeneratedResources { get; set; } + [Required] public string AndroidPackageName { get; set; } @@ -38,6 +41,9 @@ public override bool Execute () var xmlPath = Path.Combine (MonoAndroidResDirIntermediate, "xml", RESFILE_XML); var valuesPath = Path.Combine (MonoAndroidResDirIntermediate, "values", RESFILE_VALUES); + var wroteXmlPath = false; + var wroteValuesPath = false; + if (GoogleServicesJsons == null || !GoogleServicesJsons.Any ()) { Log.LogMessage ("No GoogleServicesJson Build Action items specified, skipping task."); DeleteFiles (valuesPath, xmlPath); @@ -91,6 +97,7 @@ public override bool Execute () if (valuesItems.Any (kvp => !string.IsNullOrEmpty (kvp.Value))) { Log.LogMessage ("Writing Resource File: {0}", valuesPath); WriteResourceDoc (valuesPath, valuesItems); + wroteValuesPath = true; Log.LogMessage ("Wrote Resource File: {0}", valuesPath); } else { if (File.Exists (valuesPath)) { @@ -111,6 +118,7 @@ public override bool Execute () if (xmlItems.Any (kvp => !string.IsNullOrEmpty (kvp.Value))) { Log.LogMessage ("Writing Resource File: {0}", xmlPath); WriteResourceDoc (xmlPath, xmlItems); + wroteXmlPath = true; Log.LogMessage ("Wrote Resource File: {0}", xmlPath); } else { // If no @@ -124,6 +132,15 @@ public override bool Execute () } } + var outputFiles = new List (); + if (wroteXmlPath) + outputFiles.Add (new TaskItem (xmlPath)); + if (wroteValuesPath) + outputFiles.Add (new TaskItem (valuesPath)); + + if (outputFiles.Any ()) + GoogleServicesGeneratedResources = outputFiles.ToArray (); + Log.LogMessage ("Finished ProcessGoogleServicesJson..."); return true; } diff --git a/basement/buildtasks/Xamarin.GooglePlayServices.Basement.targets b/basement/buildtasks/Xamarin.GooglePlayServices.Basement.targets index ea1460108..63c2cb54b 100644 --- a/basement/buildtasks/Xamarin.GooglePlayServices.Basement.targets +++ b/basement/buildtasks/Xamarin.GooglePlayServices.Basement.targets @@ -30,6 +30,9 @@ _UpdateAndroidResgen;$(ProcessGoogleServicesJsonBeforeTargets); + + $(ProcessGoogleServicesJsonAfterTargets); + @@ -41,7 +44,8 @@ + BeforeTargets="$(ProcessGoogleServicesJsonBeforeTargets)" + AfterTargets="$(ProcessGoogleServicesJsonAfterTargets)"> + From 60c9189290f8c7bde83ab424d5a3fcabdf4f35a0 Mon Sep 17 00:00:00 2001 From: Redth Date: Tue, 21 Jun 2016 10:00:23 -0400 Subject: [PATCH 069/178] Added support-v4 dependency to firebase-iid --- firebase-iid/source/Firebase-Iid.csproj | 4 ++++ firebase-iid/source/packages.config | 4 ++++ 2 files changed, 8 insertions(+) create mode 100644 firebase-iid/source/packages.config diff --git a/firebase-iid/source/Firebase-Iid.csproj b/firebase-iid/source/Firebase-Iid.csproj index b2ce31417..6c72baa27 100644 --- a/firebase-iid/source/Firebase-Iid.csproj +++ b/firebase-iid/source/Firebase-Iid.csproj @@ -42,6 +42,9 @@ + + ..\..\firebase-crash\samples\packages\Xamarin.Android.Support.v4.23.1.1.1\lib\MonoAndroid403\Xamarin.Android.Support.v4.dll + @@ -53,6 +56,7 @@ + diff --git a/firebase-iid/source/packages.config b/firebase-iid/source/packages.config new file mode 100644 index 000000000..59cde6e53 --- /dev/null +++ b/firebase-iid/source/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file From 00de8e2d4263c9818c7df7b1428ff40d3f197707 Mon Sep 17 00:00:00 2001 From: Redth Date: Tue, 21 Jun 2016 10:10:03 -0400 Subject: [PATCH 070/178] Added Firebase Analytics Sample --- .../samples/FirebaseAnalyticsQuickstart.sln | 59 +++++ .../Assets/AboutAssets.txt | 19 ++ .../FirebaseAnalyticsQuickstart.csproj | 122 +++++++++ .../ImageFragment.cs | 47 ++++ .../FirebaseAnalyticsQuickstart/ImageInfo.cs | 20 ++ .../MainActivity.cs | 236 ++++++++++++++++++ .../Properties/AndroidManifest.xml | 5 + .../Properties/AssemblyInfo.cs | 28 +++ .../Resources/AboutResources.txt | 44 ++++ .../Resources/drawable-hdpi/face.png | Bin 0 -> 12219 bytes .../Resources/drawable-hdpi/favorite.png | Bin 0 -> 6598 bytes .../Resources/drawable-hdpi/flash.png | Bin 0 -> 2232 bytes .../Resources/drawable-hdpi/whitebalance.png | Bin 0 -> 4950 bytes .../Resources/drawable-mdpi/face.png | Bin 0 -> 5271 bytes .../Resources/drawable-mdpi/favorite.png | Bin 0 -> 2907 bytes .../Resources/drawable-mdpi/flash.png | Bin 0 -> 989 bytes .../Resources/drawable-mdpi/whitebalance.png | Bin 0 -> 2304 bytes .../Resources/drawable-xhdpi/face.png | Bin 0 -> 12219 bytes .../Resources/drawable-xhdpi/favorite.png | Bin 0 -> 6598 bytes .../Resources/drawable-xhdpi/flash.png | Bin 0 -> 2232 bytes .../Resources/drawable-xhdpi/whitebalance.png | Bin 0 -> 4950 bytes .../Resources/drawable-xxhdpi/face.png | Bin 0 -> 19002 bytes .../Resources/drawable-xxhdpi/favorite.png | Bin 0 -> 10590 bytes .../Resources/drawable-xxhdpi/flash.png | Bin 0 -> 4628 bytes .../drawable-xxhdpi/whitebalance.png | Bin 0 -> 8077 bytes .../Resources/drawable/circle.xml | 4 + .../Resources/layout/activity_main.xml | 11 + .../Resources/layout/fragment_main.xml | 20 ++ .../Resources/menu/main.xml | 6 + .../Resources/mipmap-hdpi/ic_launcher.png | Bin 0 -> 3255 bytes .../Resources/mipmap-mdpi/ic_launcher.png | Bin 0 -> 2082 bytes .../Resources/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 4381 bytes .../Resources/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 6866 bytes .../Resources/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 9237 bytes .../Resources/values-w820dp/dimens.xml | 3 + .../Resources/values/colors.xml | 6 + .../Resources/values/dimens.xml | 4 + .../Resources/values/strings.xml | 19 ++ .../Resources/values/styles.xml | 7 + .../google-services.json | 1 + .../packages.config | 5 + 41 files changed, 666 insertions(+) create mode 100644 firebase-analytics/samples/FirebaseAnalyticsQuickstart.sln create mode 100644 firebase-analytics/samples/FirebaseAnalyticsQuickstart/Assets/AboutAssets.txt create mode 100644 firebase-analytics/samples/FirebaseAnalyticsQuickstart/FirebaseAnalyticsQuickstart.csproj create mode 100644 firebase-analytics/samples/FirebaseAnalyticsQuickstart/ImageFragment.cs create mode 100644 firebase-analytics/samples/FirebaseAnalyticsQuickstart/ImageInfo.cs create mode 100644 firebase-analytics/samples/FirebaseAnalyticsQuickstart/MainActivity.cs create mode 100644 firebase-analytics/samples/FirebaseAnalyticsQuickstart/Properties/AndroidManifest.xml create mode 100644 firebase-analytics/samples/FirebaseAnalyticsQuickstart/Properties/AssemblyInfo.cs create mode 100644 firebase-analytics/samples/FirebaseAnalyticsQuickstart/Resources/AboutResources.txt create mode 100755 firebase-analytics/samples/FirebaseAnalyticsQuickstart/Resources/drawable-hdpi/face.png create mode 100755 firebase-analytics/samples/FirebaseAnalyticsQuickstart/Resources/drawable-hdpi/favorite.png create mode 100755 firebase-analytics/samples/FirebaseAnalyticsQuickstart/Resources/drawable-hdpi/flash.png create mode 100755 firebase-analytics/samples/FirebaseAnalyticsQuickstart/Resources/drawable-hdpi/whitebalance.png create mode 100755 firebase-analytics/samples/FirebaseAnalyticsQuickstart/Resources/drawable-mdpi/face.png create mode 100755 firebase-analytics/samples/FirebaseAnalyticsQuickstart/Resources/drawable-mdpi/favorite.png create mode 100755 firebase-analytics/samples/FirebaseAnalyticsQuickstart/Resources/drawable-mdpi/flash.png create mode 100755 firebase-analytics/samples/FirebaseAnalyticsQuickstart/Resources/drawable-mdpi/whitebalance.png create mode 100755 firebase-analytics/samples/FirebaseAnalyticsQuickstart/Resources/drawable-xhdpi/face.png create mode 100755 firebase-analytics/samples/FirebaseAnalyticsQuickstart/Resources/drawable-xhdpi/favorite.png create mode 100755 firebase-analytics/samples/FirebaseAnalyticsQuickstart/Resources/drawable-xhdpi/flash.png create mode 100755 firebase-analytics/samples/FirebaseAnalyticsQuickstart/Resources/drawable-xhdpi/whitebalance.png create mode 100755 firebase-analytics/samples/FirebaseAnalyticsQuickstart/Resources/drawable-xxhdpi/face.png create mode 100755 firebase-analytics/samples/FirebaseAnalyticsQuickstart/Resources/drawable-xxhdpi/favorite.png create mode 100755 firebase-analytics/samples/FirebaseAnalyticsQuickstart/Resources/drawable-xxhdpi/flash.png create mode 100755 firebase-analytics/samples/FirebaseAnalyticsQuickstart/Resources/drawable-xxhdpi/whitebalance.png create mode 100755 firebase-analytics/samples/FirebaseAnalyticsQuickstart/Resources/drawable/circle.xml create mode 100755 firebase-analytics/samples/FirebaseAnalyticsQuickstart/Resources/layout/activity_main.xml create mode 100755 firebase-analytics/samples/FirebaseAnalyticsQuickstart/Resources/layout/fragment_main.xml create mode 100755 firebase-analytics/samples/FirebaseAnalyticsQuickstart/Resources/menu/main.xml create mode 100644 firebase-analytics/samples/FirebaseAnalyticsQuickstart/Resources/mipmap-hdpi/ic_launcher.png create mode 100644 firebase-analytics/samples/FirebaseAnalyticsQuickstart/Resources/mipmap-mdpi/ic_launcher.png create mode 100644 firebase-analytics/samples/FirebaseAnalyticsQuickstart/Resources/mipmap-xhdpi/ic_launcher.png create mode 100644 firebase-analytics/samples/FirebaseAnalyticsQuickstart/Resources/mipmap-xxhdpi/ic_launcher.png create mode 100644 firebase-analytics/samples/FirebaseAnalyticsQuickstart/Resources/mipmap-xxxhdpi/ic_launcher.png create mode 100755 firebase-analytics/samples/FirebaseAnalyticsQuickstart/Resources/values-w820dp/dimens.xml create mode 100755 firebase-analytics/samples/FirebaseAnalyticsQuickstart/Resources/values/colors.xml create mode 100755 firebase-analytics/samples/FirebaseAnalyticsQuickstart/Resources/values/dimens.xml create mode 100755 firebase-analytics/samples/FirebaseAnalyticsQuickstart/Resources/values/strings.xml create mode 100755 firebase-analytics/samples/FirebaseAnalyticsQuickstart/Resources/values/styles.xml create mode 100644 firebase-analytics/samples/FirebaseAnalyticsQuickstart/google-services.json create mode 100644 firebase-analytics/samples/FirebaseAnalyticsQuickstart/packages.config diff --git a/firebase-analytics/samples/FirebaseAnalyticsQuickstart.sln b/firebase-analytics/samples/FirebaseAnalyticsQuickstart.sln new file mode 100644 index 000000000..a03aa9d68 --- /dev/null +++ b/firebase-analytics/samples/FirebaseAnalyticsQuickstart.sln @@ -0,0 +1,59 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 2012 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FirebaseAnalyticsQuickstart", "FirebaseAnalyticsQuickstart\FirebaseAnalyticsQuickstart.csproj", "{64ADFD05-882E-41D9-B045-935CD0D08CD4}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Basement", "..\..\basement\source\Basement.csproj", "{6A38FACF-F0C5-4A49-8A8A-7CE6634207CE}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Firebase-Common", "..\..\firebase-common\source\Firebase-Common.csproj", "{865652D3-8D1A-4779-92FC-4C54719286B7}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Firebase-Analytics-Impl", "..\..\firebase-analytics-impl\source\Firebase-Analytics-Impl.csproj", "{CFB0A03A-F787-4EE9-9EA6-8A2A65E82704}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Firebase-Analytics", "..\source\Firebase-Analytics.csproj", "{DC5BEB52-1715-4E53-88EF-2D4F1708E394}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Basement-BuildTasks", "..\..\basement\buildtasks\Basement-BuildTasks.csproj", "{21D99A15-AB98-4691-A45B-D236B2A91DEB}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tasks", "..\..\tasks\source\Tasks.csproj", "{53F87D88-8871-41A2-9F81-B79AB02FEC24}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Base", "..\..\base\source\Base.csproj", "{3F6BAE25-ADEB-468C-8384-AD655623C341}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {64ADFD05-882E-41D9-B045-935CD0D08CD4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {64ADFD05-882E-41D9-B045-935CD0D08CD4}.Debug|Any CPU.Build.0 = Debug|Any CPU + {64ADFD05-882E-41D9-B045-935CD0D08CD4}.Release|Any CPU.ActiveCfg = Release|Any CPU + {64ADFD05-882E-41D9-B045-935CD0D08CD4}.Release|Any CPU.Build.0 = Release|Any CPU + {6A38FACF-F0C5-4A49-8A8A-7CE6634207CE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6A38FACF-F0C5-4A49-8A8A-7CE6634207CE}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6A38FACF-F0C5-4A49-8A8A-7CE6634207CE}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6A38FACF-F0C5-4A49-8A8A-7CE6634207CE}.Release|Any CPU.Build.0 = Release|Any CPU + {865652D3-8D1A-4779-92FC-4C54719286B7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {865652D3-8D1A-4779-92FC-4C54719286B7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {865652D3-8D1A-4779-92FC-4C54719286B7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {865652D3-8D1A-4779-92FC-4C54719286B7}.Release|Any CPU.Build.0 = Release|Any CPU + {CFB0A03A-F787-4EE9-9EA6-8A2A65E82704}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {CFB0A03A-F787-4EE9-9EA6-8A2A65E82704}.Debug|Any CPU.Build.0 = Debug|Any CPU + {CFB0A03A-F787-4EE9-9EA6-8A2A65E82704}.Release|Any CPU.ActiveCfg = Release|Any CPU + {CFB0A03A-F787-4EE9-9EA6-8A2A65E82704}.Release|Any CPU.Build.0 = Release|Any CPU + {DC5BEB52-1715-4E53-88EF-2D4F1708E394}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {DC5BEB52-1715-4E53-88EF-2D4F1708E394}.Debug|Any CPU.Build.0 = Debug|Any CPU + {DC5BEB52-1715-4E53-88EF-2D4F1708E394}.Release|Any CPU.ActiveCfg = Release|Any CPU + {DC5BEB52-1715-4E53-88EF-2D4F1708E394}.Release|Any CPU.Build.0 = Release|Any CPU + {21D99A15-AB98-4691-A45B-D236B2A91DEB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {21D99A15-AB98-4691-A45B-D236B2A91DEB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {21D99A15-AB98-4691-A45B-D236B2A91DEB}.Release|Any CPU.ActiveCfg = Release|Any CPU + {21D99A15-AB98-4691-A45B-D236B2A91DEB}.Release|Any CPU.Build.0 = Release|Any CPU + {53F87D88-8871-41A2-9F81-B79AB02FEC24}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {53F87D88-8871-41A2-9F81-B79AB02FEC24}.Debug|Any CPU.Build.0 = Debug|Any CPU + {53F87D88-8871-41A2-9F81-B79AB02FEC24}.Release|Any CPU.ActiveCfg = Release|Any CPU + {53F87D88-8871-41A2-9F81-B79AB02FEC24}.Release|Any CPU.Build.0 = Release|Any CPU + {3F6BAE25-ADEB-468C-8384-AD655623C341}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3F6BAE25-ADEB-468C-8384-AD655623C341}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3F6BAE25-ADEB-468C-8384-AD655623C341}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3F6BAE25-ADEB-468C-8384-AD655623C341}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/firebase-analytics/samples/FirebaseAnalyticsQuickstart/Assets/AboutAssets.txt b/firebase-analytics/samples/FirebaseAnalyticsQuickstart/Assets/AboutAssets.txt new file mode 100644 index 000000000..a9b0638eb --- /dev/null +++ b/firebase-analytics/samples/FirebaseAnalyticsQuickstart/Assets/AboutAssets.txt @@ -0,0 +1,19 @@ +Any raw assets you want to be deployed with your application can be placed in +this directory (and child directories) and given a Build Action of "AndroidAsset". + +These files will be deployed with your package and will be accessible using Android's +AssetManager, like this: + +public class ReadAsset : Activity +{ + protected override void OnCreate (Bundle bundle) + { + base.OnCreate (bundle); + + InputStream input = Assets.Open ("my_asset.txt"); + } +} + +Additionally, some Android functions will automatically load asset files: + +Typeface tf = Typeface.CreateFromAsset (Context.Assets, "fonts/samplefont.ttf"); diff --git a/firebase-analytics/samples/FirebaseAnalyticsQuickstart/FirebaseAnalyticsQuickstart.csproj b/firebase-analytics/samples/FirebaseAnalyticsQuickstart/FirebaseAnalyticsQuickstart.csproj new file mode 100644 index 000000000..304cdd8f2 --- /dev/null +++ b/firebase-analytics/samples/FirebaseAnalyticsQuickstart/FirebaseAnalyticsQuickstart.csproj @@ -0,0 +1,122 @@ + + + + Debug + AnyCPU + {64ADFD05-882E-41D9-B045-935CD0D08CD4} + {EFBA0AD7-5A72-4C68-AF49-83D382785DCF};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + Library + FirebaseAnalyticsQuickstart + FirebaseAnalyticsQuickstart + v6.0 + True + Resources\Resource.designer.cs + Resource + Properties\AndroidManifest.xml + Resources + Assets + true + + + true + full + false + bin\Debug + DEBUG; + prompt + 4 + false + None + + + true + bin\Release + prompt + 4 + false + false + + + + + + + + ..\packages\Xamarin.Android.Support.v4.23.1.1.1\lib\MonoAndroid403\Xamarin.Android.Support.v4.dll + + + ..\packages\Xamarin.Android.Support.v7.AppCompat.23.1.1.1\lib\MonoAndroid403\Xamarin.Android.Support.v7.AppCompat.dll + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {6A38FACF-F0C5-4A49-8A8A-7CE6634207CE} + Basement + + + {DC5BEB52-1715-4E53-88EF-2D4F1708E394} + Firebase-Analytics + + + {CFB0A03A-F787-4EE9-9EA6-8A2A65E82704} + Firebase-Analytics-Impl + + + {865652D3-8D1A-4779-92FC-4C54719286B7} + Firebase-Common + + + + + + + + \ No newline at end of file diff --git a/firebase-analytics/samples/FirebaseAnalyticsQuickstart/ImageFragment.cs b/firebase-analytics/samples/FirebaseAnalyticsQuickstart/ImageFragment.cs new file mode 100644 index 000000000..82137693d --- /dev/null +++ b/firebase-analytics/samples/FirebaseAnalyticsQuickstart/ImageFragment.cs @@ -0,0 +1,47 @@ +using System; +using Android.OS; +using Android.Support.V4.App; +using Android.Views; +using Android.Widget; + +namespace FirebaseAnalyticsQuickstart +{ + /** + * This fragment displays a featured, specified image. + */ + public class ImageFragment : Fragment + { + const string ARG_PATTERN = "pattern"; + int resId; + + /** + * Create a ImageFragment displaying the given image. + */ + public static ImageFragment NewInstance (int resId) + { + ImageFragment fragment = new ImageFragment (); + var args = new Bundle (); + args.PutInt (ARG_PATTERN, resId); + fragment.Arguments = args; + return fragment; + } + + + public override void OnCreate (Bundle savedInstanceState) + { + base.OnCreate (savedInstanceState); + if (Arguments != null) + resId = Arguments.GetInt (ARG_PATTERN); + } + + public override View OnCreateView (LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) + { + var view = inflater.Inflate (Resource.Layout.fragment_main, null); + var imageView = view.FindViewById (Resource.Id.imageView); + imageView.SetImageResource (resId); + + return view; + } + } +} + diff --git a/firebase-analytics/samples/FirebaseAnalyticsQuickstart/ImageInfo.cs b/firebase-analytics/samples/FirebaseAnalyticsQuickstart/ImageInfo.cs new file mode 100644 index 000000000..591fcacac --- /dev/null +++ b/firebase-analytics/samples/FirebaseAnalyticsQuickstart/ImageInfo.cs @@ -0,0 +1,20 @@ +using System; +namespace FirebaseAnalyticsQuickstart +{ + public class ImageInfo + { + public int Image { get; private set; } + public int Title { get; private set; } + public int Id { get; private set; } + + /** + * Create a new ImageInfo. + */ + public ImageInfo (int image, int title, int id) + { + Image = image; + Title = title; + Id = id; + } + } +} diff --git a/firebase-analytics/samples/FirebaseAnalyticsQuickstart/MainActivity.cs b/firebase-analytics/samples/FirebaseAnalyticsQuickstart/MainActivity.cs new file mode 100644 index 000000000..640dce4b3 --- /dev/null +++ b/firebase-analytics/samples/FirebaseAnalyticsQuickstart/MainActivity.cs @@ -0,0 +1,236 @@ +using Android.App; +using Android.Widget; +using Android.OS; +using Android.Support.V7.App; +using Android.Support.V4.View; +using Android.Preferences; +using Android.Views; +using Android.Content; +using Java.Util; +using Android.Support.V4.App; +using Firebase.Analytics; + +namespace FirebaseAnalyticsQuickstart +{ + [Activity (Label = "Firebase Analytics Quickstart", MainLauncher = true, Icon = "@mipmap/ic_launcher")] + public class MainActivity : AppCompatActivity + { + const string TAG = "MainActivity"; + const string KEY_FAVORITE_FOOD = "favorite_food"; + + static readonly ImageInfo [] IMAGE_INFOS = new ImageInfo[] { + new ImageInfo (Resource.Drawable.favorite, Resource.String.pattern1_title, Resource.String.pattern1_id), + new ImageInfo (Resource.Drawable.flash, Resource.String.pattern2_title, Resource.String.pattern2_id), + new ImageInfo (Resource.Drawable.face, Resource.String.pattern3_title, Resource.String.pattern3_id), + new ImageInfo (Resource.Drawable.whitebalance, Resource.String.pattern4_title, Resource.String.pattern4_id), + }; + + /** + * PagerAdapter that will provide fragments for each image. + * This uses a FragmentPagerAdapter, which keeps every loaded fragment in memory. + */ + ImagePagerAdapter imagePagerAdapter; + + /** + * The ViewPager that will host the patterns. + */ + ViewPager viewPager; + + /** + * The FirebaseAnalytics used to record screen views. + */ + // [START declare_analytics] + FirebaseAnalytics firebaseAnalytics; + // [END declare_analytics] + + /** + * The user's favorite food, chosen from a dialog. + */ + string favoriteFood; + + protected override void OnCreate (Bundle savedInstanceState) + { + base.OnCreate (savedInstanceState); + + SetContentView (Resource.Layout.activity_main); + + // [START shared_app_measurement] + // Obtain the FirebaseAnalytics instance. + firebaseAnalytics = FirebaseAnalytics.GetInstance (this); + // [END shared_app_measurement] + + // On first app open, ask the user his/her favorite food. Then set this as a user property + // on all subsequent opens. + var userFavoriteFood = GetUserFavoriteFood (); + if (userFavoriteFood == null) + AskFavoriteFood (); + else + SetUserFavoriteFood (userFavoriteFood); + + // Create the adapter that will return a fragment for each image. + imagePagerAdapter = new ImagePagerAdapter (SupportFragmentManager, IMAGE_INFOS, this); + + // Set up the ViewPager with the pattern adapter. + viewPager = FindViewById (Resource.Id.pager); + viewPager.Adapter = imagePagerAdapter; + + // When the visible image changes, send a screen view hit. + viewPager.PageSelected += (sender, e) => { + RecordImageView (); + }; + + // Send initial screen screen view hit. + RecordImageView (); + } + + /** + * Display a dialog prompting the user to pick a favorite food from a list, then record + * the answer. + */ + void AskFavoriteFood () + { + var choices = Resources.GetStringArray (Resource.Array.food_items); + var ad = new Android.Support.V7.App.AlertDialog.Builder (this) + .SetCancelable (false) + .SetTitle (Resource.String.food_dialog_title) + .SetItems (choices, (sender, e) => { + var food = choices[e.Which]; + SetUserFavoriteFood (food); + }).Create (); + + ad.Show(); + } + + /** + * Get the user's favorite food from shared preferences. + * returns favorite food, as a string. + */ + string GetUserFavoriteFood () + { + return PreferenceManager.GetDefaultSharedPreferences (this) + .GetString (KEY_FAVORITE_FOOD, null); + } + + /** + * Set the user's favorite food as an app measurement user property and in shared preferences. + */ + void SetUserFavoriteFood (string food) + { + Android.Util.Log.Debug (TAG, "setFavoriteFood: " + food); + favoriteFood = food; + + PreferenceManager.GetDefaultSharedPreferences (this).Edit () + .PutString (KEY_FAVORITE_FOOD, food) + .Apply (); + + // [START user_property] + firebaseAnalytics.SetUserProperty ("favorite_food", favoriteFood); + // [END user_property] + } + + public override bool OnCreateOptionsMenu (IMenu menu) + { + MenuInflater.Inflate (Resource.Menu.main, menu); + return true; + } + + public override bool OnOptionsItemSelected (IMenuItem item) + { + switch (item.ItemId) { + case Resource.Id.menu_share: + var name = GetCurrentImageTitle (); + var text = "I'd love you to hear about " + name; + + var sendIntent = new Intent (); + sendIntent.SetAction (Intent.ActionSend); + sendIntent.PutExtra (Intent.ExtraText, text); + sendIntent.SetType ("text/plain"); + StartActivity (sendIntent); + + // [START custom_event] + var p = new Bundle (); + p.PutString ("image_name", name); + p.PutString ("full_text", text); + + firebaseAnalytics.LogEvent ("share_image", p); + // [END custom_event] + break; + } + return false; + } + + /** + * Return the title of the currently displayed image. + */ + string GetCurrentImageTitle () + { + var position = viewPager.CurrentItem; + var info = IMAGE_INFOS [position]; + return GetString (info.Title); + } + + /** + * Return the id of the currently displayed image. + */ + string GetCurrentImageId () + { + var position = viewPager.CurrentItem; + var info = IMAGE_INFOS [position]; + return GetString (info.Id); + } + + /** + * Record a screen view for the visible ImageFragment displayed + * inside FragmentPagerAdapter. + */ + void RecordImageView () + { + var id = GetCurrentImageId (); + var name = GetCurrentImageTitle (); + + // [START image_view_event] + var bundle = new Bundle (); + bundle.PutString (FirebaseAnalytics.Param.ItemId, id); + bundle.PutString (FirebaseAnalytics.Param.ItemName, name); + bundle.PutString (FirebaseAnalytics.Param.ContentType, "image"); + firebaseAnalytics.LogEvent (FirebaseAnalytics.Event.SelectContent, bundle); + // [END image_view_event] + } + + /** + * A FragmentPagerAdapter that returns a fragment corresponding to + * one of the sections/tabs/pages. + */ + public class ImagePagerAdapter : FragmentPagerAdapter + { + public Activity Parent { get; set; } + + ImageInfo [] infos; + + public ImagePagerAdapter (Android.Support.V4.App.FragmentManager fm, ImageInfo [] infos, Activity parent) : base (fm) + { + this.infos = infos; + this.Parent = parent; + } + + public override Android.Support.V4.App.Fragment GetItem (int position) + { + var info = infos [position]; + return ImageFragment.NewInstance (info.Image); + } + + public override int Count { + get { return infos.Length; } + } + + public override Java.Lang.ICharSequence GetPageTitleFormatted (int position) + { + if (position < 0 || position >= infos.Length) + return null; + + var info = infos [position]; + return new Java.Lang.String (Parent.GetString (info.Title).ToUpperInvariant ()); + } + } + } +} diff --git a/firebase-analytics/samples/FirebaseAnalyticsQuickstart/Properties/AndroidManifest.xml b/firebase-analytics/samples/FirebaseAnalyticsQuickstart/Properties/AndroidManifest.xml new file mode 100644 index 000000000..695a2a42c --- /dev/null +++ b/firebase-analytics/samples/FirebaseAnalyticsQuickstart/Properties/AndroidManifest.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/firebase-analytics/samples/FirebaseAnalyticsQuickstart/Properties/AssemblyInfo.cs b/firebase-analytics/samples/FirebaseAnalyticsQuickstart/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..b87373a20 --- /dev/null +++ b/firebase-analytics/samples/FirebaseAnalyticsQuickstart/Properties/AssemblyInfo.cs @@ -0,0 +1,28 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using Android.App; + +// Information about this assembly is defined by the following attributes. +// Change them to the values specific to your project. + +[assembly: AssemblyTitle ("FirebaseAnalyticsQuickstart")] +[assembly: AssemblyDescription ("")] +[assembly: AssemblyConfiguration ("")] +[assembly: AssemblyCompany ("Xamarin")] +[assembly: AssemblyProduct ("")] +[assembly: AssemblyCopyright ("Xamarin")] +[assembly: AssemblyTrademark ("")] +[assembly: AssemblyCulture ("")] + +// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}". +// The form "{Major}.{Minor}.*" will automatically update the build and revision, +// and "{Major}.{Minor}.{Build}.*" will update just the revision. + +[assembly: AssemblyVersion ("1.0.0")] + +// The following attributes are used to specify the signing key for the assembly, +// if desired. See the Mono documentation for more information about signing. + +//[assembly: AssemblyDelaySign(false)] +//[assembly: AssemblyKeyFile("")] + diff --git a/firebase-analytics/samples/FirebaseAnalyticsQuickstart/Resources/AboutResources.txt b/firebase-analytics/samples/FirebaseAnalyticsQuickstart/Resources/AboutResources.txt new file mode 100644 index 000000000..10f52d460 --- /dev/null +++ b/firebase-analytics/samples/FirebaseAnalyticsQuickstart/Resources/AboutResources.txt @@ -0,0 +1,44 @@ +Images, layout descriptions, binary blobs and string dictionaries can be included +in your application as resource files. Various Android APIs are designed to +operate on the resource IDs instead of dealing with images, strings or binary blobs +directly. + +For example, a sample Android app that contains a user interface layout (main.axml), +an internationalization string table (strings.xml) and some icons (drawable-XXX/icon.png) +would keep its resources in the "Resources" directory of the application: + +Resources/ + drawable/ + icon.png + + layout/ + main.axml + + values/ + strings.xml + +In order to get the build system to recognize Android resources, set the build action to +"AndroidResource". The native Android APIs do not operate directly with filenames, but +instead operate on resource IDs. When you compile an Android application that uses resources, +the build system will package the resources for distribution and generate a class called "R" +(this is an Android convention) that contains the tokens for each one of the resources +included. For example, for the above Resources layout, this is what the R class would expose: + +public class R { + public class drawable { + public const int icon = 0x123; + } + + public class layout { + public const int main = 0x456; + } + + public class strings { + public const int first_string = 0xabc; + public const int second_string = 0xbcd; + } +} + +You would then use R.drawable.icon to reference the drawable/icon.png file, or R.layout.main +to reference the layout/main.axml file, or R.strings.first_string to reference the first +string in the dictionary file values/strings.xml. diff --git a/firebase-analytics/samples/FirebaseAnalyticsQuickstart/Resources/drawable-hdpi/face.png b/firebase-analytics/samples/FirebaseAnalyticsQuickstart/Resources/drawable-hdpi/face.png new file mode 100755 index 0000000000000000000000000000000000000000..4e6b1252c8b0c64aefe7d40c5242de5960c80fbd GIT binary patch literal 12219 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 literal 0 HcmV?d00001 diff --git a/firebase-analytics/samples/FirebaseAnalyticsQuickstart/Resources/drawable-hdpi/flash.png b/firebase-analytics/samples/FirebaseAnalyticsQuickstart/Resources/drawable-hdpi/flash.png new file mode 100755 index 0000000000000000000000000000000000000000..001245a80d0cc0f3fbbf9aa957e84dac2e1f48c8 GIT binary patch literal 2232 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 U`l#Vy&D|9yr_2rV^c-*f2aH0XR{#J2 literal 0 HcmV?d00001 diff --git a/firebase-analytics/samples/FirebaseAnalyticsQuickstart/Resources/drawable-mdpi/face.png b/firebase-analytics/samples/FirebaseAnalyticsQuickstart/Resources/drawable-mdpi/face.png new file mode 100755 index 0000000000000000000000000000000000000000..7c77eb0e4fd6c6146784bf6cec2bd3bbc017f89c GIT binary patch literal 5271 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 literal 0 HcmV?d00001 diff --git a/firebase-analytics/samples/FirebaseAnalyticsQuickstart/Resources/drawable-mdpi/flash.png b/firebase-analytics/samples/FirebaseAnalyticsQuickstart/Resources/drawable-mdpi/flash.png new file mode 100755 index 0000000000000000000000000000000000000000..296155f69d5bbc1617f0ee1acc129198f6bde763 GIT binary patch literal 989 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 literal 0 HcmV?d00001 diff --git a/firebase-analytics/samples/FirebaseAnalyticsQuickstart/Resources/drawable-xhdpi/flash.png b/firebase-analytics/samples/FirebaseAnalyticsQuickstart/Resources/drawable-xhdpi/flash.png new file mode 100755 index 0000000000000000000000000000000000000000..001245a80d0cc0f3fbbf9aa957e84dac2e1f48c8 GIT binary patch literal 2232 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 U`l#Vy&D|9yr_2rV^c-*f2aH0XR{#J2 literal 0 HcmV?d00001 diff --git a/firebase-analytics/samples/FirebaseAnalyticsQuickstart/Resources/drawable-xxhdpi/face.png b/firebase-analytics/samples/FirebaseAnalyticsQuickstart/Resources/drawable-xxhdpi/face.png new file mode 100755 index 0000000000000000000000000000000000000000..cdc2978bf3eed6695c469eabe8d76532c2ad735f GIT binary patch literal 19002 zcmdSBg;!MH8$LRKfRfT3(%m5~Ez*K?Hw>Y4gCgBs64FRFL!$yicc(Hm4AKqv%;$T5 z_uhZuvKEWA&Uw#{cfWh@H=c(`4K+n<3~~$*2!yTlR_;9rgsg}7eU1h^>9WaK0sbJl zy;qb0RgY2bfj~;I?&eEyyAKl{l!pXoN{{kb55)(qT9&uKS%id1az zOd5}{WEweXq)~CQ-yG@d>kLkvjjDVsx9c%YJ80-$@bpukv?1G86||6@p^bkqe+{4G zk)BRTl4n|jz+&()@qc;eXG=&!$FGn#p-*#j@$RNc^mRiD!^vO?RsF0(PJ4 zz3h$J*yN%JnNb(xe5X4uA36vGD;f8q3S|-LAZ?qrp7@7iKYxIgG9FUKi`#`pW4u<} zV0tR?C`INTz(>>O#q$pt)Kj}C{Y10ZMjudA3eI!j=f#R)vf5w_sW#m5Gi7KnF+Jj7 zq?sU-;ll?7$7Ie<3oFmRRoZ#<$W((9O>=)ChuB{ zG=5O08rJ%&S7U)d(jHi)>XD9|WzVJz5G4z0DM(0h&T0@YLKsN5rQs?)j2d3sG_NJL! zrnOp>#$#rFRWFnD^SAOLfikrWwTPJV=0l+&?LO1J)9;&X4)n=BrWTEwj}n7uSKDqq z$I@4L+a9fVIk`n$4Ty2-0##f+ofY*0gh_Zow1T3(73f2S>Bk>6_(uD;OHOn#rBB(a z9YH<6G1=OOO+J(k<^OnBs?s1_v1KwL+iU&leiBk$ozuF31ggrZO0slt7k0Y*QE=nV zC-`**8|98G>QFf0?(oE!k3$K^p1)6G6f5v`^Jy7SowicJ%P7rY_QclHJcRZ5+V7 zqKb#U^OfDc5UZTF!*1Dul@ztV)V?fC0)ey*C0&CUZ?q39!z8;o0wekN5O!$ie zA|B)w@`YA$3>hnyDi*2^#mv2_Bcze$MFtU|R8;4{I7^eaG&geGT?Gu-Y#Q0bMV|#@ zB@f`!B()$1sg^1f7Q4sl2>erHBLZ2;b!i9WtuanVPTJ{bOunO&;K><61+mToXU;Hr z1$eK~u5rXkudVzggofw~?1MHR=`3j z-%i=%pDT{zpEMS!z%N+n5%lVv+HATui#v$tGlr(WcsS3r9W^BzRqK_;2`ImBDdd_q zv#Bk2EL`Et2JhY`b24lEmIGwh*W+L=UP#&&lsfR4dtz_G&IF!!@pUG+d)UM4SVsO? zFw-v9>OgVpW3F15LgAqKR14udI1d{=C`Pl+YXh6F)<7*>rf{-3z>!56l`9WVd#OAH zq`~d;j5c~0DuDkiRnGFGT=}wb zf$o59kw#X5xyX~EP^dZq2~#JcyV8&11~r^YKOymXJSj&>#wuigZPM3O2M&qy-yoH} zn7`b$HAKKuSd%_3@w?f=GAM}81+Zg|%mQxB6?*{#2b_4W_T%j@W^6>{Zez$+S{O^8x zD>(O_O1Mb`wC~-dh<>aQeCT`(Ivqb>FMnu1UEd9=2nu`DzqQ@Zs|p&}SpRS*wuAGC z)s$zQ^XT|HLZ}hcCFZqPZ(P0sdarcVoD_Fxg3+u9)~EBzyYEuB;owfs493LRx}MI_ zya;K^X|$$aoMEoIkGXBwAFq^Z4@7(5xXnCosC!YZ8&WCw&GtF1N0HlY0akTxsYbT{ z**@8x|J;z-=8z0w-m-pFyc2G62)NVk&paJw-<9`a3i`iiVR<#eW*hGT| zb;XJnISXEA>nGQnh-O;z1z)FOvBcGIB5$`Q9u0aGtj7i_-WukE-3i-7L(QYnC_;_0NmcHF5JCVwHK9!g#2kD7E(hUDR=0DTCaH_|hAmoG0@^|zSK2%?b)dXDO zqnz?+@wa(3qMt}J@CCnkwc{I*$w^v&g3;!_tBkn?i&@<>E1Wi|}V7KI^s>>?260@yL!!;b+$tk$eR12RyHnTsjg;=YD zi`{)ExfYb=yj?KcV9k4cLAX5ARC@7pd5q^q99&kfZdq1W*{5xx99ZhC;Zhaz^6xRv+YPEyiz$BYK{-%i@@ll$uj@O)u@^zluJ0@|?)m-TW|ab70^tJb zttCv?*uU!U4EbL6#O)P^v%Fx_GjBXA{v4k0#_WPi|VR!2%Wc+OUndV$jNp49M;l*iO{0Osu< zJUCwhfo}dvTUV)aG$kFUT?M%uJFwp=eeVqavXC?o%)Jjjr<&{$8x$xy-G1lV(2N}c zW1DwWcIe5n@BM+CiRN8$*{=zk(|Vq5qAfg>e{t$xvz*5vOKex|FgE9!4sIPBUCoNu z>CECl5uYT}e$*3s84&Szeq;WPRZYn*S2F1CPk_aboscJcT_|L8lZFx+@HFb8{MZ|{vqhQ30R9%Un_Me`T2u(rIdBqwHQ>E$!Cd@_1f^Y- zO9`m%ZwgZF5s>8J>r^;5_-+z&!wFknh#`bdjm&PG2zzPu^b2@&Hv^j~QT`2zu)FK% zZj&rFnc?UkJt|rhgd@w>+7|kA_FoPRP5-x_O?3sBx&ApR3dHlA{D-mfObXh(PumB| zm)J#mfhJGxtj;e`EB-XSoF6rKA3#O+EGExH*;iH5klf_VN42`$kA&~}+id0ZBQ}y< zY{DO5bNUkE=bp5|Ow-_K;S7r0L4y$v(F7(}=^-l1NaWdx%2_(%bmXey`3w{A%(q*^ z@8A66N08pjaKFXSS_N0ZIa7WpCJOdEn`41&pDz`n&368K;HXE-u=0KNK4CwQ;dKqd zIKjb6q*jAXrSr5NW!0mx!aKt!15k3adJG+H2~BP}jH$9{MH<$ylTTJy316~hAjB70 zMMANn%a8tm4?;tRqH?{#CSt_(bB9H)5U09&KA;y$N-N>ucQM$c6ia@g`DgRU+?5BA zo1rp0?xFA&vpsL`w%8pT`xHoCJ0M7SdXMI~5YBB0^i8x><5I-pMY zbI5RznD*h^ptvMfG+8j;@FaorO@;f#5eLZ<2F6&#GWW=+2lr}-6%wCZwSK2(xjDTH zr)&X;QwE9r6Zr#~5H@PP$)=Utdq`Tjy%?!g=n1OTiwP^h>6gbC!6_X-PNGU!mq`Pm zq3OGF9tf&BQ3T$FS(M-6)jzYF+jzG|n)0O~5t-kyS6|3&a(~h4g;}`Cw6BxaW>|ps z^~~XEPxc_b**C1t+g&16u+({0 zdggt0`R8Tq`Yu^dP%KWhjF%{?ReRqd`x4-^Lvebfe2*GbM{B|L+X+-}a!$Ydp$}|0 z25B_FQ4~Bu)CcgjP?W+JDYbC@fP9>`kD3_JRl+!3;s&oUxIZ6Ck8&eZ?R7wfer2}% zC|4%ZpC_uIE(6G&L_L&O?(LLN~7slrKv-mzou@mrUCPh`W1 z7E2h{p)g@Ydb9ak6L}p_nIDs~L)aXSgPqes*wc`4o1<<$GIY=2i`9$J@6BNw{d;G| z=wwLwng(JE89rs9Cs%{dKkg9q=Y6N0p~k#y7$6EhAzfmx$ji#QcacJneZ^J+AK`Me1n0r9SoOV#8n)SPUL2r;1X5=Rt2k$Ly|4#C z$55)ddB}CLiKi|41pa%&#(wXouW#av>B%-?{a<#kUU8Da&P)>z_Lm|ZK@)A#I`e7< zVE^^D&xP(A=ptip*4!bfne1q~ASRoHtvi)8%3`fqYgPsnmE^sppo_p!qIgs!6$S~0 zr7J=GM6r0e;MLv_8*B978k6%|Cu!nFlnku*e&Rvx{~(vNk`Z#jgVBcYeCIQtJoaV_ z5D$c3zloFbRwB1ANZU_hEIR`EZOGE374`8o7s^Nj6gflF56t75?Jr@N zu;~ISQaaM3G9BlNS>bOR6x0tsOh#P=POiaevEudxCDJ$K_D)meTYH9~>|5-1^q2|u zr*j*NxoeCPNw~MTv?!pW)H#-_50Z0s66onzZ)`@R&@L0@0+$9_K456Nz9s|FUhwO` zuV}Qn@g@-G)cZh-lAx5-BX!{tereU<4^NJe491$>Pj+Y;?p6%NjF9B>)+MAl-YV>! z$WcE>vO?I`@Icn8rspy9Ep%*yZ8w|AOBUC=mFkyx0WNJr2uHa&buOk~J7pn%>MlKj z)zXCpx0n6Sb4rlDj^Dv@_v#v^`KjQS_?h9Wwg>B=)Ex;!4j+DsNaWi5X1wwlf$>ZB zl?gm;6Xo;7%f$+?gyGDi-m9`hMHrIacR^Kfwrxlyqa1blEZ|CB9L4tf4^qhjuL_$+ zTZA#sq_;ZdsQ382-`^SMV%Ksp`~y`^k?-iMKBaPa=gGhlt1%}VsFt^6jQYzDK`P1Q zrA=csRh~)X1l~pc=Y0V_nVr5XrTl2NKv4{*m$u!sQ z`0a<;r^E#~JtPKajh8+RPO^liax=Vp=d~J;Ym|L^~MVDD7 zaks%7;!EOo@IQeb=lq1z-7r4CfGqq7+Mc9lZQ1%V1ec=N?e?dI%Zby^N;(hP8 zH0a_YXPBl-!4mq1-kpIaGB}``b0h-_3H|7%q>q+=ZEAkPo~fhh#(xB{fE?Aqg>!GY zo1GGvh2$u!n8ogV8=$-~@$?%Y9`UNg+{(VTM7zQ*QQ50c>Re?$augtiJ%S<~-%l?a zDFam-Czlp0>f2{STF{QS%ASEpbLQSvWm0pH-7ron9B>tt`4*6jFDuU$MhJms7KPuA zo)@?P4rZi~f%G~#WHCfoff&yLWEV51hKr^j_qOoHi^cj%6PGJjN(EDg2>3`q0bI)Q z$|pk@<8#=tT9P1jhoCoKB3dx-CBb{yMG{OqSOM!m&|a^+8x`>MWG$xsVC0JAvmb7v zLNb~je5Ze%e1!+Bbm1XK4(e9~m(OWWqg2+nN4>RN0S?~qhk2Jx{zw6kK=_>YGD@YD zo8LrgHkSjx-j_#>I+g z$nd{#!cecltRxDpw%GpI+cP}Igm#D%6AGuu{dx>GQ7CuEM zA&o8!hIcox9oPrEg!aW!!G-%ZuQ}3YEPgfUxkd1J3Iw!IZMRjxe1wRo82qLvxjzN674{vlKHNmoL6qS( z>2T%}!NpzBfhb+f5xQr33kq9P)=&j8oUxTt{fj2i@ zOciFvw{k0w%O3%QL!FSjmZoezv6JL>n6sz7YO`qcELqzb#Nh?&Ls5Z}JC`^izls1Mr29b@}8NeW!& zeRJ<{K5=lUt`E;|_Lq&G-#~~~)HMqy%(ZT}rNet?M+ELmW7ep`*3do(35_h7NRKXn zBe1Cua(<0E%l=>9OC(}0xz+D2yG9SL;$e48Z`xncT+c{%p7xg=W?>`LOjtFm;Bs2C z9d+sRvFSB@MwShmxPqdCQ^)l&^P-8JUV?c0UKk+=>$ydXHhebvobAYHF*iwm!?ani z@|4jlCLO8DsU>mlmkTpI!T5n1xGaJG#Tspvzh%aB_w*edVCleqpw08IyrQWZ9rg}` zyLXF~eWy$~{#=obP*SlfxTQDa@k_5+& zy#`mYBs6(jkM*6{<7j<|NFcVNzpmNQl5b9ACWL`@72s~}8irNB?kIId5DRS=%-CcI ze%+7+eN6FRtm13+gEQuifm9L~p<;XAnnkK*x=5qjb_)V z8?TzxBzL8Hh6}XS;)*QEZF)G@F?Gcd&4$l?3_+6{6giThVonn$#n%u|N+ZXET<4*!PQ?*C-4}qOK3i!$EYIA;nP=_bAlhHL9f!pfzB!?Hj zO0G~r_m0r=J_QXdtNl3Ko+OKH_1P4!_C<8Rpq0jRW9xRp(Kp~aYpA|b-~Mw25&{%7 zB;ZBx5_#x$<@9=axt$iuwQ^c(t_XRHnzacVqqTeU81J#Z0 zVO)^xI;7SaPs=-jN3NYcR{C59NB@Z47ALhcFLDXVIJL6e*vG${t+$97S&Gm#t*+_F zoGe3bW0P9=yX-m4^RlTbGxkoX)_mM$JVsq}2WAlyS}bTX26xmUouL{%*hCv7Ef}oi z%9)HK%Q;KtXc#wqJA?e!V2BT$;M#)aPo(O=5SwSIp5XSDyT@I{D3?^Vvg#HUc5M)1 z(q_4&ekqmhZ3j9^+8}T|daTnpZRD+7b*YPR_c46s2 zZBD99{SvrL#oelL!spt1%!y2-YZ%_BUP3@Q5bI! z%Mox(*R-ama-5H>$7X{#bv)7kd2>B4nNotN0)j-1s@h11k+GCt7@TqTc_1#H4?ROv z!QWs`hey5akq%B&!^!_^GRg53VB;J+%C5zAt$|5pORP2}aRaPj@LzJN9vqdHz*}SW zQ+bE3x`$CN<{t{AVrK_?MjDGbWv5KUE*6RHuxjR_ZSaxs`K}k0v|v8sOp9HeG*;C% zg%`28%N#Pw0YlCm@ilSUU-)J>TM_B7jj4b7LQ9@mMN(bclwuv>q(OA(as}g z3@4baWU|cgADv0WTU~8`IeR2p?&B^;@A>`=`k$oCEl7EQWAM?$mS83(i4|IbMU-7E z=boX)=E^*Y7u)*wnxXzHu-vNHBkAP6pV;XN^r_6`ojY^NwXdw{+B)w$9{19OHo%u9 zjkga8jDT*yyMrnsBEKe*Gw&kph@;aTEo{m+M!0Z0GRxo}X*(lu>=*tvMI6!si)Glz z%|mq1_la3^bcsbOCSK^=`=9yETPHb>a4&boDOPO$1J-rSMQK2j+l}^lZz_51MP8!0qjou9cQk^9(SLdko}1qHRcb?hTHD-pAqW89V)e3H`|UeULzgV zsAKzpBdF~jC@ps|GuxD`BD}tPvmGP6fAxkh0WdOuDpl(jX^55A!cn#=@@MemNP2z999_{nJ0( z2ua|;_2uu$vfSO+ImVx?WH4Fe6mIAVP{dG_$#c8z~7GTJ8#7XYEZ%c65lSp&in zM{T9#-)Ozdy$M={-WXlsjVc{gmJkjNCgO+7g zTPg`?iG^$hT3P*QjJGQZ$&F|9+GYlPS)VDm^VDrhJ2)u!9`dal)sfE&;Qw_KcZ!Jh^O51UiyGGMH4cVrg=XGN|YG~}U(SlN+s-C(Z-EOWN zp1SV6Zr9H^zpTh>q3ccAlIl}8#MqU123uSGYU1e%wnGN(@81=T^VE~fkr!mnF|ae^ zX6Wte#!0CPAb~C>B!59~H}4{CM4JY8y$WL`YLjqZs)61}h!*an$BvjeF=Vj{(3dqD zE@FPQWCVdO>Kg|yN8~GP2_{qacB`oEwp)YY#eOd}L2rzKP8t^N^n3`ARF|JimUYZS zBmb)7tAgIpHy-nxJX5>{rqv9KTA`$mzMsPbo`(c%h|&jaP!?qJd9D?_MT=kp<<}wU z@bws;+o`&S!jEHO)`sN>Koc8SI*a|H99J!J{2qfuLBF6NFxTWWkihGnEN~%iOt-Xv zmO>mx>kQO9eVr)_6x@H?16x*zi)v4?D{(pR>Vaa-i6GiBqw$VQl>CS^sbc7wy81y# z;rN8)zfQ?2uQ3&x+1dc(bw1C%ANfr|Xzq%P=tAZWhu&rC2~ep^@T?0RmLp{ddIzXFmgQ?|3%O77 zqfkL+7t&m((3ttY6k>VEzXL5fk;7kQ?NOLXSiOQEl9t*3=LK11c!bRonx6GlStu+^ za^2%4LZKzx@L>uOwjE7Cb*J0C1WY!y#Qpq;seC8n*b|HCkiUL5sj`fvlj2yLU<5%O zzG48>683i89ESG??Mr4el8%Va*l*Cmlyy5|g=CA4YfmD0eB#VXVpQ0>%q)Uufq)4y zf4N&6`uOLjv>D|TW{laYShcPYp@J76JB{pEB%S(94Za?WU{sJ+M?GE80om!{JrSR}e(`7SZDKBe58) zT7>qpd)r23T#10pG-4(2mb^%P0R)eN@f~T-XXQV1HEgW*ePZ9q-nE;_vL{nsDoXr1qG1QOTeU175_FPSuRi54J zis>jG_dsi^%a?p8}~d1ryDHB!n4}n<=fETcEMO!(q;1od)VK6a8m9 zupqZpAGWu zE`I`$iI4w#mzdrmgg=^+^uSNO!HEG1RzK{JKZY}B*#l0^paFpraX$${BgO%F=VS^t z2#wF+)UGrMQRB4@Bi4v|$(D4nFMw=P6Qc*z6>192%L#XI`^^#nM-7q zumgo$*>y$4d36y0m!wd4NeZIPVr8UA$#JmCa(6>G+;kWq(!_J3CEE<|UUv69U@Eiv z?*QW~wR-!yn`XiaDH`=YW(VBQX6$X5zn=Rp)-8Jc0Chsucj* zB2zB&swQceI<$rfhBwCef=FaXbq`6}W1o(GeH z%uLNrLuVW9?xH6_U|6+`M-(ICRgo)z$4n2K*ipt}T%!c~Ua+}zh|AgHfwu$Ct^Ta< z0Dck|6QC<6G(8du(U5=qasup;x<4o#wpD++o?;?CaiEjFMH6!w83=zl8G~@{SY31- zh3cLGvFAdCey#L?}rtBs1Z76`tvmQpR7HiY=$<4sn^o&SP?(=b#JQFMU;#p@^Z96)Xoq+IR8mX{#eGlgx# z>kdQ(m1CZAC#HIAe4$BVF=ay__L!%yY5-6N$R5m#r>Zky7vb{EmdX$QkrS*KBt2J6 zeyBAOI2S#Tm%Avw@KBPX!j0YTJDhc3Thqv63JCt*+Ldr%(uS@%>aKYBxIAY0(+V4p zDhdn~%0y|%M?;X(j1IIr(p@;_N%zO+@Fx$Mty;dLe$GBqzBQHAmIus}&$}xGCqjY0 zv-JU|bB@)!9wzV5oyqTsj;{BlrrjXf!^WJ)^TGWm>uy-xEmvxsD$m(U9Z#LN^Y)jAUH*#X_Y9o8C z*~D`izv6<$xIGQYuNTt{U~L|hnjo9BV*+}76G}lRXbSEwSM07m&6qGYcQpP+lvwyL+G{aYFND|D%#{sj>DmFB9e(-*NkoJa-B z%ON;}G!WcY2}>$zkBTc8bk@{)=*8~EP_3#iJU5!c@(pkeNp;L^stY@1v831 z;cBk_{IcaY6xyDP6QwZhzSC|}V~w$t7NEOg2|kF0tw;Q5Y7b_STwCBjWcCjAS(bsR z6($!<){FZQ1$}80ynqyN*Y>9U+E-aYj zyV>5T^2OGIHn-ZRkh?fqY@n{;2)3&+D>*WP@$qJ>wtm5C_R8!Uv7E(O=edX+vyswf zye+xyuwQ;?kAK0;K0WF2mRAY4=< zZqZek?OfD{S1M|>^~>2r*oX9?_pG7<@)C$9>eg)DU3h~Izzw%m{OYA^ zSKvb06>Ag)&pbRRxecI}pfu?bk*7GD?JYyOf0)=Xa ze@EZM^ww)Fr@wqab*p(ZZAZ57PN7DEZ33ss{z!=Q&h({$OP*Idw;_kkO_EsHZrsZ& zSJ$GxMP+i%;_OK0v;n!N@Sz4vg9aZ4EW-w}tR6j$0DE*%uTOf;8aByb%v)<6TuFOLY<(Q!jQEXs}CXY>P&X$18vAh;5Xt{RA+`3({SoIJ+kdy8Lv z)sp&Jgikx2gXqMEXaPs3#Z!neHtox8gJumU+X%E#!Eoi=AYSJ0p){7nlUf>SPHy+N z-MLTb_9wdxl#hA2T!^S7{7DKdp4I1=vzV;`DkjQZEv0*}?Hk*c zrhP{>ME3a+WiTDvnj+lJxaXF7t|XpGe;RtKX@6b}hYy-&uWaQhfStqJlxm3B6i|du z-$!Hb{GtRJMeWsAN|MURX~X^-^4#^oiY8A>q#;3J`GhRQH&%mnAE>AN?b4MEskn19 z4iF=-jyccxXYtF6#F}npgO=Uhw1B^OGR%j_v>KaD?$?9z;>V{c`LDb~mOp3jvT~au z{>nzU{)&$qFO)3?%9m)2lIcSec2tqLb@yd@bALM1SPFC7V-B!L6q#x2Vp)U@D3e{L z>!$3QgweX?SfLI>$+lVyy$nGrp~kQ zn=nQcsRFEQy?j)>OaJtho z6kffwi&2(zKdv>^(6{6@L8RDyC_iFS32<%>qd89+ZAVcbPsd-Y9DvVW`(lq~_OZ3+ z83s}2Gj|Z|on#{1I7t0BwXC#Blt1ZU95=@J___B7!)Oe;)pS#KQy}(7W!%eFNZecD z&B-_GW2eR@3gN253l~9T=odoe-L(PuP_wRQa0xkb)egHP!OLh4u?}HnfOC<0d@dsD zVlcGqmQ`U?H@eRpbG#t=n$%ROXmSOo;ZSnF_cl7b6ae|lwTn0$Tou4fL_Zn4OGjI& z5E)8cqBIa|3R{xmifmDy^mp=Q2uAl}j(+ZOreeC1p1wFvlwkDktBem1mlqW1IU6 zOezeEzRN`JnhjS(56yQWM{>EOa=sY%wtAcWd$SHcNeO%Bc)Ibt_Lu=W$l4+tA6B~C~~kPVXK zczsmdqSz~%0)poh)Ty}}j)|Dsv{d5GOU%OIj&y5(6|ti?)kFdD2;%^sl1Y_i?HlmNH1nKo9Nmd$ zD@MwkGg-TXOBKa(l*s};N%QcB#fzKf|4Iky!9eM|=+|M=@q;}YZlmVXbQXISztL-g ze7`;FwGJ2|Bli&9qtvV2jNj5au1$(wgKm-6zwP7ycEZF=S-=iL{0aF^4Py=s+hNpayY?n%v~tQJG(?zCZkd#bGB)W%|MG3%g|jy6z>e z>)PL~5?j&^dLjn0ppEHJW|X0pmlsM9zue7VJ{gTvCVs+ToR5quKbx2Z)xmk(5FJEy zUi7{B?wj=i2~n2I>da`Jai-JcH{*g>o5@>vlQ~$T9X^!arTyQ|P?*E#M5}zLJ0oxX z;@-)&!9R-oI(e1tau;r>Z@;N<*^z-svh$OB@jU0fWBG>@Ti2iUHSaeCdAWzlmPv+x zZV$aNmvM82x|fJ-NG0Zrdzcp}6u?!u_Y3o~@bcHTDOnC-t6(^PEAID6^Lxs{{K5)g zW2VVINWqq~RVYDO)S*0*1|?TPW3-G7@iu|gybQ_H(%@_tmw&_su#a@{=W8c&aD(Hx zEdaoVcXMtBfV0C*m~CmQ91kr8buAUPOLlGK9kN^oboW?60JNs-V9(?3u3`9?-9;Et zCw}?hPG<1UFO8dm-o|OuBo>=Hy67L8yhEm!%YnimnnXv|EL1g)~-F<&t>3HoEE9LYPc~(U^9VmL1A-L*A>XP?COEGI)N9^5{Y5 zOg*U{5i=qX{%`fZBE0z4oi}M z?0{#RpSI@fMa8qEBp)kr1dWtO;j(Hdyf%+0Y$~lnD`ef7({je4O2f^G-53Q0O7%Rv+P9(YZKozjH`- zDRpr?vHMu;j|$}Ju~r!ST++X;!S({Bx^n?HGy%1_34jfUzQ14@Jae-u*%?}zl&Eh} zBffl^%=6f_l~j}p2_&X-$ev@UQq7e#_ExZ|S$j*|6Eo&|ul`uA|4FzWuYA1W*{l@% zSGZOm%VSt$?h-McXaxl$Zqw#Wy2@%%6`b0{>RnUpDrK7MCx z0!La{CdIV7+G+R7cJ?vzQS9`1KdA7j>XGc$b{0+j)b4ID~caSms}{Sd`LZ3E3n&EMgzj5sk@x(@s&4a~%G$h9X#KEQ;e;^=IzwA$QxWnFR9Gg$ zss}atek^Y4KciT}4$ZHp83eiPS{NUD{jMIhI%$3R27ntj4SebBn%CD)a}^x~bwk~& zx+Z&RmFKML{!zW*$L?x+AlR>H53>qRcW-D>aqNGM=R#5+iV|!?x)Nm`dKFUPdWwGO z8*&^{Ij->>?P}11|2=5)yWsDGfa+$u8=f05AM#qVekCK}*Iuf15gqg%y_vY~6YucL zDg)A>yckdzybY#*?V-iH>KGdZPEuQMw`mRH%<+7A~me@O2KuVOzPqi5USc z{kLR=-TNM+kKNW*=|nuT5md`rh22Cho#StheIQ_ zZ9v{W9~lL|>rj*>a#Mx6B~$-WumKf9!{Jmbnb>Y#{nf|8>+W8j<)|~is^%&s$24ER zK{@wEi5j@1NUGN*-YESpQN8fS{cf>B#0q_4mzLcXlZAGfGq5|eU9gAScl4l19ec%D zIqW!rsz(pX?;$is;b}Z)iHK>QAstSGjca@y);&WiwtP!C$&h0-5#agZoaGS0lp~UE z<#wL=*(L&gWKsr13WLLj1^^6~bIT<%^t|3P;jX_lqYt%SkZFjKL0Kr6Z!}q+X*HiW zk`Qbc|7U{$DbrR^1||Nj-^^LJZoB8SdXW&|%h|wx_niL<;4eb)^A|&zUENsu#EkAA zRd}P+UnvK3%(q?>cK(NlHv1nQ8lxT^tA;gRG(b|AMB9^DKNu?!oJIlF1TWL!quPB( zAhKa^#+O-M(^Gr<8Ujp!R7a#K^_mY3OJ&2fXs+p8%fJJJ$_251Xp3Ec%rV9zLMnHx z8|E6e4jkw$gS8!|!PdF#zb%d^eIFOuT|jGpLvtOiZ$Ptn&edN-M1Zxm^DCT z8q1a?hwze*vG$+#3|1{;IFR>C=VMI7W)kXVzg>o&VAVf|zUu`Fu7d&(z8DJ`^R}oB z1)l?;3}yr8?2Ta6pbH5l1dNznhO7CYp~|A%TZZ`s?v1cZlEFQBbU_7~Py zETK*-ql0v7vQQRpp9Us~X**gO%4QB(clZ{1@GAse-UWtr_Q=c*DutfM2ed=&Qv=aG~ZPaP>)2K)F&Gv{9Z!0nug|87btCA_# zo7<~6y@^{NBD{!7z^{`uoHY%^Et{i;ZhfPq8=secUa|N@{G31kJZBWe!Y5(LC^FLX zQE5Qcr}k@oF`u zv6(AaW+6+^KoftzO_&ecUf}$%GL*a`Z8liYkq+b9$O=7v7Lxj9VXCi67^V!*puDp) zKW(z-a!_-1YCf;qco)}=l#mT@z`0Sc(h2+LYWi5d!j%#Jy?%IPP8B@61X3yjZCW^` z_>t%Okv}+nYX?A3{hd(!{4GHdJ)WchmIN?XL7CxcCi6*_S>VIZ!sf!7(XK!^oa_T? zo||sTt{%+SP&?fG1yEcB=2ts0UqqB77)^cq%e(Pghzh!`hXyhW2Z-qVSewUMJj}Np zvR8ig>ys#LN-{B_+i}|o+xYV{UvodSK}g%W=~0koiUDrbkI)cgQPu{7I&p{BPM)>T}^AJfTDo@&R&B-G!_|HEU#Qzl!BRG~-@pvz6-p4FgATT9Wi!`c~o} zOv1I9btfst0b0&k?@=JrFET(aVLwq)H<4lIh-N8QUE=?+ncOsR0^-3tEd~nV*Y}^1 zzZGv&r{O#dVM{TU7zHvQkEKS6+crAQ5~EPiS0(OqQ~ za(|1tC&!g06fS6_+Io_3tkJFfpmxztbsIO>_jT2Y_=X-WH|iX$I*$WM0_L zkLTyfO99^G+WwhCP=#R561gEC;gD2)El_#pz zbIm7;2bYWS2`S|#m4}9lW77L}hoGI6-n{RZ4VBY*v80n>Xu7M1E~vDaOYY;O&93>A zcJ}K-ayFdmB~~adXEBS2pH9e<0})o0a?YYrV#5Z zV;ogipZ0dgmNp}B{_#?v>6@34B9 zd{9(McDb#P!~qI$S?Hnb<)$rb7f3vF^ans^)^C|c0@%mI&II+oHXA1DeW)8Gi!e=U zGLs>jI05piL2y+rXBgZut{rKkNoJ6$q;zf?L04vSBwsQWQv!h!C`1KBA4yo_xTg>d zXI>7Abq#>~%mYRR{hDaf=j#mOr$Pfr%w|=y<06VLK?>8WozYnJW0vb2zzl{eXJz@$ z0x;wWK;#;SRNf&gnOvpx-zV*s;r(2St0UR}qh<3bxPCkzu+G2m6D1~(1!%~I=Y6CA zm0Lg>AP|Rjcs|rPYP>7-X&>8v;qzjf!&v4G!2hGPhuXa)%}sUucS;57zb>PR%}MR9_AJwU1B613wf>g@_Z>Y1|~lOM}jjl zUfAdK%#hh9WFE4l=PxlGnry$zxiiOs|2NQ=J&TB#nh2I9)z-C7+oYnM#t5y^r)_oU zY-tV5=oUrYnun%Gd+DiVxM|}5N}JADWbmvi2zv%vjG=kZP0#lwd`R81Fcnqq`;QJs zt<}>~U`T&U$fL1m{OlC0bAh z4e?XTQRSpm#}}msIF4>+f`%xAndeBMn={y1( zeq*SZ_w7ZYED}o4cF=KeS%$tn3eKTV@Gl8VwB#$ta&jP?LGB~J3)u{&V=1B8PV9M7 z=E9+;i>CTci~3d?iGbuYTcihq-t()GXVCj6a%c~n>fIdXg`uM5o`-m5ZyDMWF!x+U zlKK_ju?oW?R(2Y13tJN6x=^|QB}&LQ3zzdvMP(U36 z9gYD9GqFX|)C6W$b%#4`r6b^lFs1UOG`g*%K?L=L^aO1%vd9Qq#r-I%zV_Uu;hCzI zr^tOGOn~!WHvD@YnCt@1_cT}y2dhzL?bRymPhvX#S+lns5v6B`<2Rnfopq^18-iKE z^bLWe-lja=R5)ZxF-YaDun6PoXjtn~D9JuH(FNiz1!WM=Mmh@jnhn#H17ETIEmvfX z{a(SlD(__>syr8(v;fCDk4dFuqsuPEk7s%67^GdeORX;4w(WfCX$B=^vua4d)~4THv~uDzWLnZ_qH?5q24$DBmYkNye5uY95g{ ztu=;=t0kcC)4)(#p@hH`NgSC&fm0HWG8W;og!76(g!XCrl1ut(tdInNYf|>Onotk7 z-*TIOwN0ywa;Sd~yL-^!LPO8Bff1A+HMkvF&?#hJj`8~}`KYxPa1K1t!0!`irf0V( zPiA%>|J}P&I^1@{=H?mO;=8we(h9C<04@sH1H45U^8c@U!XiIp<__v!Q<^y0}wqj#StfEm5~zCAs9C?Mdug z*6#xxH~&skTg!xl8(+Thzy8CermppT#R0wpvSyPwL1n88XLPW-<0{)YEhi*J4b0=5;Gi)EVrVKhGZaT1%zOq zSIk0@p4jCL$+vF<#N%Tfj{dp$=wH-_?Bly~h6-QfLhW_l{#M5x!n|eGe;p| z3AW>w>WCP~sY_a#!xtz#Z}dq( zsKU`g@?(Dq;-LL_;VWtK_Y3#=CXt)%O1SH%w**`_2QRt2BkvWK>sHmzv*0obaQKTO zUEiZ`VbX~s$+N1}9eGRLq_f+W848>euhFud4}RC9Vc9YQ#k>fnor~vUWP|4SqsE%t zcGVLz`8fI*aP3!^PjZiM8A{wdRDIX-aj;W`m28n$yy+BpP_fr?s9h?XbGgTsD+^JS zds|7)dx5iLm*;NTo7Z(Rf+Z4&7^q_m2luz)!`u{(>dF&myxah_YtKgU{(TiPP4Gl0 z4f%w4_>CL9&N{dOsZ7PVW-TElK(WQpBP(D_U*Bp z*kWQBNP#i(+Wie~59{p&XM1*AV9t%J!ZGZ$*J6sLyO}ZkUJ-tT*ELtRrdwne^Kz@Tzu~@~eLKE;7?XUb zhJE`m$lcSVVVEm%{7x7>XMRGun67pbX5o3W-)5X2`)UwcIWS5z@P1(+ROMN``whgq zzL>PX8$NWEBdX;&y8hs#VgZZ^XElNSs zXOkNIP%Z|9_BuZ|Q(cmKHsMKkk8Y>Tt>Qop{vk`pyo`@3w7eX9rSb+byBagN-j{K^ z6$9f7jJc%_Y|uhVO>#!On0FqU8$y{t%*{M#heJt>@sZ2a&!R>Hz@q}1@{+;Bqh{5EHF1NwzN=n7ov-PLFN!;T*;qK5@9n!4S(Tz*n+LkPUZc!YThC;TAr$2?&&)YSS@404N9Jhj|`6f9=^+BLdcU* zDxMMgCw_F*LS8{MG&(NGn~%9bkO%GZ$gwu%yr9Q@yR`!1Vkx({ z-s*^H1oo|NZcs{!j4IwPA;`A-J!vmmr}kU?RA!9%K@kt7?OXGp>^jQUZ zJk4FQs0LE8T~b@?S_vTDx^kaw^bYLrrK%8y2d|!rzoTc`N&4iB=&#vp10=T0W_B-o z$86W&ADS8yJ6NE6X?zv;gWn#`QU6V1|*64Ih=YL4E9 zHAH-FU(>$N<6yheCJpkV1UJ_yhV{2YEa}BPT@k+mr*L0URi4*>>c$G}zvUWi78u65 zZ*Hv~z*3k^+;txz!4)z$f{5pr9LcPc9gFNthQ8(G!`01k@{_8%q_aN!;HHd0IQC8>hIMY< z%9Y+b*Ye-Y3xN&c_hpFLBLb|G>!}6cC)%YSOCdK5PA%PBw2+a!Y(XyvAHo`Cn`L%B z)7i4%fj)_ zvpK495r+lcdoJ)P)AcfGf?EO`KbrF!6}-~r=18D1-DXYwq+=Edn`9U;q@z{Ysf+CV zS<7JrjAkEK^lsmXpvJzP3lfvTOLQ;d{PdNJnZ zs)kM6XA1b~ray&rY8{<8vP9+{tNd|}-nQ!qR#G`h$!tmuQni^1bLt!&~)P%4o*=(~qtbT8I( z(OC^&MzAq&!J+bZnt4lbs$!>7r%pK?jpi#E;-ZL+Q7O#O&HiI!W30t&U47LkBI)c( zv;Gs4)|f5#(u!yLUpfr^2NE9Me#Bt5?rJofhPXv?VST%16@NL9L)In@l8&I!0h}W7<_&4&e0nhn{D*^?aGnZgo|5LZWg&@qXHu=t zWShv|{A#gK!D!}#@c+Q$LM-2saG&(bzBey{t@JV0$_1qvc>HpH{aR)m8#x${ zU9b~8*a#{zN8GB+(&t)8$0v0X%J`+#a+;~^80j)Qo0*J5S*5#Ktg2I7*sryi*YUJxrUweD zsor?Y?Pv94CH3FeFZcP`~z8|%kPC1r+7#}D(_<=GJl=3dcqow{c0QuH}r z0^1Rp3c^f21366t?+1s_a{Y~x%#9J+_n>Vj z07(8Wgd6W%Vbwv6mg%wwb<>Bm&5X|W>)!qafyOlAl{Z6m&h5|a4vZCh-@-Vepr}+o zRamXuM!3%TeZ!NBq5VS1ko?KPY%y7-OG7=!CG8E`;!xC*i+^xZ9F>+VC6xI-$J**a zQPMtaj;2%G>Hiq5jurmYz5zvLxUsF>5k8;jhBfq!j)Xvm+e&Q0Yve`Btng`_3onL_ zA76)}m`SktQ$*>@=T@PvOiSF_S3%MN>{)YLWT>C%41;i*JPN|wjJ8u$aPv(cc)C-u z%p?>8f$sSiZofhMDBg2hsiAF{Cp_kaqS&`#&oD~qSA9*yl;9aF-QFN6r~^6mARXeH zS_tpz(Y_2)JlP6~$#Lg(mCc+}{hr+o-MRyXKutysDXZ@Fbq*T);zFFzTL@Ik&*?$( z%dc}-W_Z)K=Y~c3;GYi=1U+3*ZBnlC*pFBIyk$3KZbP7}J=es{R&ClUcEGeK^cn&^ z727D*;bh`)?VWbI^9VIM!96Rd^i29_)ljanR~_U5z{_!bYuWRw2@t3UTeP5M)2en$ zr!bu$lnWz#al~S+^H-xTbBPoc1j@A{d~rg-UHW@ebo*+g__`z!?DS{)^|Oalp6Pc} zJ+=(x0$N*>AczZH$`e1b=oQngr;K-WX`3L>2fk^Nn{|jSFChQ832uBQOKpM5e#Td^ zTcZ#N;b~?$i7LiJZNVRGXW`=tL0Nh zTYCo*g#D3EP}#eUkCP8=h2wj%n9V|W2vl^Uf3sOJk2coshAej<3X-rYIu16Anzk$w ziT5|9lLeuohDsxR8=v(iby=43I6J{UJ0q`;M07+A1CeEE!NXS*A^ESnl&7FM1#-27 zs5GYMP?V-`77~+{ZXjwep61s~B@Wf|(?V9UYAvcLCuiDjYoZL6bXk}36v_>@Hro2; z5+M1buB^5?;t36}*fynnL7{tWMQ)j_S_yoELzAQ}CNn5Xbi4LVt({Vx!QzIRWvl>H zPi9tVze>Tdo-A40jR_3e`*CoA{8qd0zi)+0xvq44i8I z@-y?f^ZJL>u+j^(g%D_hsC--e^d(l~^8S0^%r)Udo8E%Bc564A7y`O8Ya|k%cnPH1f zb^SYqN~V_1ZvXeanj0f*7yNTB9+KZKSKrfwiOh8(Sb9bKaD4)K*48E|{qp_(4Rkwe zK3S9QnhOnGJ&Zb_^b_`Hn4jtPy#&UhL2gRdI=3&Zk0(p44%%~Qb0JW+=2vV458>2Z z-m;S0@}TPXsn)o_*QWn`!`eikdg0N?y1)Hj%)`R;QP~$Q+oC8GJh(JUOrV5<02(n2 zUR}Rg%!t5A5kR^)uB;=y*zoG$GlfA;sg?4|-{#oAQw5u|z~zD;~{py+v$S$3~BWgw>a|7s#HYn3iaA^PsZ?;{G zU3|rCAU&VNQ0jJR{To*jvN?8PW8IH0}^=X*sN{Svt z1LKY-b)<6|=)_bzD9hAKuv)YOg>8g@>C1s4eV!WjcP$Rt=WTYxX!9V@F=ww^pVld> zE!W>X`gd_DfmG>NeBbXk`L`)^TunR#m&Ze;VE!pJXnmS0U+13+rwj+7%81nz>tj<@ zGYXgn?QO7q%IO0r<%gY>vo}g)jjE91(V#uP>iS=MByj$xY{2r~p-g|{q9)#H`OaTb?QwB>ChP^(Y=_NZe^(vIOS z0#_^#?W5FYFfR&&VP3R?vkBMzhuue^&R|)C0Hrv&CT30r|3@$7q0ApUPBb`R{u0yC z6`h-Gzj~u4xIjWe3z`y1x=0c|J+T3svTk6+Ias*jou@qAmZK+EAAy+zbudb>>{l!| z*iw!jYGjuR zH5l>#HEW7OdQ5>0t2?suRkT$QXpS#(+eA2y#8akX{{&;Ya*~ZgH&8ezgC52W<`5UYM}R?{PhUI?!n597YjCd(N?27$3 z`{F(bQIZ}?VG<5ubc~5r4fBCQ;Sgw`FH&+dUx$6YWl}llp#DBgubg-lxG9-&@-?-?s@!+XM1w0<4O;X-MU{AY62 zmMiC5?@4U+qZcNq?>be0B6h~DcHE|pKLMO4hDGA4Gud$vnXk3WlSfzHSLqMFP116e z-hn`6f*rTJ(aV#>E3-^n#%Di;G9dZ?TTyiB8lJ?^-+&h2h3UxMI)nDiMoE8I-2oMw z>zXJB?^^#G8}8oz8b059cYV^{p|br0JtTu`crz|xx0?^Y%X5a&i$DvY*EXDGeKmsF z3e#GOW*B1A;!)WSEi#;Zy2#Y@^x@?1QI(H%pn6rAeukf%ALf~X`+(dn7xrMR1}KAm zu)HV+ORq2biVJa-rF$=iz%(4>;AT11vHmBX5L9GgWLKey67}91Q&f^)Y>x5*H&2Ot zhvq^>ko@Ze^O=Ohn;^XTkXTi{QOPR@R^f1p-M=;L08ic z=EqfFfyEK5Upx6a5t8s{b*vxZTA`+YT60n9NDMUB>CQw*%)T2N;VW8rG9^ET$aX&1 z$wLdJfo#1P?DR0#V!TB8PSEoOZlPKTLOqk~L}M!2>HFxw>cDs~2OTj?s2+m&9#Kd) z!e=9#JK)OJ{KF;*!gN&JCN~+HPrg=|6g==6BrNNP9WAdnN_T*{0QoWug18ZD^A`C& zCaIfq(AM%&OItt^%{`QK@^ML&Iij?DVOXBEY1<+?1cHzZCrlv_yN|alt1mo4kplFO zlQznvr@$OsPPCbsmbie*KI18gnudFq-2KHIeO!*4VDE&MkF;NfnmktuWMe)df*QdE zn{t8$QoTPL;a?@uyGOZ%qTlwRA0QID`eED~*>3+74~%*Y_MjjVOMY+!OL<)Th{csg+;l<^=K_iGhm12GMG94%NJmFO5M(g2_77Y*tw$xWtx1TZMv2EI<=7a*tYI_OT^KYh%pjO=k;$p;*ucxI;pF9W z$RSj*og5D0(4av>U-4qRx9p9`NEf1WbR5L6u{Lq~*Jqn4*XDIOaz6!?7!KZZ-=Y*g+f#YLM*4%cw71nB9MFX}$Dmu6g_B&8f^XU;T=e$=@ zso!lU(3Q_iyR=cg9uJUaaSKyU5wD^gy*l`fMj`n;IWm(2=VdNo*T}Wuk5L*y*s-3C zM^A*ooysejm3I)KaoHc0*BtH?cgaG&rGe)heeyr@#9yMM_j8B2oCIE_noQR1b`niT zYs9@#(r7U_R@1SR_kx4V-3F2ZYm-|1&T1qtCT z)lW2s+ch2Yc+dO#?>O?{JWUnZwV|nm$`Zxqb9C~J2WzqKb@`h6zKTF20yU3cAo|hn zz}{UOX9bm@QQxU^qEOvq`8RkpY)UeOCgpgx-J*8jK1i(la;k{EbwPY;cUD{JCZxvb zi6GvR1zwX~^^2KGd`EM9e-HQ7qbA%C71c13YHtUSo;OOJqKGpl1XD9X8R9X`magL$ zUaFNsn9o{plqL1fhj5r4b<4TsFKF5+`jAkgne@|eUve9ZL@kQz<=`00$dnx&K#LR< z6SLsvNZ(+$fHK)5P4FkUD=rmt|JI^)uv_90=>&bU=Df$-+=L|jbfNq-GP z<@P0py6oMVAwHGo;k2Sbf?@%quWsh6$37>1OStmw=X7{5;#rcxs~Q^ea1`UH=7|QW zrJ_}fYch)y$7Lf(>mV{q*cM@E%D#m0JP;9+e6m%;(9o49K}5YF+<1c`lhy$qSGJvU8hT1{=Hm;kBOvJP^Oj z)U5!sag$p~jM^}Y1@10U{`K5Rvai&tg6svTR_&Kl9x;(tH5TKpN!g1~230dQJ5x0( z<}YIm{MFAMrIPb#IwFcc0eeH6Y{4!IA6^oXB~hw1&(DdkY_z-OGN}(=+pJR@(WEc? zCT4teMfP8)Zj(ns=CkngMz3J(XOhiKWrMlbMT%(_@6OYbK`gCoN=*gkNtMHmku=G45%O|5-2XsbS))yacTZ z=pM61yf?)I8dhM*$P@f?#`Xcq!E4dMG<6y#A9Be-*X6X!H?zA#Rw$pHV5aH`p2LiM5VHi5}f}gB<3mMp4B-0inr_o8vyy zW!aiuKB)~b$&i1!f7)j7x9Ba%rX?CgmbTPM^c#zD+@pEt`YFhzF>|3oRuZhN%mU^5 z4aL~+g^PnHE)IltFWKAq@8BivUWoT5`GDw3=PirMJ1S+8HD91P{%`FwmU7uHes2F; z9B>?naHknWt_(`dm`G=(pnhT$2-`o3i_{pjuE@ZO5^OWdU_{n_lL1*cb zkt20HE$Kkcu~-^-eAmXSYTUB;2Qp3ZSeg zq5mwl_V#+Unx>Yb*@lkikEnC4EnI``uASIM{>rDC(WLA-YXq|~6!2ZWR#L4smul8RNqXQzU{72Tc79RGIe=Ujd?%rl3 zCoe^@QHS{b)wSFQQ|IhqH86(dDm>2ttlFk1SX1CAk;%}%eSXyx;bL?RFgi&nV$!$X zSy+~mg&{VdGD;zIjIIDi^#`W!V_T{$UBV1IK%HbPy`rHCIm5qvpRyAEJ_gn={&JY7 z>>pq#m~s-<+ip4SG?qP_tZR)u2ejVnq7%z-TrhmVciq3_3QOw{STUZ;T8)u<4S5!9 z6@dpFEx{YSJNkx5=k9_@VH!eix$_%p$vYb^XIP<%=SeZf2gKo}=WwnOTUkJ`7A13B zxFfJ0JN4Ocr$_Q`YInsIrhAAY@VwsZkXZah^>C52sZ$s3wS)fV` zl$ABaWcxIHx9Jri`St-!?u4JaNyDQy%6gFT{O4*D5P9J|BMyJ>%VgV`Z9uID`lvr2 z;wC;8MOx+_CsT*eB3lf3tlf)J+yUujO&EA!rV_F8jE;(FN9#A5zW(y5p1nW&y*8wsf=-+xYdgk>9sNfjI<= zakI(8W)dwxdwo`S?Sv#xd9J0K*;{Kx9+2{4GLD%nU^Z4V+C zlj(sWyTbY|-5&0=mgTZvwP}+rNft;c0HC#bVMp@Y5n4{;z02kK;J62P+j0Ro$ z$H3A#4P86B5P!wzU%^efP`mG4nMZg2QuaoDz+ZsY=j#YPre%s2t zjQJQ;t-%RMA85ja$%7fB+2y>-p3MA@Gyqdgh1{Ohjzsa6!c~bQ=eDh!%$!R!K;IQg z3@>fQtbazYh{5IZGQWI058Q2|+!a`Oc1>PVqV_|Ox5ht!o7-RDU0m{$H+AW>dTtSK zXFCS~5$u`rd@RfyO80mV-Mq^4DyabmcXjZZk>>~h)DFXwN%6gx-hkC@lcwz;x&mS4 zbmcSccZ`4)BBIE}7umqUM}W3%`;v?~F9G)~-`UN};jURD!&r=_M+RFT0RX9BhQ2h? zl6udIx`njVw(lc%4ghgi6XGyuXUN?rjM>O1ucZ>s2XKBfG(KYmL9O*E3w*wN-{&BT z8hGGNxrE>i>l-Cpfp=+>l>Bq3LgrVUly6!rPU>}t!A*y;{S1u2yY8ucJ9K5hgTNBA zMebqj4+aL{o!LqDjDidiJ*Qv+1wPwE6rJpQm;Qz~(Y@_f^*pIWg25BTSJ7^YW5P9v zy_7oM+_yXIr2=xsGx{vC1MOLhs%GI2M>5C6XaR$EU%5ty>tdU?woYMPr})8@gmXZF z*Y~N*7CiiZZV&1CJKP?UD*eKN5C^`Bio#4*Y*a(DI_T7yXWAB5fX~A)u(G_(=Tsuv zHosc1Z?_W#00(7YF!OE2$85WeX$8~XIuAU#MLFs#zp(aj`^K9Ce9JTg0F1&;6jLkT z5Xa=~jv}dn#|k!0N*2abO09)3hgr-;XANL3M<7fb`;xQ2mJ{Aqa;k=udD+%Ox4iML}{5PZ3sJ*-t?m*In#eWKZo*&r<=+&rjO%Y&*rxrMKps+e-7u?=pFS)-Nv=dpd8~ zoDJV?MjvV6v1@d+fFwVdf)qZ6>nd-|i=L5(TY6Y70#>0y_4Cxa3T9p4F)<_1s>f_> z?ECPfVo5oFzw}fcv=#U7seRbw-MIgEZ~T33K2v@DO+{kqI|)shCGrh;W}bA9eTzo#~9uIOqM|?VRVF=R9wQ zn16aKG#mceaEhYL+}&K4QxsD|{&S2lQ?&7DJq%;#@`Wx`=AH2`C~D*#cUR|?A$4sH zd54oXjf-l!=$p(;`|>gGE4u~aB~f2_{p$?t$JBU@dR0zI#qg?CsFakm1q09W|9;&+=zWjR+Z^Kd&;BQ_DH~no{XFw^ zqPN^x_Mzt5Tgxuf&U=$mDESx1Z*ROSW3%|wQ%%_Wtc3$j<9HH^x317d$`B`Z4Ub?` z?lsm}Ucc%h7UI|cRTrL_P;Qs}BD755%}_RzE1%pth9jabWq1qKpB6r);viR=-HQ5GOO~tx&MV#;vLeUe)&} zDvEmL)2P%fEeXB<>rdkjycq>?;G9#P2=3PV_$lVTjp4~Xj;$;ReZRuev7IcsovX{s zF6=TkcW&%)<%sR;RN0WyQ;z-1^!8jnwtIHH z?Ef~dzhN;-B3$nM%FJ#}m=ecw?W46!xv<-4oYN@|LsHvg+kO%EA z$)#;&{*J)-?QbkZlvjD7GoAw$E<6h0+C{X($%w%bt}1el$du9&rto&5Gv14`Tzd}0 z*0$TI>1d;r!E4e9HCK`Msp@(QRs>sYn@QVCgEn7Xbh)?*t*ZAt z9m+M&bY-PaS8Ni6EJn+eY9|oF)&&6vAgpo$?j|=0z?IS)sFQ6bD#)wR;+D)(GLk+q zk-od*+t{^ma$a~~`+Scl+Lt)_&D-J!^wH~u&Jyc+JB$UPAP;BDrV^$gREiPGDP2Qb zWNPh~$g(sQz;A;$rZb1sHS*A#7@jnQ;Qjt6n=1_|YQ-oKBeAZ?{+*c(xg_G==o`u_%2x406=<+kG?w<@V##{ z@of*^`%M1uo$h74_3ONrDPoYuZgX4Shnvp>LrwI?#W?PO-Qn2n`;k?Hk!B3q7M-y3 zXD~S^UZ$)H;#Tp0!z&FWcOBnoq3I5`VKk#jv;o{9)ECTvHhA454RsE{ytMEQnG_$DDdlXg zaH}q5w;^(?>VUw|=jGOZq+aI>7MphH=mYS*txU-XsFrw$VLXGot)6m0He zR)W_&;BojIZsxB{SLWOI98RJ}|Fb=WF|Y{aI>l;Y!Tu3#q8;E7^2gLFv34jP^lsT^P$1Qyng z2rX=`x~P~4t=g%7$uQf@E2@0QVp%78CgU*f@>xfNUPD?xm{I z$nl(&?Csmd(@vGB<-hQed2KmHO=%?OQLEH)tEqG~DzeE;3*^i6Ec%1x1Q9fi0$y)y zcSaZJQApc(qG$RMTz=I+PC&N($-+Br|%5}f8+v{yd`Dj8piri{4L5yR7O zC$NHmLBEsqMGzqCH?1Zk=#>7f`}<^?1n29H`PKJkAE5H_+@$(%1+A)v@kOcLQ>(-9 zk|E13s_K%xHAMyoJZor1L|D6pDAm%ibrQB(M$nu*y@wpOM&Tv|k~sRImcBORfDWUE zrDQJU5=QiP1<;1xf>W8{rk%KHCtWxw3HTX378w!`^qBFhP7>M)IDmh0uwU+J$c!mc zJ>m*Upc>g4(dk*JH-x-=d+^@C_H;icI%@_^stS}gwXb4A?Gln0QzW4l?;0b5&4UsE z<(rtUF^2E>Md@C$`?7&BlowNYs{BsxS2K-`bDCmBHd0RWaNV;Jtz=~-!1)>Ql0GKnhLE)Q28kE>>+E!ent(&pe zdyQeG;!#7RuJ_0$%AtjCwQVYpYEH4a4&Sc59sWWm#FfjpR=-T$7`L}%F~t!HlL!{r zMABfe;|IT2;RPk%0`InMyB=hQasaKYSLLVq5OZOU4MV7wyOP%sHi*2Au=pv&;6LSC zwTI(-n-h>l5Qd_^^GK;+JIZLAb%nM~q;Qxw=r^oE&tV@G9e=PG?nQSkKVwgfO>dSd zZ9+`s&(I>>EaV6H$&VqS7DUNL8pR-TNCD}1ob78c^LflwiY`i@AtbD*La(JyD#u? J&2*6}{tpft)$#xU literal 0 HcmV?d00001 diff --git a/firebase-analytics/samples/FirebaseAnalyticsQuickstart/Resources/drawable-xxhdpi/whitebalance.png b/firebase-analytics/samples/FirebaseAnalyticsQuickstart/Resources/drawable-xxhdpi/whitebalance.png new file mode 100755 index 0000000000000000000000000000000000000000..210496e30380472fb5ace385d54b0e159221bbc9 GIT binary patch literal 8077 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�l+$AsUXr)pA*l~$<(%eT|spJ<;#jTaC z+d@IX&I_Fboz~ArR+J9}&C!(CIrYVzBrbuG)dV3!`tc}A&d2%WUdJ~7@MhlyDDn z{_Jj>fd#}OOOO2s*TS)lhvyM=ru7t>a&%B8O?mnJ<)4}*Q>K1{?oPBieDuti@$=tS z=9>F6H(jvK z7!6M5HyZZ`wK=!fDE!*{{fpEPlqh=8t4FJoL6L3SHMsm&^jq0lc~;5u&f8EDpn0{3 z9#dCFbeF!d)lI^`ma9BFlT|1Ff%2`ICRIy4+O5HS|MS;T>(y+cPd9T(9{a2Lb(=PN z88v8ah@MHMD{b}6ujAS10{+`&%|Q-ZJ*#`4itok^1|>2CIfDNcV?=nqTFLRV_h%rI zB%v|Uta^SCd;tGW@3MI&{infDmOua%5tMrjohB`v$q8@>Acr9MI}JoFRgas-ug(J5 zl3Of8d%JW%&4pnCJQHqQbS3L!jgPvz0+%dp4dxXjlA-*O(CpaB5dt8r2NnUk3YH{! znPfyjK`)Ti)67PsolFBMxrA9Dihm)DNm$$fcu6q$b!N@yiUcM&!6ae+hG^JS?fHUQ zXuym}3*Vobg2G+rr^UDQYvn**2~brP41y%dX=Vr@v$w0+hL zw4Fzi-x72t=OO6)`6grH|5b}1T-et`Z?u8I^_uLyL6O%4Kk^w7!B2mhpcw%8tquUc zQh_)gN$^9}f9c%m_#5$V8{z_qcRGL_E=baU)A>uqFXCVA|6eNqa|m|5`YR+m?O + + + \ No newline at end of file diff --git a/firebase-analytics/samples/FirebaseAnalyticsQuickstart/Resources/layout/activity_main.xml b/firebase-analytics/samples/FirebaseAnalyticsQuickstart/Resources/layout/activity_main.xml new file mode 100755 index 000000000..45369dd18 --- /dev/null +++ b/firebase-analytics/samples/FirebaseAnalyticsQuickstart/Resources/layout/activity_main.xml @@ -0,0 +1,11 @@ + + + + diff --git a/firebase-analytics/samples/FirebaseAnalyticsQuickstart/Resources/layout/fragment_main.xml b/firebase-analytics/samples/FirebaseAnalyticsQuickstart/Resources/layout/fragment_main.xml new file mode 100755 index 000000000..eedfb8665 --- /dev/null +++ b/firebase-analytics/samples/FirebaseAnalyticsQuickstart/Resources/layout/fragment_main.xml @@ -0,0 +1,20 @@ + + + diff --git a/firebase-analytics/samples/FirebaseAnalyticsQuickstart/Resources/menu/main.xml b/firebase-analytics/samples/FirebaseAnalyticsQuickstart/Resources/menu/main.xml new file mode 100755 index 000000000..0d9d68b48 --- /dev/null +++ b/firebase-analytics/samples/FirebaseAnalyticsQuickstart/Resources/menu/main.xml @@ -0,0 +1,6 @@ + + + diff --git a/firebase-analytics/samples/FirebaseAnalyticsQuickstart/Resources/mipmap-hdpi/ic_launcher.png b/firebase-analytics/samples/FirebaseAnalyticsQuickstart/Resources/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..b3b243f5b32b847ae0f63d56d1788559bc476a1e GIT binary patch literal 3255 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 XhO{*%_XF6400000NkvXXu0mjf2v~x9 literal 0 HcmV?d00001 diff --git a/firebase-analytics/samples/FirebaseAnalyticsQuickstart/Resources/mipmap-xxhdpi/ic_launcher.png b/firebase-analytics/samples/FirebaseAnalyticsQuickstart/Resources/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..c38e930ce07b99f33f4c59a00e9905f231c9fc30 GIT binary patch literal 6866 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 M07*qoM6N<$f@mhY6951J literal 0 HcmV?d00001 diff --git a/firebase-analytics/samples/FirebaseAnalyticsQuickstart/Resources/mipmap-xxxhdpi/ic_launcher.png b/firebase-analytics/samples/FirebaseAnalyticsQuickstart/Resources/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..d60eaa545b9127ae100b29e4e4d2357b1a7c8346 GIT binary patch literal 9237 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 + 64dp + diff --git a/firebase-analytics/samples/FirebaseAnalyticsQuickstart/Resources/values/colors.xml b/firebase-analytics/samples/FirebaseAnalyticsQuickstart/Resources/values/colors.xml new file mode 100755 index 000000000..10f990e60 --- /dev/null +++ b/firebase-analytics/samples/FirebaseAnalyticsQuickstart/Resources/values/colors.xml @@ -0,0 +1,6 @@ + + + #039BE5 + #0288D1 + #FFA000 + \ No newline at end of file diff --git a/firebase-analytics/samples/FirebaseAnalyticsQuickstart/Resources/values/dimens.xml b/firebase-analytics/samples/FirebaseAnalyticsQuickstart/Resources/values/dimens.xml new file mode 100755 index 000000000..fe991af40 --- /dev/null +++ b/firebase-analytics/samples/FirebaseAnalyticsQuickstart/Resources/values/dimens.xml @@ -0,0 +1,4 @@ + + 16dp + 16dp + diff --git a/firebase-analytics/samples/FirebaseAnalyticsQuickstart/Resources/values/strings.xml b/firebase-analytics/samples/FirebaseAnalyticsQuickstart/Resources/values/strings.xml new file mode 100755 index 000000000..60b89ec81 --- /dev/null +++ b/firebase-analytics/samples/FirebaseAnalyticsQuickstart/Resources/values/strings.xml @@ -0,0 +1,19 @@ + + Firebase Analytics Quickstart + A + B + C + D + id-A + id-B + id-C + id-D + Share + Which food is your favorite? + + Hot Dogs + Hamburgers + Pizza + + blh + diff --git a/firebase-analytics/samples/FirebaseAnalyticsQuickstart/Resources/values/styles.xml b/firebase-analytics/samples/FirebaseAnalyticsQuickstart/Resources/values/styles.xml new file mode 100755 index 000000000..92a6a370d --- /dev/null +++ b/firebase-analytics/samples/FirebaseAnalyticsQuickstart/Resources/values/styles.xml @@ -0,0 +1,7 @@ + + + diff --git a/firebase-analytics/samples/FirebaseAnalyticsQuickstart/google-services.json b/firebase-analytics/samples/FirebaseAnalyticsQuickstart/google-services.json new file mode 100644 index 000000000..50b903847 --- /dev/null +++ b/firebase-analytics/samples/FirebaseAnalyticsQuickstart/google-services.json @@ -0,0 +1 @@ +{ "WARNING" : "Use your own google-services.json file here instead!" } diff --git a/firebase-analytics/samples/FirebaseAnalyticsQuickstart/packages.config b/firebase-analytics/samples/FirebaseAnalyticsQuickstart/packages.config new file mode 100644 index 000000000..449f48207 --- /dev/null +++ b/firebase-analytics/samples/FirebaseAnalyticsQuickstart/packages.config @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file From 9c0ac9f9d54fd4fb22adc396f27a570910c8b498 Mon Sep 17 00:00:00 2001 From: Redth Date: Tue, 21 Jun 2016 10:18:52 -0400 Subject: [PATCH 071/178] Added Firebase Auth Sample --- .../samples/FirebaseAuthQuickstart.sln | 77 +++++++ .../AnonymousAuthActivity.cs | 194 +++++++++++++++++ .../Assets/AboutAssets.txt | 19 ++ .../FirebaseAuthQuickstart/BaseActivity.cs | 49 +++++ .../FirebaseAuthQuickstart/ChooserActivity.cs | 103 +++++++++ .../CustomAuthActivity.cs | 122 +++++++++++ .../EmailPasswordActivity.cs | 173 +++++++++++++++ .../FirebaseAuthQuickstart.csproj | 145 +++++++++++++ .../GoogleSignInActivity.cs | 197 ++++++++++++++++++ .../Properties/AndroidManifest.xml | 5 + .../Properties/AssemblyInfo.cs | 28 +++ .../Resources/AboutResources.txt | 44 ++++ .../drawable-hdpi/firebase_lockup_400.png | Bin 0 -> 13965 bytes .../drawable-hdpi/ic_person_white.png | Bin 0 -> 878 bytes .../drawable-mdpi/firebase_lockup_400.png | Bin 0 -> 8922 bytes .../drawable-mdpi/ic_person_white.png | Bin 0 -> 573 bytes .../drawable-xhdpi/firebase_lockup_400.png | Bin 0 -> 19329 bytes .../drawable-xhdpi/ic_person_white.png | Bin 0 -> 1283 bytes .../drawable-xxhdpi/firebase_lockup_400.png | Bin 0 -> 29503 bytes .../drawable-xxhdpi/ic_person_white.png | Bin 0 -> 2137 bytes .../drawable-xxxhdpi/firebase_lockup_400.png | Bin 0 -> 40358 bytes .../drawable-xxxhdpi/ic_person_white.png | Bin 0 -> 3244 bytes .../layout/activity_anonymous_auth.xml | 96 +++++++++ .../Resources/layout/activity_chooser.xml | 16 ++ .../Resources/layout/activity_custom.xml | 57 +++++ .../layout/activity_emailpassword.xml | 115 ++++++++++ .../Resources/layout/activity_facebook.xml | 69 ++++++ .../Resources/layout/activity_google.xml | 90 ++++++++ .../Resources/layout/activity_twitter.xml | 69 ++++++ .../Resources/mipmap-hdpi/ic_launcher.png | Bin 0 -> 3255 bytes .../Resources/mipmap-mdpi/ic_launcher.png | Bin 0 -> 2082 bytes .../Resources/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 4381 bytes .../Resources/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 6866 bytes .../Resources/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 9237 bytes .../Resources/values-land/dimens.xml | 5 + .../Resources/values-v21/styles.xml | 8 + .../Resources/values-w820dp/dimens.xml | 6 + .../Resources/values/colors.xml | 9 + .../Resources/values/dimens.xml | 9 + .../Resources/values/ids.xml | 9 + .../Resources/values/strings.xml | 53 +++++ .../Resources/values/styles.xml | 48 +++++ .../TokenBroadcastReceiver.cs | 32 +++ .../google-services.json | 1 + .../FirebaseAuthQuickstart/packages.config | 5 + 45 files changed, 1853 insertions(+) create mode 100644 firebase-auth/samples/FirebaseAuthQuickstart.sln create mode 100644 firebase-auth/samples/FirebaseAuthQuickstart/AnonymousAuthActivity.cs create mode 100644 firebase-auth/samples/FirebaseAuthQuickstart/Assets/AboutAssets.txt create mode 100644 firebase-auth/samples/FirebaseAuthQuickstart/BaseActivity.cs create mode 100644 firebase-auth/samples/FirebaseAuthQuickstart/ChooserActivity.cs create mode 100644 firebase-auth/samples/FirebaseAuthQuickstart/CustomAuthActivity.cs create mode 100644 firebase-auth/samples/FirebaseAuthQuickstart/EmailPasswordActivity.cs create mode 100644 firebase-auth/samples/FirebaseAuthQuickstart/FirebaseAuthQuickstart.csproj create mode 100644 firebase-auth/samples/FirebaseAuthQuickstart/GoogleSignInActivity.cs create mode 100644 firebase-auth/samples/FirebaseAuthQuickstart/Properties/AndroidManifest.xml create mode 100644 firebase-auth/samples/FirebaseAuthQuickstart/Properties/AssemblyInfo.cs create mode 100644 firebase-auth/samples/FirebaseAuthQuickstart/Resources/AboutResources.txt create mode 100644 firebase-auth/samples/FirebaseAuthQuickstart/Resources/drawable-hdpi/firebase_lockup_400.png create mode 100755 firebase-auth/samples/FirebaseAuthQuickstart/Resources/drawable-hdpi/ic_person_white.png create mode 100644 firebase-auth/samples/FirebaseAuthQuickstart/Resources/drawable-mdpi/firebase_lockup_400.png create mode 100755 firebase-auth/samples/FirebaseAuthQuickstart/Resources/drawable-mdpi/ic_person_white.png create mode 100644 firebase-auth/samples/FirebaseAuthQuickstart/Resources/drawable-xhdpi/firebase_lockup_400.png create mode 100755 firebase-auth/samples/FirebaseAuthQuickstart/Resources/drawable-xhdpi/ic_person_white.png create mode 100644 firebase-auth/samples/FirebaseAuthQuickstart/Resources/drawable-xxhdpi/firebase_lockup_400.png create mode 100755 firebase-auth/samples/FirebaseAuthQuickstart/Resources/drawable-xxhdpi/ic_person_white.png create mode 100644 firebase-auth/samples/FirebaseAuthQuickstart/Resources/drawable-xxxhdpi/firebase_lockup_400.png create mode 100755 firebase-auth/samples/FirebaseAuthQuickstart/Resources/drawable-xxxhdpi/ic_person_white.png create mode 100755 firebase-auth/samples/FirebaseAuthQuickstart/Resources/layout/activity_anonymous_auth.xml create mode 100755 firebase-auth/samples/FirebaseAuthQuickstart/Resources/layout/activity_chooser.xml create mode 100755 firebase-auth/samples/FirebaseAuthQuickstart/Resources/layout/activity_custom.xml create mode 100755 firebase-auth/samples/FirebaseAuthQuickstart/Resources/layout/activity_emailpassword.xml create mode 100755 firebase-auth/samples/FirebaseAuthQuickstart/Resources/layout/activity_facebook.xml create mode 100755 firebase-auth/samples/FirebaseAuthQuickstart/Resources/layout/activity_google.xml create mode 100755 firebase-auth/samples/FirebaseAuthQuickstart/Resources/layout/activity_twitter.xml create mode 100644 firebase-auth/samples/FirebaseAuthQuickstart/Resources/mipmap-hdpi/ic_launcher.png create mode 100644 firebase-auth/samples/FirebaseAuthQuickstart/Resources/mipmap-mdpi/ic_launcher.png create mode 100644 firebase-auth/samples/FirebaseAuthQuickstart/Resources/mipmap-xhdpi/ic_launcher.png create mode 100644 firebase-auth/samples/FirebaseAuthQuickstart/Resources/mipmap-xxhdpi/ic_launcher.png create mode 100644 firebase-auth/samples/FirebaseAuthQuickstart/Resources/mipmap-xxxhdpi/ic_launcher.png create mode 100755 firebase-auth/samples/FirebaseAuthQuickstart/Resources/values-land/dimens.xml create mode 100755 firebase-auth/samples/FirebaseAuthQuickstart/Resources/values-v21/styles.xml create mode 100755 firebase-auth/samples/FirebaseAuthQuickstart/Resources/values-w820dp/dimens.xml create mode 100755 firebase-auth/samples/FirebaseAuthQuickstart/Resources/values/colors.xml create mode 100755 firebase-auth/samples/FirebaseAuthQuickstart/Resources/values/dimens.xml create mode 100755 firebase-auth/samples/FirebaseAuthQuickstart/Resources/values/ids.xml create mode 100755 firebase-auth/samples/FirebaseAuthQuickstart/Resources/values/strings.xml create mode 100755 firebase-auth/samples/FirebaseAuthQuickstart/Resources/values/styles.xml create mode 100644 firebase-auth/samples/FirebaseAuthQuickstart/TokenBroadcastReceiver.cs create mode 100644 firebase-auth/samples/FirebaseAuthQuickstart/google-services.json create mode 100644 firebase-auth/samples/FirebaseAuthQuickstart/packages.config diff --git a/firebase-auth/samples/FirebaseAuthQuickstart.sln b/firebase-auth/samples/FirebaseAuthQuickstart.sln new file mode 100644 index 000000000..f4f44fa4c --- /dev/null +++ b/firebase-auth/samples/FirebaseAuthQuickstart.sln @@ -0,0 +1,77 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 2012 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FirebaseAuthQuickstart", "FirebaseAuthQuickstart\FirebaseAuthQuickstart.csproj", "{D4AFDB96-B559-41B4-93D1-33E598E0A477}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Basement", "..\..\basement\source\Basement.csproj", "{6A38FACF-F0C5-4A49-8A8A-7CE6634207CE}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Base", "..\..\base\source\Base.csproj", "{3F6BAE25-ADEB-468C-8384-AD655623C341}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tasks", "..\..\tasks\source\Tasks.csproj", "{53F87D88-8871-41A2-9F81-B79AB02FEC24}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Firebase-Common", "..\..\firebase-common\source\Firebase-Common.csproj", "{865652D3-8D1A-4779-92FC-4C54719286B7}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Firebase-Auth-Module", "..\..\firebase-auth-module\source\Firebase-Auth-Module.csproj", "{7DA24DFC-EF53-4C06-AB7A-FF6BEF513A1B}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Firebase-Auth-Common", "..\..\firebase-auth-common\source\Firebase-Auth-Common.csproj", "{F53B34FB-4BBC-4314-8D8A-1F0CD959E83F}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Firebase-Auth", "..\source\Firebase-Auth.csproj", "{62946D89-B6B1-4A38-A04D-C20912087EFD}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Basement-BuildTasks", "..\..\basement\buildtasks\Basement-BuildTasks.csproj", "{21D99A15-AB98-4691-A45B-D236B2A91DEB}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Auth.Base", "..\..\auth-base\source\Auth.Base.csproj", "{B04C50F7-B0CC-4170-8820-9D584E1C0ED3}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Auth", "..\..\auth\source\Auth.csproj", "{A0CDF507-32B7-4994-8248-94FAB8646E35}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {D4AFDB96-B559-41B4-93D1-33E598E0A477}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D4AFDB96-B559-41B4-93D1-33E598E0A477}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D4AFDB96-B559-41B4-93D1-33E598E0A477}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D4AFDB96-B559-41B4-93D1-33E598E0A477}.Release|Any CPU.Build.0 = Release|Any CPU + {6A38FACF-F0C5-4A49-8A8A-7CE6634207CE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6A38FACF-F0C5-4A49-8A8A-7CE6634207CE}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6A38FACF-F0C5-4A49-8A8A-7CE6634207CE}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6A38FACF-F0C5-4A49-8A8A-7CE6634207CE}.Release|Any CPU.Build.0 = Release|Any CPU + {3F6BAE25-ADEB-468C-8384-AD655623C341}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3F6BAE25-ADEB-468C-8384-AD655623C341}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3F6BAE25-ADEB-468C-8384-AD655623C341}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3F6BAE25-ADEB-468C-8384-AD655623C341}.Release|Any CPU.Build.0 = Release|Any CPU + {53F87D88-8871-41A2-9F81-B79AB02FEC24}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {53F87D88-8871-41A2-9F81-B79AB02FEC24}.Debug|Any CPU.Build.0 = Debug|Any CPU + {53F87D88-8871-41A2-9F81-B79AB02FEC24}.Release|Any CPU.ActiveCfg = Release|Any CPU + {53F87D88-8871-41A2-9F81-B79AB02FEC24}.Release|Any CPU.Build.0 = Release|Any CPU + {865652D3-8D1A-4779-92FC-4C54719286B7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {865652D3-8D1A-4779-92FC-4C54719286B7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {865652D3-8D1A-4779-92FC-4C54719286B7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {865652D3-8D1A-4779-92FC-4C54719286B7}.Release|Any CPU.Build.0 = Release|Any CPU + {7DA24DFC-EF53-4C06-AB7A-FF6BEF513A1B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7DA24DFC-EF53-4C06-AB7A-FF6BEF513A1B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7DA24DFC-EF53-4C06-AB7A-FF6BEF513A1B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7DA24DFC-EF53-4C06-AB7A-FF6BEF513A1B}.Release|Any CPU.Build.0 = Release|Any CPU + {F53B34FB-4BBC-4314-8D8A-1F0CD959E83F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F53B34FB-4BBC-4314-8D8A-1F0CD959E83F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F53B34FB-4BBC-4314-8D8A-1F0CD959E83F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F53B34FB-4BBC-4314-8D8A-1F0CD959E83F}.Release|Any CPU.Build.0 = Release|Any CPU + {62946D89-B6B1-4A38-A04D-C20912087EFD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {62946D89-B6B1-4A38-A04D-C20912087EFD}.Debug|Any CPU.Build.0 = Debug|Any CPU + {62946D89-B6B1-4A38-A04D-C20912087EFD}.Release|Any CPU.ActiveCfg = Release|Any CPU + {62946D89-B6B1-4A38-A04D-C20912087EFD}.Release|Any CPU.Build.0 = Release|Any CPU + {21D99A15-AB98-4691-A45B-D236B2A91DEB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {21D99A15-AB98-4691-A45B-D236B2A91DEB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {21D99A15-AB98-4691-A45B-D236B2A91DEB}.Release|Any CPU.ActiveCfg = Release|Any CPU + {21D99A15-AB98-4691-A45B-D236B2A91DEB}.Release|Any CPU.Build.0 = Release|Any CPU + {B04C50F7-B0CC-4170-8820-9D584E1C0ED3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B04C50F7-B0CC-4170-8820-9D584E1C0ED3}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B04C50F7-B0CC-4170-8820-9D584E1C0ED3}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B04C50F7-B0CC-4170-8820-9D584E1C0ED3}.Release|Any CPU.Build.0 = Release|Any CPU + {A0CDF507-32B7-4994-8248-94FAB8646E35}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A0CDF507-32B7-4994-8248-94FAB8646E35}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A0CDF507-32B7-4994-8248-94FAB8646E35}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A0CDF507-32B7-4994-8248-94FAB8646E35}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/firebase-auth/samples/FirebaseAuthQuickstart/AnonymousAuthActivity.cs b/firebase-auth/samples/FirebaseAuthQuickstart/AnonymousAuthActivity.cs new file mode 100644 index 000000000..c0192b6e8 --- /dev/null +++ b/firebase-auth/samples/FirebaseAuthQuickstart/AnonymousAuthActivity.cs @@ -0,0 +1,194 @@ + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Android.App; +using Android.Content; +using Android.OS; +using Android.Runtime; +using Android.Views; +using Android.Widget; +using Android.Gms.Extensions; +using Android.Gms.Tasks; + +using Firebase.Auth; +using Android.Text; + +namespace FirebaseAuthQuickstart +{ + [Activity (Label = "Anonymous Auth")] + public class AnonymousAuthActivity : BaseActivity + { + const string TAG = "AnonymousAuth"; + + // [START declare_auth] + FirebaseAuth mAuth; + // [END declare_auth] + + EditText mEmailField; + EditText mPasswordField; + + protected override void OnCreate (Bundle savedInstanceState) + { + base.OnCreate (savedInstanceState); + SetContentView (Resource.Layout.activity_anonymous_auth); + + // [START initialize_auth] + mAuth = FirebaseAuth.Instance; + // [END initialize_auth] + + // Fields + mEmailField = FindViewById (Resource.Id.field_email); + mPasswordField = FindViewById (Resource.Id.field_password); + + // Click listeners + FindViewById