diff --git a/.azurepipelines/build-release-packages-1es.yml b/.azurepipelines/build-release-packages-1es.yml index f09d6542c..63ff31a69 100644 --- a/.azurepipelines/build-release-packages-1es.yml +++ b/.azurepipelines/build-release-packages-1es.yml @@ -28,8 +28,74 @@ extends: sdl: sourceAnalysisPool: 1ES-PT-Windows-2022 stages: + + - stage: DownloadExternalPipelineArtifacts + pool: + name: Azure Pipelines + image: macos-14 + os: macOS + jobs: + - job: downloadExternalArtifacts + displayName: DownloadExternalPipelineArtifacts + templateContext: + outputs: + - output: pipelineArtifact + displayName: 'Publish Artifact: framework' + path: '$(Build.ArtifactStagingDirectory)' + artifactName: external-artifacts + steps: + - checkout: self + fetchTags: false + + - task: DownloadPipelineArtifact@2 + displayName: 'Download apple artifacts' + inputs: + buildType: 'specific' + project: 'SDK' + pipeline: 'AppCenter-SDK-Apple Build Frameworks and Documentation 1ES' + buildVersionToDownload: 'latestFromBranch' + patterns: '**/Release/!(*carthage*)*.zip' + targetPath: '$(Build.SourcesDirectory)/externals/apple_unflattened' + + - task: DownloadPipelineArtifact@2 + displayName: 'Download android artifacts' + inputs: + buildType: 'specific' + project: 'SDK' + buildVersionToDownload: 'latestFromBranch' + pipeline: 'AppCenter-SDK-Android Publish Maven 1ES' + patterns: '**/Release/appcenter/**/*.aar' + targetPath: '$(Build.SourcesDirectory)/externals/android_unflattened' + + - task: Bash@3 + displayName: 'Flatten Android artifacts' + inputs: + targetType: 'inline' + script: | + echo "Flattening Android artifacts:" + mkdir -p $(Build.SourcesDirectory)/externals/android + find $(Build.SourcesDirectory)/externals/android_unflattened -name '*.aar' -exec mv {} $(Build.SourcesDirectory)/externals/android/ \; + rm -rf $(Build.SourcesDirectory)/externals/android_unflattened + + - task: Bash@3 + displayName: 'Flatten Apple artifacts' + inputs: + targetType: 'inline' + script: | + echo "Flattening Apple artifacts:" + mkdir -p $(Build.SourcesDirectory)/externals/apple + find $(Build.SourcesDirectory)/externals/apple_unflattened -name '*.zip' -exec mv {} $(Build.SourcesDirectory)/externals/apple/ \; + rm -rf $(Build.SourcesDirectory)/externals/apple_unflattened + + - task: CopyFiles@2 + displayName: 'Copy artifacts' + inputs: + SourceFolder: '$(Build.SourcesDirectory)/externals' + TargetFolder: '$(Build.ArtifactStagingDirectory)' + - stage: BuildWindowsAssemblies - dependsOn: [] + dependsOn: + - DownloadExternalPipelineArtifacts jobs: - job: sdkBuildJob displayName: BuildWindowsAssemblies @@ -44,12 +110,11 @@ extends: - checkout: self fetchTags: false - - task: AzureKeyVault@2 + - task: DownloadPipelineArtifact@2 inputs: - azureSubscription: 'AC - Dev Infra & Build Pool' - KeyVaultName: 'mobile-center-sdk' - SecretsFilter: 'appcenter-sdk-blob-storage-access-secret' - RunAsPreJob: false + artifact: 'external-artifacts' + targetPath: '$(Build.SourcesDirectory)/externals' + displayName: 'Download pipeline artifacts' - task: PowerShell@2 displayName: 'Set Release Version' @@ -62,10 +127,8 @@ extends: displayName: 'Prepare Assemblies' inputs: target: PrepareAssemblies - arguments: '--StorageAuthParams="$(appcenter-sdk-blob-storage-access-secret)"' Version: 2.2.0 - - task: CopyFiles@2 displayName: 'Copy Assemblies' inputs: @@ -73,10 +136,11 @@ extends: TargetFolder: '$(Build.ArtifactStagingDirectory)' - stage: BuildDotNetAssemblies - dependsOn: [] + dependsOn: + - DownloadExternalPipelineArtifacts pool: name: Azure Pipelines - image: macos-12 + image: macos-14 os: macOS demands: - msbuild @@ -92,6 +156,12 @@ extends: - checkout: self fetchTags: false + - task: DownloadPipelineArtifact@2 + inputs: + artifact: 'external-artifacts' + targetPath: '$(Build.SourcesDirectory)/externals' + displayName: 'Download pipeline artifacts' + - task: Bash@3 displayName: 'Set Release Version' inputs: @@ -106,13 +176,6 @@ extends: jdkArchitectureOption: x64 jdkSourceOption: PreInstalled - - task: AzureKeyVault@2 - inputs: - azureSubscription: 'AC - Dev Infra & Build Pool' - KeyVaultName: 'mobile-center-sdk' - SecretsFilter: 'appcenter-sdk-blob-storage-access-secret' - RunAsPreJob: false - - task: UseDotNet@2 displayName: 'Install .NET SDK' inputs: @@ -126,7 +189,6 @@ extends: displayName: 'Prepare DotNet Assemblies' inputs: target: PrepareAssemblies - arguments: '--StorageAuthParams="$(appcenter-sdk-blob-storage-access-secret)"' Version: 2.2.0 - task: Bash@3 @@ -146,7 +208,7 @@ extends: displayName: 'Prepare Xamarin Assemblies' inputs: target: PrepareAssemblies - arguments: '--MacPlatformId="mac-xamarin" --StorageAuthParams="$(appcenter-sdk-blob-storage-access-secret)"' + arguments: '--MacPlatformId="mac-xamarin"' Version: 2.2.0 - task: CopyFiles@2 @@ -223,16 +285,25 @@ extends: .\scripts\strong-named-sign.cmd "$(Build.ArtifactStagingDirectory)\assemblies" "$(Agent.TempDirectory)\appcenter-pair-key.snk" displayName: 'Sign assemblies with strong naming' + - task: AzureKeyVault@2 + displayName: 'Get MSI Client and Tenant IDs for App Center - Code Signing (PME) Service Connection' + inputs: + azureSubscription: AC - Dev Infra & Build Pool + keyVaultName: mobile-center-sdk + secretsFilter: codesigning-esrp-client-id, codesigning-msi-client-id, codesigning-msi-tenant-id + runAsPreJob: false + - task: EsrpCodeSigning@5 displayName: 'Sign Assemblies' inputs: - ConnectedServiceName: 'App Center - Code Signing (WIF)' + ConnectedServiceName: 'App Center - Code Signing (PME)' FolderPath: '$(Build.ArtifactStagingDirectory)\assemblies' - AppRegistrationClientId: '56ecf8eb-6143-4da0-9a53-716e9c2e6e86' - AppRegistrationTenantId: '72f988bf-86f1-41af-91ab-2d7cd011db47' - AuthAKVName: 'code-signing-poduction' - AuthCertName: 'appcenter-codesigning-auth' - AuthSignCertName: 'CodeSigning-Certificate-Managed' + UseMSIAuthentication: true + AppRegistrationClientId: $(codesigning-msi-client-id) + AppRegistrationTenantId: $(codesigning-msi-tenant-id) + EsrpClientId: $(codesigning-esrp-client-id) + AuthAKVName: 'ac-code-signing' + AuthSignCertName: 'CodeSigning-Certificate-Managed' Pattern: '*.dll,*.winmd' signConfigType: inlineSignParams inlineOperation: | @@ -302,13 +373,6 @@ extends: env: AzureServicesAuthConnectionString: 'runAs=App;AppId=$(appcenter-sdk-managed-identity-clientid)' - - task: AzureKeyVault@2 - inputs: - azureSubscription: 'AC - Dev Infra & Build Pool' - KeyVaultName: 'mobile-center-sdk' - SecretsFilter: 'appcenter-sdk-blob-storage-access-secret' - RunAsPreJob: false - - task: Cake@2 displayName: 'Pack NuGets' inputs: @@ -320,12 +384,13 @@ extends: displayName: 'Sign Packages' enabled: true inputs: - ConnectedServiceName: 'App Center - Code Signing (WIF)' - AppRegistrationClientId: '56ecf8eb-6143-4da0-9a53-716e9c2e6e86' - AppRegistrationTenantId: '72f988bf-86f1-41af-91ab-2d7cd011db47' - AuthAKVName: 'code-signing-poduction' - AuthCertName: 'appcenter-codesigning-auth' - AuthSignCertName: 'CodeSigning-Certificate-Managed' + ConnectedServiceName: 'App Center - Code Signing (PME)' + UseMSIAuthentication: true + AppRegistrationClientId: $(codesigning-msi-client-id) + AppRegistrationTenantId: $(codesigning-msi-tenant-id) + EsrpClientId: $(codesigning-esrp-client-id) + AuthAKVName: 'ac-code-signing' + AuthSignCertName: 'CodeSigning-Certificate-Managed' FolderPath: '$(System.DefaultWorkingDirectory)/' Pattern: 'Microsoft.AppCenter*.nupkg' signConfigType: inlineSignParams diff --git a/AppCenter-Demo.sln b/AppCenter-Demo.sln index 5d94cad25..ca9ab8a4a 100644 --- a/AppCenter-Demo.sln +++ b/AppCenter-Demo.sln @@ -5,22 +5,10 @@ VisualStudioVersion = 16.0.29209.152 MinimumVisualStudioVersion = 10.0.40219.1 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Apps", "Apps", "{274AB35C-68B4-4EFA-803B-8A7CFEC25EFC}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Contoso.Forms.Demo", "Contoso.Forms.Demo", "{91CEE2C9-F64C-45C9-9353-B1EC87D13C6D}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Contoso.Forms.Demo", "Apps\Contoso.Forms.Demo\Contoso.Forms.Demo\Contoso.Forms.Demo.csproj", "{8E7B51FC-8A9B-49F7-A40D-4D12BBF893B6}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Contoso.Forms.Demo.Droid", "Apps\Contoso.Forms.Demo\Contoso.Forms.Demo.Droid\Contoso.Forms.Demo.Droid.csproj", "{3B39B339-86C4-47EF-8F85-811220494CA6}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Contoso.Forms.Demo.iOS", "Apps\Contoso.Forms.Demo\Contoso.Forms.Demo.iOS\Contoso.Forms.Demo.iOS.csproj", "{EB8F7B8E-5013-4C0C-9C32-59ADC5FDFDBD}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Contoso.Forms.Demo.UWP", "Apps\Contoso.Forms.Demo\Contoso.Forms.Demo.UWP\Contoso.Forms.Demo.UWP.csproj", "{665362D9-5EE2-45DE-A907-25DC86999A68}" -EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Contoso.UtilClassLibrary", "Apps\Contoso.UtilClassLibrary\Contoso.UtilClassLibrary.csproj", "{2AF3281C-D928-4886-9C68-775DADA56789}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Contoso.UWP.Demo", "Apps\Contoso.UWP.Demo\Contoso.UWP.Demo.csproj", "{612D30FE-E1F1-4CEE-8256-911C03A16890}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Contoso.Forms.Demo.MacOS", "Apps\Contoso.Forms.Demo\Contoso.Forms.Demo.MacOS\Contoso.Forms.Demo.MacOS.csproj", "{85B05946-0E5A-4AFE-88E8-079D6AA9D3D6}" -EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Ad-Hoc|Any CPU = Ad-Hoc|Any CPU diff --git a/AppCenter-Mac.sln b/AppCenter-Mac.sln index 7a368e671..afc90df48 100644 --- a/AppCenter-Mac.sln +++ b/AppCenter-Mac.sln @@ -21,18 +21,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AppCenter.Crashes EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Apps", "Apps", "{274AB35C-68B4-4EFA-803B-8A7CFEC25EFC}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Contoso.Forms.Puppet", "Contoso.Forms.Puppet", "{088DA4BA-0AFB-4690-A639-7559BE14D0C8}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Contoso.Forms.Puppet", "Apps\Contoso.Forms.Puppet\Contoso.Forms.Puppet\Contoso.Forms.Puppet.csproj", "{92313C69-3BC4-4276-A1C8-100C86183F12}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Contoso.Forms.Puppet.Droid", "Apps\Contoso.Forms.Puppet\Contoso.Forms.Puppet.Droid\Contoso.Forms.Puppet.Droid.csproj", "{CBA94940-CBFA-4342-AA71-856FD863DDD0}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Contoso.Forms.Puppet.iOS", "Apps\Contoso.Forms.Puppet\Contoso.Forms.Puppet.iOS\Contoso.Forms.Puppet.iOS.csproj", "{B4CF8897-4030-445F-81C4-6DBA81F26AAC}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Contoso.Android.Puppet", "Apps\Contoso.Android.Puppet\Contoso.Android.Puppet.csproj", "{B189FF90-B901-4DA6-98EE-34474032FFCC}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Contoso.iOS.Puppet", "Apps\Contoso.iOS.Puppet\Contoso.iOS.Puppet.csproj", "{7595F47D-11D6-4716-BDE6-264C1AFBFFB5}" -EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "AppCenterDistribute", "AppCenterDistribute", "{B0562DBB-3784-4F1C-A355-61CFD44ED963}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AppCenter.Distribute.Android", "SDK\AppCenterDistribute\Microsoft.AppCenter.Distribute.Android\Microsoft.AppCenter.Distribute.Android.csproj", "{AD38DEE9-8A74-4B04-93C3-0831B55E7254}" @@ -41,10 +29,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AppCenter.Distrib EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Contoso.UtilClassLibrary", "Apps\Contoso.UtilClassLibrary\Contoso.UtilClassLibrary.csproj", "{D0FC73E2-AE97-495B-B41B-61CD422A8AE9}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Contoso.MacOS.Puppet", "Apps\Contoso.MacOS.Puppet\Contoso.MacOS.Puppet.csproj", "{83AAE9C7-04A6-447E-AE5F-07C8E0A509A8}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Contoso.Forms.Puppet.MacOS", "Apps\Contoso.Forms.Puppet\Contoso.Forms.Puppet.MacOS\Contoso.Forms.Puppet.MacOS.csproj", "{C5B1AC34-F9F1-4C05-AF7A-CB84C16C5481}" -EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AppCenter.Android", "SDK\AppCenter\Microsoft.AppCenter.Android\Microsoft.AppCenter.Android.csproj", "{B4868C2D-9475-4AF9-9E23-5501EA6468E7}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AppCenter.Android.Mono", "SDK\AppCenter\Microsoft.AppCenter.Android\Microsoft.AppCenter.Android.Mono.csproj", "{D2D22A09-FF21-4861-839D-CF388EBF8767}" @@ -351,310 +335,6 @@ Global {D6DB87CA-B8EC-4A38-805F-AFDC7FEC38EB}.Release|x64.Build.0 = Release|Any CPU {D6DB87CA-B8EC-4A38-805F-AFDC7FEC38EB}.Release|x86.ActiveCfg = Release|Any CPU {D6DB87CA-B8EC-4A38-805F-AFDC7FEC38EB}.Release|x86.Build.0 = Release|Any CPU - {92313C69-3BC4-4276-A1C8-100C86183F12}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU - {92313C69-3BC4-4276-A1C8-100C86183F12}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU - {92313C69-3BC4-4276-A1C8-100C86183F12}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU - {92313C69-3BC4-4276-A1C8-100C86183F12}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU - {92313C69-3BC4-4276-A1C8-100C86183F12}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU - {92313C69-3BC4-4276-A1C8-100C86183F12}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU - {92313C69-3BC4-4276-A1C8-100C86183F12}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {92313C69-3BC4-4276-A1C8-100C86183F12}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU - {92313C69-3BC4-4276-A1C8-100C86183F12}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU - {92313C69-3BC4-4276-A1C8-100C86183F12}.Ad-Hoc|x64.Build.0 = Debug|Any CPU - {92313C69-3BC4-4276-A1C8-100C86183F12}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU - {92313C69-3BC4-4276-A1C8-100C86183F12}.Ad-Hoc|x86.Build.0 = Debug|Any CPU - {92313C69-3BC4-4276-A1C8-100C86183F12}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU - {92313C69-3BC4-4276-A1C8-100C86183F12}.AppStore|Any CPU.Build.0 = Debug|Any CPU - {92313C69-3BC4-4276-A1C8-100C86183F12}.AppStore|ARM.ActiveCfg = Debug|Any CPU - {92313C69-3BC4-4276-A1C8-100C86183F12}.AppStore|ARM.Build.0 = Debug|Any CPU - {92313C69-3BC4-4276-A1C8-100C86183F12}.AppStore|iPhone.ActiveCfg = Debug|Any CPU - {92313C69-3BC4-4276-A1C8-100C86183F12}.AppStore|iPhone.Build.0 = Debug|Any CPU - {92313C69-3BC4-4276-A1C8-100C86183F12}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {92313C69-3BC4-4276-A1C8-100C86183F12}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU - {92313C69-3BC4-4276-A1C8-100C86183F12}.AppStore|x64.ActiveCfg = Debug|Any CPU - {92313C69-3BC4-4276-A1C8-100C86183F12}.AppStore|x64.Build.0 = Debug|Any CPU - {92313C69-3BC4-4276-A1C8-100C86183F12}.AppStore|x86.ActiveCfg = Debug|Any CPU - {92313C69-3BC4-4276-A1C8-100C86183F12}.AppStore|x86.Build.0 = Debug|Any CPU - {92313C69-3BC4-4276-A1C8-100C86183F12}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {92313C69-3BC4-4276-A1C8-100C86183F12}.Debug|Any CPU.Build.0 = Debug|Any CPU - {92313C69-3BC4-4276-A1C8-100C86183F12}.Debug|ARM.ActiveCfg = Debug|Any CPU - {92313C69-3BC4-4276-A1C8-100C86183F12}.Debug|ARM.Build.0 = Debug|Any CPU - {92313C69-3BC4-4276-A1C8-100C86183F12}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {92313C69-3BC4-4276-A1C8-100C86183F12}.Debug|iPhone.Build.0 = Debug|Any CPU - {92313C69-3BC4-4276-A1C8-100C86183F12}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {92313C69-3BC4-4276-A1C8-100C86183F12}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU - {92313C69-3BC4-4276-A1C8-100C86183F12}.Debug|x64.ActiveCfg = Debug|Any CPU - {92313C69-3BC4-4276-A1C8-100C86183F12}.Debug|x64.Build.0 = Debug|Any CPU - {92313C69-3BC4-4276-A1C8-100C86183F12}.Debug|x86.ActiveCfg = Debug|Any CPU - {92313C69-3BC4-4276-A1C8-100C86183F12}.Debug|x86.Build.0 = Debug|Any CPU - {92313C69-3BC4-4276-A1C8-100C86183F12}.GooglePlay|Any CPU.ActiveCfg = Release|Any CPU - {92313C69-3BC4-4276-A1C8-100C86183F12}.GooglePlay|Any CPU.Build.0 = Release|Any CPU - {92313C69-3BC4-4276-A1C8-100C86183F12}.GooglePlay|ARM.ActiveCfg = Release|Any CPU - {92313C69-3BC4-4276-A1C8-100C86183F12}.GooglePlay|ARM.Build.0 = Release|Any CPU - {92313C69-3BC4-4276-A1C8-100C86183F12}.GooglePlay|iPhone.ActiveCfg = Release|Any CPU - {92313C69-3BC4-4276-A1C8-100C86183F12}.GooglePlay|iPhone.Build.0 = Release|Any CPU - {92313C69-3BC4-4276-A1C8-100C86183F12}.GooglePlay|iPhoneSimulator.ActiveCfg = Release|Any CPU - {92313C69-3BC4-4276-A1C8-100C86183F12}.GooglePlay|iPhoneSimulator.Build.0 = Release|Any CPU - {92313C69-3BC4-4276-A1C8-100C86183F12}.GooglePlay|x64.ActiveCfg = Release|Any CPU - {92313C69-3BC4-4276-A1C8-100C86183F12}.GooglePlay|x64.Build.0 = Release|Any CPU - {92313C69-3BC4-4276-A1C8-100C86183F12}.GooglePlay|x86.ActiveCfg = Release|Any CPU - {92313C69-3BC4-4276-A1C8-100C86183F12}.GooglePlay|x86.Build.0 = Release|Any CPU - {92313C69-3BC4-4276-A1C8-100C86183F12}.Release|Any CPU.ActiveCfg = Release|Any CPU - {92313C69-3BC4-4276-A1C8-100C86183F12}.Release|Any CPU.Build.0 = Release|Any CPU - {92313C69-3BC4-4276-A1C8-100C86183F12}.Release|ARM.ActiveCfg = Release|Any CPU - {92313C69-3BC4-4276-A1C8-100C86183F12}.Release|ARM.Build.0 = Release|Any CPU - {92313C69-3BC4-4276-A1C8-100C86183F12}.Release|iPhone.ActiveCfg = Release|Any CPU - {92313C69-3BC4-4276-A1C8-100C86183F12}.Release|iPhone.Build.0 = Release|Any CPU - {92313C69-3BC4-4276-A1C8-100C86183F12}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {92313C69-3BC4-4276-A1C8-100C86183F12}.Release|iPhoneSimulator.Build.0 = Release|Any CPU - {92313C69-3BC4-4276-A1C8-100C86183F12}.Release|x64.ActiveCfg = Release|Any CPU - {92313C69-3BC4-4276-A1C8-100C86183F12}.Release|x64.Build.0 = Release|Any CPU - {92313C69-3BC4-4276-A1C8-100C86183F12}.Release|x86.ActiveCfg = Release|Any CPU - {92313C69-3BC4-4276-A1C8-100C86183F12}.Release|x86.Build.0 = Release|Any CPU - {CBA94940-CBFA-4342-AA71-856FD863DDD0}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU - {CBA94940-CBFA-4342-AA71-856FD863DDD0}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU - {CBA94940-CBFA-4342-AA71-856FD863DDD0}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU - {CBA94940-CBFA-4342-AA71-856FD863DDD0}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU - {CBA94940-CBFA-4342-AA71-856FD863DDD0}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU - {CBA94940-CBFA-4342-AA71-856FD863DDD0}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU - {CBA94940-CBFA-4342-AA71-856FD863DDD0}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {CBA94940-CBFA-4342-AA71-856FD863DDD0}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU - {CBA94940-CBFA-4342-AA71-856FD863DDD0}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU - {CBA94940-CBFA-4342-AA71-856FD863DDD0}.Ad-Hoc|x64.Build.0 = Debug|Any CPU - {CBA94940-CBFA-4342-AA71-856FD863DDD0}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU - {CBA94940-CBFA-4342-AA71-856FD863DDD0}.Ad-Hoc|x86.Build.0 = Debug|Any CPU - {CBA94940-CBFA-4342-AA71-856FD863DDD0}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU - {CBA94940-CBFA-4342-AA71-856FD863DDD0}.AppStore|Any CPU.Build.0 = Debug|Any CPU - {CBA94940-CBFA-4342-AA71-856FD863DDD0}.AppStore|ARM.ActiveCfg = Debug|Any CPU - {CBA94940-CBFA-4342-AA71-856FD863DDD0}.AppStore|ARM.Build.0 = Debug|Any CPU - {CBA94940-CBFA-4342-AA71-856FD863DDD0}.AppStore|iPhone.ActiveCfg = Debug|Any CPU - {CBA94940-CBFA-4342-AA71-856FD863DDD0}.AppStore|iPhone.Build.0 = Debug|Any CPU - {CBA94940-CBFA-4342-AA71-856FD863DDD0}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {CBA94940-CBFA-4342-AA71-856FD863DDD0}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU - {CBA94940-CBFA-4342-AA71-856FD863DDD0}.AppStore|x64.ActiveCfg = Debug|Any CPU - {CBA94940-CBFA-4342-AA71-856FD863DDD0}.AppStore|x64.Build.0 = Debug|Any CPU - {CBA94940-CBFA-4342-AA71-856FD863DDD0}.AppStore|x86.ActiveCfg = Debug|Any CPU - {CBA94940-CBFA-4342-AA71-856FD863DDD0}.AppStore|x86.Build.0 = Debug|Any CPU - {CBA94940-CBFA-4342-AA71-856FD863DDD0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {CBA94940-CBFA-4342-AA71-856FD863DDD0}.Debug|Any CPU.Build.0 = Debug|Any CPU - {CBA94940-CBFA-4342-AA71-856FD863DDD0}.Debug|ARM.ActiveCfg = Debug|Any CPU - {CBA94940-CBFA-4342-AA71-856FD863DDD0}.Debug|ARM.Build.0 = Debug|Any CPU - {CBA94940-CBFA-4342-AA71-856FD863DDD0}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {CBA94940-CBFA-4342-AA71-856FD863DDD0}.Debug|iPhone.Build.0 = Debug|Any CPU - {CBA94940-CBFA-4342-AA71-856FD863DDD0}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {CBA94940-CBFA-4342-AA71-856FD863DDD0}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU - {CBA94940-CBFA-4342-AA71-856FD863DDD0}.Debug|x64.ActiveCfg = Debug|Any CPU - {CBA94940-CBFA-4342-AA71-856FD863DDD0}.Debug|x64.Build.0 = Debug|Any CPU - {CBA94940-CBFA-4342-AA71-856FD863DDD0}.Debug|x86.ActiveCfg = Debug|Any CPU - {CBA94940-CBFA-4342-AA71-856FD863DDD0}.Debug|x86.Build.0 = Debug|Any CPU - {CBA94940-CBFA-4342-AA71-856FD863DDD0}.GooglePlay|Any CPU.ActiveCfg = GooglePlay|Any CPU - {CBA94940-CBFA-4342-AA71-856FD863DDD0}.GooglePlay|Any CPU.Build.0 = GooglePlay|Any CPU - {CBA94940-CBFA-4342-AA71-856FD863DDD0}.GooglePlay|ARM.ActiveCfg = GooglePlay|Any CPU - {CBA94940-CBFA-4342-AA71-856FD863DDD0}.GooglePlay|ARM.Build.0 = GooglePlay|Any CPU - {CBA94940-CBFA-4342-AA71-856FD863DDD0}.GooglePlay|ARM.Deploy.0 = GooglePlay|Any CPU - {CBA94940-CBFA-4342-AA71-856FD863DDD0}.GooglePlay|iPhone.ActiveCfg = GooglePlay|Any CPU - {CBA94940-CBFA-4342-AA71-856FD863DDD0}.GooglePlay|iPhone.Build.0 = GooglePlay|Any CPU - {CBA94940-CBFA-4342-AA71-856FD863DDD0}.GooglePlay|iPhone.Deploy.0 = GooglePlay|Any CPU - {CBA94940-CBFA-4342-AA71-856FD863DDD0}.GooglePlay|iPhoneSimulator.ActiveCfg = GooglePlay|Any CPU - {CBA94940-CBFA-4342-AA71-856FD863DDD0}.GooglePlay|iPhoneSimulator.Build.0 = GooglePlay|Any CPU - {CBA94940-CBFA-4342-AA71-856FD863DDD0}.GooglePlay|iPhoneSimulator.Deploy.0 = GooglePlay|Any CPU - {CBA94940-CBFA-4342-AA71-856FD863DDD0}.GooglePlay|x64.ActiveCfg = GooglePlay|Any CPU - {CBA94940-CBFA-4342-AA71-856FD863DDD0}.GooglePlay|x64.Build.0 = GooglePlay|Any CPU - {CBA94940-CBFA-4342-AA71-856FD863DDD0}.GooglePlay|x86.ActiveCfg = GooglePlay|Any CPU - {CBA94940-CBFA-4342-AA71-856FD863DDD0}.GooglePlay|x86.Build.0 = GooglePlay|Any CPU - {CBA94940-CBFA-4342-AA71-856FD863DDD0}.Release|Any CPU.ActiveCfg = Release|Any CPU - {CBA94940-CBFA-4342-AA71-856FD863DDD0}.Release|Any CPU.Build.0 = Release|Any CPU - {CBA94940-CBFA-4342-AA71-856FD863DDD0}.Release|ARM.ActiveCfg = Release|Any CPU - {CBA94940-CBFA-4342-AA71-856FD863DDD0}.Release|ARM.Build.0 = Release|Any CPU - {CBA94940-CBFA-4342-AA71-856FD863DDD0}.Release|iPhone.ActiveCfg = Release|Any CPU - {CBA94940-CBFA-4342-AA71-856FD863DDD0}.Release|iPhone.Build.0 = Release|Any CPU - {CBA94940-CBFA-4342-AA71-856FD863DDD0}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {CBA94940-CBFA-4342-AA71-856FD863DDD0}.Release|iPhoneSimulator.Build.0 = Release|Any CPU - {CBA94940-CBFA-4342-AA71-856FD863DDD0}.Release|x64.ActiveCfg = Release|Any CPU - {CBA94940-CBFA-4342-AA71-856FD863DDD0}.Release|x64.Build.0 = Release|Any CPU - {CBA94940-CBFA-4342-AA71-856FD863DDD0}.Release|x86.ActiveCfg = Release|Any CPU - {CBA94940-CBFA-4342-AA71-856FD863DDD0}.Release|x86.Build.0 = Release|Any CPU - {B4CF8897-4030-445F-81C4-6DBA81F26AAC}.Ad-Hoc|Any CPU.ActiveCfg = Debug|iPhoneSimulator - {B4CF8897-4030-445F-81C4-6DBA81F26AAC}.Ad-Hoc|Any CPU.Build.0 = Debug|iPhoneSimulator - {B4CF8897-4030-445F-81C4-6DBA81F26AAC}.Ad-Hoc|ARM.ActiveCfg = Debug|iPhoneSimulator - {B4CF8897-4030-445F-81C4-6DBA81F26AAC}.Ad-Hoc|ARM.Build.0 = Debug|iPhoneSimulator - {B4CF8897-4030-445F-81C4-6DBA81F26AAC}.Ad-Hoc|iPhone.ActiveCfg = Release|iPhone - {B4CF8897-4030-445F-81C4-6DBA81F26AAC}.Ad-Hoc|iPhone.Build.0 = Release|iPhone - {B4CF8897-4030-445F-81C4-6DBA81F26AAC}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator - {B4CF8897-4030-445F-81C4-6DBA81F26AAC}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator - {B4CF8897-4030-445F-81C4-6DBA81F26AAC}.Ad-Hoc|x64.ActiveCfg = Debug|iPhoneSimulator - {B4CF8897-4030-445F-81C4-6DBA81F26AAC}.Ad-Hoc|x64.Build.0 = Debug|iPhoneSimulator - {B4CF8897-4030-445F-81C4-6DBA81F26AAC}.Ad-Hoc|x86.ActiveCfg = Debug|iPhoneSimulator - {B4CF8897-4030-445F-81C4-6DBA81F26AAC}.Ad-Hoc|x86.Build.0 = Debug|iPhoneSimulator - {B4CF8897-4030-445F-81C4-6DBA81F26AAC}.AppStore|Any CPU.ActiveCfg = Debug|iPhoneSimulator - {B4CF8897-4030-445F-81C4-6DBA81F26AAC}.AppStore|Any CPU.Build.0 = Debug|iPhoneSimulator - {B4CF8897-4030-445F-81C4-6DBA81F26AAC}.AppStore|ARM.ActiveCfg = Debug|iPhoneSimulator - {B4CF8897-4030-445F-81C4-6DBA81F26AAC}.AppStore|ARM.Build.0 = Debug|iPhoneSimulator - {B4CF8897-4030-445F-81C4-6DBA81F26AAC}.AppStore|iPhone.ActiveCfg = Release|iPhone - {B4CF8897-4030-445F-81C4-6DBA81F26AAC}.AppStore|iPhone.Build.0 = Release|iPhone - {B4CF8897-4030-445F-81C4-6DBA81F26AAC}.AppStore|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator - {B4CF8897-4030-445F-81C4-6DBA81F26AAC}.AppStore|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator - {B4CF8897-4030-445F-81C4-6DBA81F26AAC}.AppStore|x64.ActiveCfg = Debug|iPhoneSimulator - {B4CF8897-4030-445F-81C4-6DBA81F26AAC}.AppStore|x64.Build.0 = Debug|iPhoneSimulator - {B4CF8897-4030-445F-81C4-6DBA81F26AAC}.AppStore|x86.ActiveCfg = Debug|iPhoneSimulator - {B4CF8897-4030-445F-81C4-6DBA81F26AAC}.AppStore|x86.Build.0 = Debug|iPhoneSimulator - {B4CF8897-4030-445F-81C4-6DBA81F26AAC}.Debug|Any CPU.ActiveCfg = Debug|iPhoneSimulator - {B4CF8897-4030-445F-81C4-6DBA81F26AAC}.Debug|Any CPU.Build.0 = Debug|iPhoneSimulator - {B4CF8897-4030-445F-81C4-6DBA81F26AAC}.Debug|ARM.ActiveCfg = Debug|iPhoneSimulator - {B4CF8897-4030-445F-81C4-6DBA81F26AAC}.Debug|ARM.Build.0 = Debug|iPhoneSimulator - {B4CF8897-4030-445F-81C4-6DBA81F26AAC}.Debug|iPhone.ActiveCfg = Debug|iPhone - {B4CF8897-4030-445F-81C4-6DBA81F26AAC}.Debug|iPhone.Build.0 = Debug|iPhone - {B4CF8897-4030-445F-81C4-6DBA81F26AAC}.Debug|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator - {B4CF8897-4030-445F-81C4-6DBA81F26AAC}.Debug|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator - {B4CF8897-4030-445F-81C4-6DBA81F26AAC}.Debug|x64.ActiveCfg = Debug|iPhoneSimulator - {B4CF8897-4030-445F-81C4-6DBA81F26AAC}.Debug|x64.Build.0 = Debug|iPhoneSimulator - {B4CF8897-4030-445F-81C4-6DBA81F26AAC}.Debug|x86.ActiveCfg = Debug|iPhoneSimulator - {B4CF8897-4030-445F-81C4-6DBA81F26AAC}.Debug|x86.Build.0 = Debug|iPhoneSimulator - {B4CF8897-4030-445F-81C4-6DBA81F26AAC}.GooglePlay|Any CPU.ActiveCfg = Debug|iPhoneSimulator - {B4CF8897-4030-445F-81C4-6DBA81F26AAC}.GooglePlay|ARM.ActiveCfg = Release|iPhoneSimulator - {B4CF8897-4030-445F-81C4-6DBA81F26AAC}.GooglePlay|ARM.Build.0 = Release|iPhoneSimulator - {B4CF8897-4030-445F-81C4-6DBA81F26AAC}.GooglePlay|iPhone.ActiveCfg = Debug|iPhone - {B4CF8897-4030-445F-81C4-6DBA81F26AAC}.GooglePlay|iPhone.Build.0 = Debug|iPhone - {B4CF8897-4030-445F-81C4-6DBA81F26AAC}.GooglePlay|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator - {B4CF8897-4030-445F-81C4-6DBA81F26AAC}.GooglePlay|iPhoneSimulator.Build.0 = Release|iPhoneSimulator - {B4CF8897-4030-445F-81C4-6DBA81F26AAC}.GooglePlay|x64.ActiveCfg = Release|iPhoneSimulator - {B4CF8897-4030-445F-81C4-6DBA81F26AAC}.GooglePlay|x64.Build.0 = Release|iPhoneSimulator - {B4CF8897-4030-445F-81C4-6DBA81F26AAC}.GooglePlay|x86.ActiveCfg = Release|iPhoneSimulator - {B4CF8897-4030-445F-81C4-6DBA81F26AAC}.GooglePlay|x86.Build.0 = Release|iPhoneSimulator - {B4CF8897-4030-445F-81C4-6DBA81F26AAC}.Release|Any CPU.ActiveCfg = Release|iPhone - {B4CF8897-4030-445F-81C4-6DBA81F26AAC}.Release|Any CPU.Build.0 = Release|iPhone - {B4CF8897-4030-445F-81C4-6DBA81F26AAC}.Release|ARM.ActiveCfg = Release|iPhone - {B4CF8897-4030-445F-81C4-6DBA81F26AAC}.Release|ARM.Build.0 = Release|iPhone - {B4CF8897-4030-445F-81C4-6DBA81F26AAC}.Release|iPhone.ActiveCfg = Release|iPhone - {B4CF8897-4030-445F-81C4-6DBA81F26AAC}.Release|iPhone.Build.0 = Release|iPhone - {B4CF8897-4030-445F-81C4-6DBA81F26AAC}.Release|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator - {B4CF8897-4030-445F-81C4-6DBA81F26AAC}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator - {B4CF8897-4030-445F-81C4-6DBA81F26AAC}.Release|x64.ActiveCfg = Release|iPhone - {B4CF8897-4030-445F-81C4-6DBA81F26AAC}.Release|x64.Build.0 = Release|iPhone - {B4CF8897-4030-445F-81C4-6DBA81F26AAC}.Release|x86.ActiveCfg = Release|iPhone - {B4CF8897-4030-445F-81C4-6DBA81F26AAC}.Release|x86.Build.0 = Release|iPhone - {B189FF90-B901-4DA6-98EE-34474032FFCC}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU - {B189FF90-B901-4DA6-98EE-34474032FFCC}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU - {B189FF90-B901-4DA6-98EE-34474032FFCC}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU - {B189FF90-B901-4DA6-98EE-34474032FFCC}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU - {B189FF90-B901-4DA6-98EE-34474032FFCC}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU - {B189FF90-B901-4DA6-98EE-34474032FFCC}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU - {B189FF90-B901-4DA6-98EE-34474032FFCC}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {B189FF90-B901-4DA6-98EE-34474032FFCC}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU - {B189FF90-B901-4DA6-98EE-34474032FFCC}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU - {B189FF90-B901-4DA6-98EE-34474032FFCC}.Ad-Hoc|x64.Build.0 = Debug|Any CPU - {B189FF90-B901-4DA6-98EE-34474032FFCC}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU - {B189FF90-B901-4DA6-98EE-34474032FFCC}.Ad-Hoc|x86.Build.0 = Debug|Any CPU - {B189FF90-B901-4DA6-98EE-34474032FFCC}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU - {B189FF90-B901-4DA6-98EE-34474032FFCC}.AppStore|Any CPU.Build.0 = Debug|Any CPU - {B189FF90-B901-4DA6-98EE-34474032FFCC}.AppStore|ARM.ActiveCfg = Debug|Any CPU - {B189FF90-B901-4DA6-98EE-34474032FFCC}.AppStore|ARM.Build.0 = Debug|Any CPU - {B189FF90-B901-4DA6-98EE-34474032FFCC}.AppStore|iPhone.ActiveCfg = Debug|Any CPU - {B189FF90-B901-4DA6-98EE-34474032FFCC}.AppStore|iPhone.Build.0 = Debug|Any CPU - {B189FF90-B901-4DA6-98EE-34474032FFCC}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {B189FF90-B901-4DA6-98EE-34474032FFCC}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU - {B189FF90-B901-4DA6-98EE-34474032FFCC}.AppStore|x64.ActiveCfg = Debug|Any CPU - {B189FF90-B901-4DA6-98EE-34474032FFCC}.AppStore|x64.Build.0 = Debug|Any CPU - {B189FF90-B901-4DA6-98EE-34474032FFCC}.AppStore|x86.ActiveCfg = Debug|Any CPU - {B189FF90-B901-4DA6-98EE-34474032FFCC}.AppStore|x86.Build.0 = Debug|Any CPU - {B189FF90-B901-4DA6-98EE-34474032FFCC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B189FF90-B901-4DA6-98EE-34474032FFCC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B189FF90-B901-4DA6-98EE-34474032FFCC}.Debug|ARM.ActiveCfg = Debug|Any CPU - {B189FF90-B901-4DA6-98EE-34474032FFCC}.Debug|ARM.Build.0 = Debug|Any CPU - {B189FF90-B901-4DA6-98EE-34474032FFCC}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {B189FF90-B901-4DA6-98EE-34474032FFCC}.Debug|iPhone.Build.0 = Debug|Any CPU - {B189FF90-B901-4DA6-98EE-34474032FFCC}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {B189FF90-B901-4DA6-98EE-34474032FFCC}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU - {B189FF90-B901-4DA6-98EE-34474032FFCC}.Debug|x64.ActiveCfg = Debug|Any CPU - {B189FF90-B901-4DA6-98EE-34474032FFCC}.Debug|x64.Build.0 = Debug|Any CPU - {B189FF90-B901-4DA6-98EE-34474032FFCC}.Debug|x86.ActiveCfg = Debug|Any CPU - {B189FF90-B901-4DA6-98EE-34474032FFCC}.Debug|x86.Build.0 = Debug|Any CPU - {B189FF90-B901-4DA6-98EE-34474032FFCC}.GooglePlay|Any CPU.ActiveCfg = GooglePlay|Any CPU - {B189FF90-B901-4DA6-98EE-34474032FFCC}.GooglePlay|Any CPU.Build.0 = GooglePlay|Any CPU - {B189FF90-B901-4DA6-98EE-34474032FFCC}.GooglePlay|ARM.ActiveCfg = GooglePlay|Any CPU - {B189FF90-B901-4DA6-98EE-34474032FFCC}.GooglePlay|ARM.Build.0 = GooglePlay|Any CPU - {B189FF90-B901-4DA6-98EE-34474032FFCC}.GooglePlay|ARM.Deploy.0 = GooglePlay|Any CPU - {B189FF90-B901-4DA6-98EE-34474032FFCC}.GooglePlay|iPhone.ActiveCfg = GooglePlay|Any CPU - {B189FF90-B901-4DA6-98EE-34474032FFCC}.GooglePlay|iPhone.Build.0 = GooglePlay|Any CPU - {B189FF90-B901-4DA6-98EE-34474032FFCC}.GooglePlay|iPhone.Deploy.0 = GooglePlay|Any CPU - {B189FF90-B901-4DA6-98EE-34474032FFCC}.GooglePlay|iPhoneSimulator.ActiveCfg = GooglePlay|Any CPU - {B189FF90-B901-4DA6-98EE-34474032FFCC}.GooglePlay|iPhoneSimulator.Build.0 = GooglePlay|Any CPU - {B189FF90-B901-4DA6-98EE-34474032FFCC}.GooglePlay|iPhoneSimulator.Deploy.0 = GooglePlay|Any CPU - {B189FF90-B901-4DA6-98EE-34474032FFCC}.GooglePlay|x64.ActiveCfg = GooglePlay|Any CPU - {B189FF90-B901-4DA6-98EE-34474032FFCC}.GooglePlay|x64.Build.0 = GooglePlay|Any CPU - {B189FF90-B901-4DA6-98EE-34474032FFCC}.GooglePlay|x86.ActiveCfg = GooglePlay|Any CPU - {B189FF90-B901-4DA6-98EE-34474032FFCC}.GooglePlay|x86.Build.0 = GooglePlay|Any CPU - {B189FF90-B901-4DA6-98EE-34474032FFCC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B189FF90-B901-4DA6-98EE-34474032FFCC}.Release|Any CPU.Build.0 = Release|Any CPU - {B189FF90-B901-4DA6-98EE-34474032FFCC}.Release|ARM.ActiveCfg = Release|Any CPU - {B189FF90-B901-4DA6-98EE-34474032FFCC}.Release|ARM.Build.0 = Release|Any CPU - {B189FF90-B901-4DA6-98EE-34474032FFCC}.Release|iPhone.ActiveCfg = Release|Any CPU - {B189FF90-B901-4DA6-98EE-34474032FFCC}.Release|iPhone.Build.0 = Release|Any CPU - {B189FF90-B901-4DA6-98EE-34474032FFCC}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {B189FF90-B901-4DA6-98EE-34474032FFCC}.Release|iPhoneSimulator.Build.0 = Release|Any CPU - {B189FF90-B901-4DA6-98EE-34474032FFCC}.Release|x64.ActiveCfg = Release|Any CPU - {B189FF90-B901-4DA6-98EE-34474032FFCC}.Release|x64.Build.0 = Release|Any CPU - {B189FF90-B901-4DA6-98EE-34474032FFCC}.Release|x86.ActiveCfg = Release|Any CPU - {B189FF90-B901-4DA6-98EE-34474032FFCC}.Release|x86.Build.0 = Release|Any CPU - {7595F47D-11D6-4716-BDE6-264C1AFBFFB5}.Ad-Hoc|Any CPU.ActiveCfg = Debug|iPhoneSimulator - {7595F47D-11D6-4716-BDE6-264C1AFBFFB5}.Ad-Hoc|Any CPU.Build.0 = Debug|iPhoneSimulator - {7595F47D-11D6-4716-BDE6-264C1AFBFFB5}.Ad-Hoc|ARM.ActiveCfg = Debug|iPhoneSimulator - {7595F47D-11D6-4716-BDE6-264C1AFBFFB5}.Ad-Hoc|ARM.Build.0 = Debug|iPhoneSimulator - {7595F47D-11D6-4716-BDE6-264C1AFBFFB5}.Ad-Hoc|iPhone.ActiveCfg = Release|iPhone - {7595F47D-11D6-4716-BDE6-264C1AFBFFB5}.Ad-Hoc|iPhone.Build.0 = Release|iPhone - {7595F47D-11D6-4716-BDE6-264C1AFBFFB5}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator - {7595F47D-11D6-4716-BDE6-264C1AFBFFB5}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator - {7595F47D-11D6-4716-BDE6-264C1AFBFFB5}.Ad-Hoc|x64.ActiveCfg = Debug|iPhoneSimulator - {7595F47D-11D6-4716-BDE6-264C1AFBFFB5}.Ad-Hoc|x64.Build.0 = Debug|iPhoneSimulator - {7595F47D-11D6-4716-BDE6-264C1AFBFFB5}.Ad-Hoc|x86.ActiveCfg = Debug|iPhoneSimulator - {7595F47D-11D6-4716-BDE6-264C1AFBFFB5}.Ad-Hoc|x86.Build.0 = Debug|iPhoneSimulator - {7595F47D-11D6-4716-BDE6-264C1AFBFFB5}.AppStore|Any CPU.ActiveCfg = Debug|iPhoneSimulator - {7595F47D-11D6-4716-BDE6-264C1AFBFFB5}.AppStore|Any CPU.Build.0 = Debug|iPhoneSimulator - {7595F47D-11D6-4716-BDE6-264C1AFBFFB5}.AppStore|ARM.ActiveCfg = Debug|iPhoneSimulator - {7595F47D-11D6-4716-BDE6-264C1AFBFFB5}.AppStore|ARM.Build.0 = Debug|iPhoneSimulator - {7595F47D-11D6-4716-BDE6-264C1AFBFFB5}.AppStore|iPhone.ActiveCfg = Release|iPhone - {7595F47D-11D6-4716-BDE6-264C1AFBFFB5}.AppStore|iPhone.Build.0 = Release|iPhone - {7595F47D-11D6-4716-BDE6-264C1AFBFFB5}.AppStore|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator - {7595F47D-11D6-4716-BDE6-264C1AFBFFB5}.AppStore|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator - {7595F47D-11D6-4716-BDE6-264C1AFBFFB5}.AppStore|x64.ActiveCfg = Debug|iPhoneSimulator - {7595F47D-11D6-4716-BDE6-264C1AFBFFB5}.AppStore|x64.Build.0 = Debug|iPhoneSimulator - {7595F47D-11D6-4716-BDE6-264C1AFBFFB5}.AppStore|x86.ActiveCfg = Debug|iPhoneSimulator - {7595F47D-11D6-4716-BDE6-264C1AFBFFB5}.AppStore|x86.Build.0 = Debug|iPhoneSimulator - {7595F47D-11D6-4716-BDE6-264C1AFBFFB5}.Debug|Any CPU.ActiveCfg = Debug|iPhoneSimulator - {7595F47D-11D6-4716-BDE6-264C1AFBFFB5}.Debug|Any CPU.Build.0 = Debug|iPhoneSimulator - {7595F47D-11D6-4716-BDE6-264C1AFBFFB5}.Debug|ARM.ActiveCfg = Debug|iPhoneSimulator - {7595F47D-11D6-4716-BDE6-264C1AFBFFB5}.Debug|ARM.Build.0 = Debug|iPhoneSimulator - {7595F47D-11D6-4716-BDE6-264C1AFBFFB5}.Debug|iPhone.ActiveCfg = Debug|iPhone - {7595F47D-11D6-4716-BDE6-264C1AFBFFB5}.Debug|iPhone.Build.0 = Debug|iPhone - {7595F47D-11D6-4716-BDE6-264C1AFBFFB5}.Debug|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator - {7595F47D-11D6-4716-BDE6-264C1AFBFFB5}.Debug|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator - {7595F47D-11D6-4716-BDE6-264C1AFBFFB5}.Debug|x64.ActiveCfg = Debug|iPhoneSimulator - {7595F47D-11D6-4716-BDE6-264C1AFBFFB5}.Debug|x64.Build.0 = Debug|iPhoneSimulator - {7595F47D-11D6-4716-BDE6-264C1AFBFFB5}.Debug|x86.ActiveCfg = Debug|iPhoneSimulator - {7595F47D-11D6-4716-BDE6-264C1AFBFFB5}.Debug|x86.Build.0 = Debug|iPhoneSimulator - {7595F47D-11D6-4716-BDE6-264C1AFBFFB5}.GooglePlay|Any CPU.ActiveCfg = Debug|iPhoneSimulator - {7595F47D-11D6-4716-BDE6-264C1AFBFFB5}.GooglePlay|ARM.ActiveCfg = Release|iPhoneSimulator - {7595F47D-11D6-4716-BDE6-264C1AFBFFB5}.GooglePlay|ARM.Build.0 = Release|iPhoneSimulator - {7595F47D-11D6-4716-BDE6-264C1AFBFFB5}.GooglePlay|iPhone.ActiveCfg = Debug|iPhone - {7595F47D-11D6-4716-BDE6-264C1AFBFFB5}.GooglePlay|iPhone.Build.0 = Debug|iPhone - {7595F47D-11D6-4716-BDE6-264C1AFBFFB5}.GooglePlay|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator - {7595F47D-11D6-4716-BDE6-264C1AFBFFB5}.GooglePlay|iPhoneSimulator.Build.0 = Release|iPhoneSimulator - {7595F47D-11D6-4716-BDE6-264C1AFBFFB5}.GooglePlay|x64.ActiveCfg = Release|iPhoneSimulator - {7595F47D-11D6-4716-BDE6-264C1AFBFFB5}.GooglePlay|x64.Build.0 = Release|iPhoneSimulator - {7595F47D-11D6-4716-BDE6-264C1AFBFFB5}.GooglePlay|x86.ActiveCfg = Release|iPhoneSimulator - {7595F47D-11D6-4716-BDE6-264C1AFBFFB5}.GooglePlay|x86.Build.0 = Release|iPhoneSimulator - {7595F47D-11D6-4716-BDE6-264C1AFBFFB5}.Release|Any CPU.ActiveCfg = Release|iPhone - {7595F47D-11D6-4716-BDE6-264C1AFBFFB5}.Release|Any CPU.Build.0 = Release|iPhone - {7595F47D-11D6-4716-BDE6-264C1AFBFFB5}.Release|ARM.ActiveCfg = Release|iPhone - {7595F47D-11D6-4716-BDE6-264C1AFBFFB5}.Release|ARM.Build.0 = Release|iPhone - {7595F47D-11D6-4716-BDE6-264C1AFBFFB5}.Release|iPhone.ActiveCfg = Release|iPhone - {7595F47D-11D6-4716-BDE6-264C1AFBFFB5}.Release|iPhone.Build.0 = Release|iPhone - {7595F47D-11D6-4716-BDE6-264C1AFBFFB5}.Release|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator - {7595F47D-11D6-4716-BDE6-264C1AFBFFB5}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator - {7595F47D-11D6-4716-BDE6-264C1AFBFFB5}.Release|x64.ActiveCfg = Release|iPhone - {7595F47D-11D6-4716-BDE6-264C1AFBFFB5}.Release|x64.Build.0 = Release|iPhone - {7595F47D-11D6-4716-BDE6-264C1AFBFFB5}.Release|x86.ActiveCfg = Release|iPhone - {7595F47D-11D6-4716-BDE6-264C1AFBFFB5}.Release|x86.Build.0 = Release|iPhone {AD38DEE9-8A74-4B04-93C3-0831B55E7254}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU {AD38DEE9-8A74-4B04-93C3-0831B55E7254}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU {AD38DEE9-8A74-4B04-93C3-0831B55E7254}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU @@ -835,126 +515,6 @@ Global {D0FC73E2-AE97-495B-B41B-61CD422A8AE9}.Release|x64.Build.0 = Release|Any CPU {D0FC73E2-AE97-495B-B41B-61CD422A8AE9}.Release|x86.ActiveCfg = Release|Any CPU {D0FC73E2-AE97-495B-B41B-61CD422A8AE9}.Release|x86.Build.0 = Release|Any CPU - {83AAE9C7-04A6-447E-AE5F-07C8E0A509A8}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU - {83AAE9C7-04A6-447E-AE5F-07C8E0A509A8}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU - {83AAE9C7-04A6-447E-AE5F-07C8E0A509A8}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU - {83AAE9C7-04A6-447E-AE5F-07C8E0A509A8}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU - {83AAE9C7-04A6-447E-AE5F-07C8E0A509A8}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU - {83AAE9C7-04A6-447E-AE5F-07C8E0A509A8}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU - {83AAE9C7-04A6-447E-AE5F-07C8E0A509A8}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {83AAE9C7-04A6-447E-AE5F-07C8E0A509A8}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU - {83AAE9C7-04A6-447E-AE5F-07C8E0A509A8}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU - {83AAE9C7-04A6-447E-AE5F-07C8E0A509A8}.Ad-Hoc|x64.Build.0 = Debug|Any CPU - {83AAE9C7-04A6-447E-AE5F-07C8E0A509A8}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU - {83AAE9C7-04A6-447E-AE5F-07C8E0A509A8}.Ad-Hoc|x86.Build.0 = Debug|Any CPU - {83AAE9C7-04A6-447E-AE5F-07C8E0A509A8}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU - {83AAE9C7-04A6-447E-AE5F-07C8E0A509A8}.AppStore|Any CPU.Build.0 = Debug|Any CPU - {83AAE9C7-04A6-447E-AE5F-07C8E0A509A8}.AppStore|ARM.ActiveCfg = Debug|Any CPU - {83AAE9C7-04A6-447E-AE5F-07C8E0A509A8}.AppStore|ARM.Build.0 = Debug|Any CPU - {83AAE9C7-04A6-447E-AE5F-07C8E0A509A8}.AppStore|iPhone.ActiveCfg = Debug|Any CPU - {83AAE9C7-04A6-447E-AE5F-07C8E0A509A8}.AppStore|iPhone.Build.0 = Debug|Any CPU - {83AAE9C7-04A6-447E-AE5F-07C8E0A509A8}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {83AAE9C7-04A6-447E-AE5F-07C8E0A509A8}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU - {83AAE9C7-04A6-447E-AE5F-07C8E0A509A8}.AppStore|x64.ActiveCfg = Debug|Any CPU - {83AAE9C7-04A6-447E-AE5F-07C8E0A509A8}.AppStore|x64.Build.0 = Debug|Any CPU - {83AAE9C7-04A6-447E-AE5F-07C8E0A509A8}.AppStore|x86.ActiveCfg = Debug|Any CPU - {83AAE9C7-04A6-447E-AE5F-07C8E0A509A8}.AppStore|x86.Build.0 = Debug|Any CPU - {83AAE9C7-04A6-447E-AE5F-07C8E0A509A8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {83AAE9C7-04A6-447E-AE5F-07C8E0A509A8}.Debug|Any CPU.Build.0 = Debug|Any CPU - {83AAE9C7-04A6-447E-AE5F-07C8E0A509A8}.Debug|ARM.ActiveCfg = Debug|Any CPU - {83AAE9C7-04A6-447E-AE5F-07C8E0A509A8}.Debug|ARM.Build.0 = Debug|Any CPU - {83AAE9C7-04A6-447E-AE5F-07C8E0A509A8}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {83AAE9C7-04A6-447E-AE5F-07C8E0A509A8}.Debug|iPhone.Build.0 = Debug|Any CPU - {83AAE9C7-04A6-447E-AE5F-07C8E0A509A8}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {83AAE9C7-04A6-447E-AE5F-07C8E0A509A8}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU - {83AAE9C7-04A6-447E-AE5F-07C8E0A509A8}.Debug|x64.ActiveCfg = Debug|Any CPU - {83AAE9C7-04A6-447E-AE5F-07C8E0A509A8}.Debug|x64.Build.0 = Debug|Any CPU - {83AAE9C7-04A6-447E-AE5F-07C8E0A509A8}.Debug|x86.ActiveCfg = Debug|Any CPU - {83AAE9C7-04A6-447E-AE5F-07C8E0A509A8}.Debug|x86.Build.0 = Debug|Any CPU - {83AAE9C7-04A6-447E-AE5F-07C8E0A509A8}.GooglePlay|Any CPU.ActiveCfg = Release|Any CPU - {83AAE9C7-04A6-447E-AE5F-07C8E0A509A8}.GooglePlay|Any CPU.Build.0 = Release|Any CPU - {83AAE9C7-04A6-447E-AE5F-07C8E0A509A8}.GooglePlay|ARM.ActiveCfg = Release|Any CPU - {83AAE9C7-04A6-447E-AE5F-07C8E0A509A8}.GooglePlay|ARM.Build.0 = Release|Any CPU - {83AAE9C7-04A6-447E-AE5F-07C8E0A509A8}.GooglePlay|iPhone.ActiveCfg = Release|Any CPU - {83AAE9C7-04A6-447E-AE5F-07C8E0A509A8}.GooglePlay|iPhone.Build.0 = Release|Any CPU - {83AAE9C7-04A6-447E-AE5F-07C8E0A509A8}.GooglePlay|iPhoneSimulator.ActiveCfg = Release|Any CPU - {83AAE9C7-04A6-447E-AE5F-07C8E0A509A8}.GooglePlay|iPhoneSimulator.Build.0 = Release|Any CPU - {83AAE9C7-04A6-447E-AE5F-07C8E0A509A8}.GooglePlay|x64.ActiveCfg = Release|Any CPU - {83AAE9C7-04A6-447E-AE5F-07C8E0A509A8}.GooglePlay|x64.Build.0 = Release|Any CPU - {83AAE9C7-04A6-447E-AE5F-07C8E0A509A8}.GooglePlay|x86.ActiveCfg = Release|Any CPU - {83AAE9C7-04A6-447E-AE5F-07C8E0A509A8}.GooglePlay|x86.Build.0 = Release|Any CPU - {83AAE9C7-04A6-447E-AE5F-07C8E0A509A8}.Release|Any CPU.ActiveCfg = Release|Any CPU - {83AAE9C7-04A6-447E-AE5F-07C8E0A509A8}.Release|Any CPU.Build.0 = Release|Any CPU - {83AAE9C7-04A6-447E-AE5F-07C8E0A509A8}.Release|ARM.ActiveCfg = Release|Any CPU - {83AAE9C7-04A6-447E-AE5F-07C8E0A509A8}.Release|ARM.Build.0 = Release|Any CPU - {83AAE9C7-04A6-447E-AE5F-07C8E0A509A8}.Release|iPhone.ActiveCfg = Release|Any CPU - {83AAE9C7-04A6-447E-AE5F-07C8E0A509A8}.Release|iPhone.Build.0 = Release|Any CPU - {83AAE9C7-04A6-447E-AE5F-07C8E0A509A8}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {83AAE9C7-04A6-447E-AE5F-07C8E0A509A8}.Release|iPhoneSimulator.Build.0 = Release|Any CPU - {83AAE9C7-04A6-447E-AE5F-07C8E0A509A8}.Release|x64.ActiveCfg = Release|Any CPU - {83AAE9C7-04A6-447E-AE5F-07C8E0A509A8}.Release|x64.Build.0 = Release|Any CPU - {83AAE9C7-04A6-447E-AE5F-07C8E0A509A8}.Release|x86.ActiveCfg = Release|Any CPU - {83AAE9C7-04A6-447E-AE5F-07C8E0A509A8}.Release|x86.Build.0 = Release|Any CPU - {C5B1AC34-F9F1-4C05-AF7A-CB84C16C5481}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU - {C5B1AC34-F9F1-4C05-AF7A-CB84C16C5481}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU - {C5B1AC34-F9F1-4C05-AF7A-CB84C16C5481}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU - {C5B1AC34-F9F1-4C05-AF7A-CB84C16C5481}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU - {C5B1AC34-F9F1-4C05-AF7A-CB84C16C5481}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU - {C5B1AC34-F9F1-4C05-AF7A-CB84C16C5481}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU - {C5B1AC34-F9F1-4C05-AF7A-CB84C16C5481}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {C5B1AC34-F9F1-4C05-AF7A-CB84C16C5481}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU - {C5B1AC34-F9F1-4C05-AF7A-CB84C16C5481}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU - {C5B1AC34-F9F1-4C05-AF7A-CB84C16C5481}.Ad-Hoc|x64.Build.0 = Debug|Any CPU - {C5B1AC34-F9F1-4C05-AF7A-CB84C16C5481}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU - {C5B1AC34-F9F1-4C05-AF7A-CB84C16C5481}.Ad-Hoc|x86.Build.0 = Debug|Any CPU - {C5B1AC34-F9F1-4C05-AF7A-CB84C16C5481}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU - {C5B1AC34-F9F1-4C05-AF7A-CB84C16C5481}.AppStore|Any CPU.Build.0 = Debug|Any CPU - {C5B1AC34-F9F1-4C05-AF7A-CB84C16C5481}.AppStore|ARM.ActiveCfg = Debug|Any CPU - {C5B1AC34-F9F1-4C05-AF7A-CB84C16C5481}.AppStore|ARM.Build.0 = Debug|Any CPU - {C5B1AC34-F9F1-4C05-AF7A-CB84C16C5481}.AppStore|iPhone.ActiveCfg = Debug|Any CPU - {C5B1AC34-F9F1-4C05-AF7A-CB84C16C5481}.AppStore|iPhone.Build.0 = Debug|Any CPU - {C5B1AC34-F9F1-4C05-AF7A-CB84C16C5481}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {C5B1AC34-F9F1-4C05-AF7A-CB84C16C5481}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU - {C5B1AC34-F9F1-4C05-AF7A-CB84C16C5481}.AppStore|x64.ActiveCfg = Debug|Any CPU - {C5B1AC34-F9F1-4C05-AF7A-CB84C16C5481}.AppStore|x64.Build.0 = Debug|Any CPU - {C5B1AC34-F9F1-4C05-AF7A-CB84C16C5481}.AppStore|x86.ActiveCfg = Debug|Any CPU - {C5B1AC34-F9F1-4C05-AF7A-CB84C16C5481}.AppStore|x86.Build.0 = Debug|Any CPU - {C5B1AC34-F9F1-4C05-AF7A-CB84C16C5481}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {C5B1AC34-F9F1-4C05-AF7A-CB84C16C5481}.Debug|Any CPU.Build.0 = Debug|Any CPU - {C5B1AC34-F9F1-4C05-AF7A-CB84C16C5481}.Debug|ARM.ActiveCfg = Debug|Any CPU - {C5B1AC34-F9F1-4C05-AF7A-CB84C16C5481}.Debug|ARM.Build.0 = Debug|Any CPU - {C5B1AC34-F9F1-4C05-AF7A-CB84C16C5481}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {C5B1AC34-F9F1-4C05-AF7A-CB84C16C5481}.Debug|iPhone.Build.0 = Debug|Any CPU - {C5B1AC34-F9F1-4C05-AF7A-CB84C16C5481}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {C5B1AC34-F9F1-4C05-AF7A-CB84C16C5481}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU - {C5B1AC34-F9F1-4C05-AF7A-CB84C16C5481}.Debug|x64.ActiveCfg = Debug|Any CPU - {C5B1AC34-F9F1-4C05-AF7A-CB84C16C5481}.Debug|x64.Build.0 = Debug|Any CPU - {C5B1AC34-F9F1-4C05-AF7A-CB84C16C5481}.Debug|x86.ActiveCfg = Debug|Any CPU - {C5B1AC34-F9F1-4C05-AF7A-CB84C16C5481}.Debug|x86.Build.0 = Debug|Any CPU - {C5B1AC34-F9F1-4C05-AF7A-CB84C16C5481}.GooglePlay|Any CPU.ActiveCfg = Release|Any CPU - {C5B1AC34-F9F1-4C05-AF7A-CB84C16C5481}.GooglePlay|Any CPU.Build.0 = Release|Any CPU - {C5B1AC34-F9F1-4C05-AF7A-CB84C16C5481}.GooglePlay|ARM.ActiveCfg = Release|Any CPU - {C5B1AC34-F9F1-4C05-AF7A-CB84C16C5481}.GooglePlay|ARM.Build.0 = Release|Any CPU - {C5B1AC34-F9F1-4C05-AF7A-CB84C16C5481}.GooglePlay|iPhone.ActiveCfg = Release|Any CPU - {C5B1AC34-F9F1-4C05-AF7A-CB84C16C5481}.GooglePlay|iPhone.Build.0 = Release|Any CPU - {C5B1AC34-F9F1-4C05-AF7A-CB84C16C5481}.GooglePlay|iPhoneSimulator.ActiveCfg = Release|Any CPU - {C5B1AC34-F9F1-4C05-AF7A-CB84C16C5481}.GooglePlay|iPhoneSimulator.Build.0 = Release|Any CPU - {C5B1AC34-F9F1-4C05-AF7A-CB84C16C5481}.GooglePlay|x64.ActiveCfg = Release|Any CPU - {C5B1AC34-F9F1-4C05-AF7A-CB84C16C5481}.GooglePlay|x64.Build.0 = Release|Any CPU - {C5B1AC34-F9F1-4C05-AF7A-CB84C16C5481}.GooglePlay|x86.ActiveCfg = Release|Any CPU - {C5B1AC34-F9F1-4C05-AF7A-CB84C16C5481}.GooglePlay|x86.Build.0 = Release|Any CPU - {C5B1AC34-F9F1-4C05-AF7A-CB84C16C5481}.Release|Any CPU.ActiveCfg = Release|Any CPU - {C5B1AC34-F9F1-4C05-AF7A-CB84C16C5481}.Release|Any CPU.Build.0 = Release|Any CPU - {C5B1AC34-F9F1-4C05-AF7A-CB84C16C5481}.Release|ARM.ActiveCfg = Release|Any CPU - {C5B1AC34-F9F1-4C05-AF7A-CB84C16C5481}.Release|ARM.Build.0 = Release|Any CPU - {C5B1AC34-F9F1-4C05-AF7A-CB84C16C5481}.Release|iPhone.ActiveCfg = Release|Any CPU - {C5B1AC34-F9F1-4C05-AF7A-CB84C16C5481}.Release|iPhone.Build.0 = Release|Any CPU - {C5B1AC34-F9F1-4C05-AF7A-CB84C16C5481}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {C5B1AC34-F9F1-4C05-AF7A-CB84C16C5481}.Release|iPhoneSimulator.Build.0 = Release|Any CPU - {C5B1AC34-F9F1-4C05-AF7A-CB84C16C5481}.Release|x64.ActiveCfg = Release|Any CPU - {C5B1AC34-F9F1-4C05-AF7A-CB84C16C5481}.Release|x64.Build.0 = Release|Any CPU - {C5B1AC34-F9F1-4C05-AF7A-CB84C16C5481}.Release|x86.ActiveCfg = Release|Any CPU - {C5B1AC34-F9F1-4C05-AF7A-CB84C16C5481}.Release|x86.Build.0 = Release|Any CPU {B4868C2D-9475-4AF9-9E23-5501EA6468E7}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU {B4868C2D-9475-4AF9-9E23-5501EA6468E7}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU {B4868C2D-9475-4AF9-9E23-5501EA6468E7}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU @@ -1927,18 +1487,10 @@ Global {0F13E444-717E-460A-BDE7-8AD537F0A418} = {C4C63221-60D5-412B-92CC-D59A8EA62E23} {302F0881-77AE-4CCE-ACF4-930AD5D4FB08} = {7FAAA086-4453-4B62-AD9A-2E2ED216E3C4} {D6DB87CA-B8EC-4A38-805F-AFDC7FEC38EB} = {7FAAA086-4453-4B62-AD9A-2E2ED216E3C4} - {088DA4BA-0AFB-4690-A639-7559BE14D0C8} = {274AB35C-68B4-4EFA-803B-8A7CFEC25EFC} - {92313C69-3BC4-4276-A1C8-100C86183F12} = {088DA4BA-0AFB-4690-A639-7559BE14D0C8} - {CBA94940-CBFA-4342-AA71-856FD863DDD0} = {088DA4BA-0AFB-4690-A639-7559BE14D0C8} - {B4CF8897-4030-445F-81C4-6DBA81F26AAC} = {088DA4BA-0AFB-4690-A639-7559BE14D0C8} - {B189FF90-B901-4DA6-98EE-34474032FFCC} = {274AB35C-68B4-4EFA-803B-8A7CFEC25EFC} - {7595F47D-11D6-4716-BDE6-264C1AFBFFB5} = {274AB35C-68B4-4EFA-803B-8A7CFEC25EFC} {B0562DBB-3784-4F1C-A355-61CFD44ED963} = {8CDD4942-2E48-4CF7-AC99-85718F238455} {AD38DEE9-8A74-4B04-93C3-0831B55E7254} = {B0562DBB-3784-4F1C-A355-61CFD44ED963} {41FEBC72-C12B-47E1-B6F6-51D50158C825} = {B0562DBB-3784-4F1C-A355-61CFD44ED963} {D0FC73E2-AE97-495B-B41B-61CD422A8AE9} = {274AB35C-68B4-4EFA-803B-8A7CFEC25EFC} - {83AAE9C7-04A6-447E-AE5F-07C8E0A509A8} = {274AB35C-68B4-4EFA-803B-8A7CFEC25EFC} - {C5B1AC34-F9F1-4C05-AF7A-CB84C16C5481} = {088DA4BA-0AFB-4690-A639-7559BE14D0C8} {B4868C2D-9475-4AF9-9E23-5501EA6468E7} = {13744327-9529-490B-A970-06A1D3144117} {D2D22A09-FF21-4861-839D-CF388EBF8767} = {13744327-9529-490B-A970-06A1D3144117} {0FA36642-1B28-48E7-8371-17EBA11556C1} = {13744327-9529-490B-A970-06A1D3144117} diff --git a/AppCenter-Windows.sln b/AppCenter-Windows.sln index 34bd284de..c93ac0c8e 100644 --- a/AppCenter-Windows.sln +++ b/AppCenter-Windows.sln @@ -51,12 +51,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AppCenter.Test.Wi EndProject Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "Microsoft.AppCenter.Test.WindowsDesktop.Shared", "Tests\Microsoft.AppCenter.Test.WindowsDesktop.Shared\Microsoft.AppCenter.Test.WindowsDesktop.Shared.shproj", "{09F38506-8DEF-431D-A749-DF7E73A719F0}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Contoso.Forms.Puppet", "Contoso.Forms.Puppet", "{AC1B688C-2519-4C40-9F23-D4021C30E115}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Contoso.Forms.Puppet", "Apps\Contoso.Forms.Puppet\Contoso.Forms.Puppet\Contoso.Forms.Puppet.csproj", "{92313C69-3BC4-4276-A1C8-100C86183F12}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Contoso.Forms.Puppet.UWP", "Apps\Contoso.Forms.Puppet\Contoso.Forms.Puppet.UWP\Contoso.Forms.Puppet.UWP.csproj", "{F2E21B65-DF87-40F0-BB2E-E67E728B86DA}" -EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Contoso.UWP.Demo", "Apps\Contoso.UWP.Demo\Contoso.UWP.Demo.csproj", "{612D30FE-E1F1-4CEE-8256-911C03A16890}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Contoso.UWP.Puppet", "Apps\Contoso.UWP.Puppet\Contoso.UWP.Puppet.csproj", "{2F81AF7B-06FC-4163-859A-979F375330FF}" diff --git a/Apps/Contoso.Android.Puppet/Assets/AboutAssets.txt b/Apps/Contoso.Android.Puppet/Assets/AboutAssets.txt deleted file mode 100644 index ee3988629..000000000 --- a/Apps/Contoso.Android.Puppet/Assets/AboutAssets.txt +++ /dev/null @@ -1,19 +0,0 @@ -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 you 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"); \ No newline at end of file diff --git a/Apps/Contoso.Android.Puppet/Constants.cs b/Apps/Contoso.Android.Puppet/Constants.cs deleted file mode 100644 index 70711ba91..000000000 --- a/Apps/Contoso.Android.Puppet/Constants.cs +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -namespace Contoso.Android.Puppet -{ - public static class Constants - { - public const string Verbose = "Verbose"; - public const string Debug = "Debug"; - public const string Info = "Info"; - public const string Warning = "Warning"; - public const string Error = "Error"; - public const string StorageSizeKey = "StorageSizeKey"; - public const string EnableManualSessionTrackerKey = "EnableManualSessionTrackerKey"; - } -} diff --git a/Apps/Contoso.Android.Puppet/Contoso.Android.Puppet.csproj b/Apps/Contoso.Android.Puppet/Contoso.Android.Puppet.csproj deleted file mode 100644 index a6da483c6..000000000 --- a/Apps/Contoso.Android.Puppet/Contoso.Android.Puppet.csproj +++ /dev/null @@ -1,320 +0,0 @@ - - - - - - Debug - AnyCPU - 8.0.30703 - 2.0 - {B189FF90-B901-4DA6-98EE-34474032FFCC} - {EFBA0AD7-5A72-4C68-AF49-83D382785DCF};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} - Library - Properties - Contoso.Android.Puppet - Contoso.Android.Puppet - 512 - true - Resources\Resource.Designer.cs - Off - v11.0 - Properties\AndroidManifest.xml - - - - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - True - None - r8 - - - - true - bin\Release\ - TRACE - prompt - 4 - False - Full - true - r8 - - - - true - bin\GooglePlay - TRACE - prompt - 4 - False - Full - true - r8 - - - am start -e "XAMARIN_ANDROID_INT" "{XAMARIN_ANDROID_INT}" -n "com.microsoft.appcenter.xamarin.puppet/Contoso.Android.Puppet.MainActivity" - - - - - - - - - - ..\..\packages\Xamarin.AndroidX.Annotation.Experimental.1.1.0.1\lib\monoandroid90\Xamarin.AndroidX.Annotation.Experimental.dll - - - - - ..\..\packages\Xamarin.AndroidX.MultiDex.2.0.1.5\lib\monoandroid90\Xamarin.AndroidX.MultiDex.dll - - - ..\..\packages\Xamarin.AndroidX.Annotation.1.2.0.1\lib\monoandroid90\Xamarin.AndroidX.Annotation.dll - - - ..\..\packages\Xamarin.AndroidX.Arch.Core.Common.2.1.0.9\lib\monoandroid90\Xamarin.AndroidX.Arch.Core.Common.dll - - - ..\..\packages\Xamarin.AndroidX.Arch.Core.Runtime.2.1.0.9\lib\monoandroid90\Xamarin.AndroidX.Arch.Core.Runtime.dll - - - ..\..\packages\Xamarin.AndroidX.Collection.1.1.0.8\lib\monoandroid90\Xamarin.AndroidX.Collection.dll - - - ..\..\packages\Xamarin.AndroidX.Lifecycle.Common.2.3.1.1\lib\monoandroid90\Xamarin.AndroidX.Lifecycle.Common.dll - - - ..\..\packages\Xamarin.AndroidX.Lifecycle.Runtime.2.3.1.2\lib\monoandroid90\Xamarin.AndroidX.Lifecycle.Runtime.dll - - - ..\..\packages\Xamarin.AndroidX.VersionedParcelable.1.1.1.8\lib\monoandroid90\Xamarin.AndroidX.VersionedParcelable.dll - - - ..\..\packages\Xamarin.AndroidX.Core.1.6.0.1\lib\monoandroid90\Xamarin.AndroidX.Core.dll - - - ..\..\packages\Xamarin.AndroidX.Lifecycle.LiveData.Core.2.3.1.1\lib\monoandroid90\Xamarin.AndroidX.Lifecycle.LiveData.Core.dll - - - ..\..\packages\Xamarin.AndroidX.Lifecycle.ViewModel.2.3.1.1\lib\monoandroid90\Xamarin.AndroidX.Lifecycle.ViewModel.dll - - - ..\..\packages\Xamarin.AndroidX.SavedState.1.1.0.2\lib\monoandroid90\Xamarin.AndroidX.SavedState.dll - - - ..\..\packages\Xamarin.AndroidX.Lifecycle.ViewModelSavedState.2.3.1.1\lib\monoandroid90\Xamarin.AndroidX.Lifecycle.ViewModelSavedState.dll - - - ..\..\packages\Xamarin.AndroidX.Tracing.Tracing.1.0.0.1\lib\monoandroid90\Xamarin.AndroidX.Tracing.Tracing.dll - - - ..\..\packages\Xamarin.AndroidX.Activity.1.3.1\lib\monoandroid90\Xamarin.AndroidX.Activity.dll - - - ..\..\packages\Xamarin.AndroidX.Loader.1.1.0.8\lib\monoandroid90\Xamarin.AndroidX.Loader.dll - - - ..\..\packages\Xamarin.AndroidX.CustomView.1.1.0.7\lib\monoandroid90\Xamarin.AndroidX.CustomView.dll - - - ..\..\packages\Xamarin.AndroidX.ViewPager.1.0.0.8\lib\monoandroid90\Xamarin.AndroidX.ViewPager.dll - - - ..\..\packages\Xamarin.AndroidX.Fragment.1.3.6.1\lib\monoandroid90\Xamarin.AndroidX.Fragment.dll - - - ..\..\packages\Xamarin.AndroidX.Interpolator.1.0.0.8\lib\monoandroid90\Xamarin.AndroidX.Interpolator.dll - - - ..\..\packages\Xamarin.AndroidX.CursorAdapter.1.0.0.8\lib\monoandroid90\Xamarin.AndroidX.CursorAdapter.dll - - - ..\..\packages\Xamarin.AndroidX.RecyclerView.1.2.1.1\lib\monoandroid90\Xamarin.AndroidX.RecyclerView.dll - - - ..\..\packages\Xamarin.AndroidX.DrawerLayout.1.1.1.3\lib\monoandroid90\Xamarin.AndroidX.DrawerLayout.dll - - - ..\..\packages\Xamarin.AndroidX.VectorDrawable.1.1.0.8\lib\monoandroid90\Xamarin.AndroidX.VectorDrawable.dll - - - ..\..\packages\Xamarin.AndroidX.VectorDrawable.Animated.1.1.0.8\lib\monoandroid90\Xamarin.AndroidX.VectorDrawable.Animated.dll - - - ..\..\packages\Xamarin.AndroidX.AppCompat.AppCompatResources.1.3.1.1\lib\monoandroid90\Xamarin.AndroidX.AppCompat.AppCompatResources.dll - - - ..\..\packages\Xamarin.AndroidX.AppCompat.1.3.1.1\lib\monoandroid90\Xamarin.AndroidX.AppCompat.dll - - - ..\..\packages\Xamarin.AndroidX.CoordinatorLayout.1.1.0.8\lib\monoandroid90\Xamarin.AndroidX.CoordinatorLayout.dll - - - ..\..\packages\Xamarin.AndroidX.ConstraintLayout.Core.1.0.0\lib\monoandroid90\Xamarin.AndroidX.ConstraintLayout.Core.dll - - - ..\..\packages\Xamarin.AndroidX.ConstraintLayout.2.1.0\lib\monoandroid90\Xamarin.AndroidX.ConstraintLayout.dll - - - ..\..\packages\Xamarin.AndroidX.CardView.1.0.0.9\lib\monoandroid90\Xamarin.AndroidX.CardView.dll - - - ..\..\packages\Xamarin.AndroidX.DocumentFile.1.0.1.8\lib\monoandroid90\Xamarin.AndroidX.DocumentFile.dll - - - ..\..\packages\Xamarin.AndroidX.LocalBroadcastManager.1.0.0.8\lib\monoandroid90\Xamarin.AndroidX.LocalBroadcastManager.dll - - - ..\..\packages\Xamarin.AndroidX.Print.1.0.0.8\lib\monoandroid90\Xamarin.AndroidX.Print.dll - - - ..\..\packages\Xamarin.AndroidX.Legacy.Support.Core.Utils.1.0.0.8\lib\monoandroid90\Xamarin.AndroidX.Legacy.Support.Core.Utils.dll - - - ..\..\packages\Xamarin.AndroidX.DynamicAnimation.1.0.0.8\lib\monoandroid90\Xamarin.AndroidX.DynamicAnimation.dll - - - ..\..\packages\Xamarin.AndroidX.Transition.1.4.1.1\lib\monoandroid90\Xamarin.AndroidX.Transition.dll - - - ..\..\packages\Xamarin.AndroidX.ViewPager2.1.0.0.10\lib\monoandroid90\Xamarin.AndroidX.ViewPager2.dll - - - ..\..\packages\Xamarin.Google.Android.Material.1.4.0.2\lib\monoandroid90\Xamarin.Google.Android.Material.dll - - - - - - - - - - - - - - - - - - - - - - - - - - - Designer - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Microsoft.AppCenter.Analytics.Android.Mono - - - Microsoft.AppCenter.Android.Mono - - - Microsoft.AppCenter.Crashes.Android.Mono - - - - - Microsoft.AppCenter.Distribute.AndroidPlay.Mono - - - - - Microsoft.AppCenter.Distribute.Android.Mono - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Apps/Contoso.Android.Puppet/CrashActivity.cs b/Apps/Contoso.Android.Puppet/CrashActivity.cs deleted file mode 100644 index a2caf5c5f..000000000 --- a/Apps/Contoso.Android.Puppet/CrashActivity.cs +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Android.App; -using Android.OS; - -namespace Contoso.Android.Puppet -{ - [Activity(Label = "CrashActivity")] - public class CrashActivity : Activity - { - protected override void OnCreate(Bundle savedInstanceState) - { - // will crash with super not called, a pure Java exception with no .NET crash handler. - } - } -} diff --git a/Apps/Contoso.Android.Puppet/FakeService.cs b/Apps/Contoso.Android.Puppet/FakeService.cs deleted file mode 100644 index 973f67283..000000000 --- a/Apps/Contoso.Android.Puppet/FakeService.cs +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System.IO; -using System.Threading.Tasks; - -namespace Contoso.Android.Puppet -{ - static class FakeService - { - internal async static Task DoStuffInBackground() - { - await Task.Run(() => { throw new IOException("Server did not respond"); }); - } - } -} diff --git a/Apps/Contoso.Android.Puppet/LogLevelActivity.cs b/Apps/Contoso.Android.Puppet/LogLevelActivity.cs deleted file mode 100644 index aa8b849a9..000000000 --- a/Apps/Contoso.Android.Puppet/LogLevelActivity.cs +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Android.App; -using Android.Content; -using Android.OS; -using Android.Views; -using Android.Widget; - -namespace Contoso.Android.Puppet -{ - [Activity(Label = "LogLevelActivity")] - public class LogLevelActivity : ListActivity - { - private static readonly string[] Levels = { - Constants.Verbose, - Constants.Debug, - Constants.Info, - Constants.Warning, - Constants.Error - }; - - protected override void OnCreate(Bundle savedInstanceState) - { - base.OnCreate(savedInstanceState); - ListAdapter = new ArrayAdapter(this, global::Android.Resource.Layout.SimpleListItem1, Levels); - } - - protected override void OnListItemClick(ListView l, View v, int position, long id) - { - var intent = new Intent(); - intent.PutExtra("log_level", position); - SetResult(Result.Ok, intent); - Finish(); - } - } -} diff --git a/Apps/Contoso.Android.Puppet/MainActivity.cs b/Apps/Contoso.Android.Puppet/MainActivity.cs deleted file mode 100644 index 5e267b39d..000000000 --- a/Apps/Contoso.Android.Puppet/MainActivity.cs +++ /dev/null @@ -1,193 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System.Linq; -using Android.Content; -using Android.Content.PM; -using Android.OS; -using Android.App; -using AndroidX.AppCompat.App; -using Microsoft.AppCenter; -using Microsoft.AppCenter.Analytics; -using Microsoft.AppCenter.Crashes; -using Microsoft.AppCenter.Distribute; -using Google.Android.Material.BottomNavigation; -using Android.Views; - -namespace Contoso.Android.Puppet -{ - using AlertDialog = global::Android.App.AlertDialog; - - [Activity(Label = "SXPuppet", Icon = "@drawable/icon", Theme = "@style/PuppetTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)] - [System.Obsolete] - public class MainActivity : AppCompatActivity, BottomNavigationView.IOnNavigationItemSelectedListener - { - const string LogTag = "AppCenterXamarinPuppet"; - - protected override void OnCreate(Bundle savedInstanceState) - { - base.OnCreate(savedInstanceState); - - // Set our view from the "main" layout resource - SetContentView(Resource.Layout.Main); - - // Init bottom menu. - BottomNavigationView navigation = FindViewById(Resource.Id.bottom_navigation); - navigation.SetOnNavigationItemSelectedListener(this); - UpdateFragment(new AppCenterFragment(), Resource.String.AppCenterTitle); - - // App Center integration - AppCenterLog.Assert(LogTag, "AppCenter.LogLevel=" + AppCenter.LogLevel); - AppCenter.LogLevel = LogLevel.Verbose; - AppCenterLog.Info(LogTag, "AppCenter.LogLevel=" + AppCenter.LogLevel); - AppCenterLog.Info(LogTag, "AppCenter.Configured=" + AppCenter.Configured); - - // Set event handlers - Crashes.SendingErrorReport += SendingErrorReportHandler; - Crashes.SentErrorReport += SentErrorReportHandler; - Crashes.FailedToSendErrorReport += FailedToSendErrorReportHandler; - // Set callbacks - Crashes.ShouldProcessErrorReport = ShouldProcess; - Crashes.ShouldAwaitUserConfirmation = ConfirmationHandler; - - Distribute.ReleaseAvailable = OnReleaseAvailable; - Distribute.NoReleaseAvailable = OnNoReleaseAvailable; - AppCenterLog.Assert(LogTag, "AppCenter.Configured=" + AppCenter.Configured); - AppCenter.SetLogUrl("https://in-integration.dev.avalanch.es"); - var prefs = GetSharedPreferences("AppCenter", FileCreationMode.Private); - var storageSizeValue = prefs.GetLong(Constants.StorageSizeKey, 0); - if (storageSizeValue > 0) - { - AppCenter.SetMaxStorageSizeAsync(storageSizeValue); - } - if (prefs.GetBoolean(Constants.EnableManualSessionTrackerKey, false)) - { - Analytics.EnableManualSessionTracker(); - } - Distribute.SetInstallUrl("https://install.portal-server-core-integration.dev.avalanch.es"); - Distribute.SetApiUrl("https://asgard-int.trafficmanager.net/api/v0.1"); - var appCenterSecret = Intent.GetStringExtra("XAMARIN_ANDROID_INT"); - AppCenter.Start(appCenterSecret, typeof(Analytics), typeof(Crashes), typeof(Distribute)); - AppCenter.IsEnabledAsync().ContinueWith(enabled => - { - AppCenterLog.Info(LogTag, "AppCenter.Enabled=" + enabled.Result); - }); - AppCenter.GetInstallIdAsync().ContinueWith(installId => - { - AppCenterLog.Info(LogTag, "AppCenter.InstallId=" + installId.Result); - }); - Crashes.HasCrashedInLastSessionAsync().ContinueWith(hasCrashed => - { - AppCenterLog.Info(LogTag, "Crashes.HasCrashedInLastSession=" + hasCrashed.Result); - }); - Crashes.GetLastSessionCrashReportAsync().ContinueWith(report => - { - AppCenterLog.Info(LogTag, "Crashes.LastSessionCrashReport.DotNetStackTrace=" + report.Result?.StackTrace); - AppCenterLog.Info(LogTag, "Crashes.LastSessionCrashReport.JavaStackTrace=" + report.Result?.AndroidDetails?.StackTrace); - }); - } - - void SendingErrorReportHandler(object sender, SendingErrorReportEventArgs e) - { - AppCenterLog.Info(LogTag, "Sending error report"); - } - - void SentErrorReportHandler(object sender, SentErrorReportEventArgs e) - { - AppCenterLog.Info(LogTag, "Sent error report"); - } - - void FailedToSendErrorReportHandler(object sender, FailedToSendErrorReportEventArgs e) - { - AppCenterLog.Info(LogTag, "Failed to send error report"); - } - - bool ShouldProcess(ErrorReport report) - { - AppCenterLog.Info(LogTag, "Determining whether to process error report"); - return true; - } - - bool ConfirmationHandler() - { - var builder = new AlertDialog.Builder(this); - builder.SetTitle(Resource.String.crash_confirmation_dialog_title); - builder.SetMessage(Resource.String.crash_confirmation_dialog_message); - builder.SetPositiveButton(Resource.String.crash_confirmation_dialog_send_button, delegate - { - Crashes.NotifyUserConfirmation(UserConfirmation.Send); - }); - builder.SetNegativeButton(Resource.String.crash_confirmation_dialog_not_send_button, delegate - { - Crashes.NotifyUserConfirmation(UserConfirmation.DontSend); - }); - builder.SetNeutralButton(Resource.String.crash_confirmation_dialog_always_send_button, delegate - { - Crashes.NotifyUserConfirmation(UserConfirmation.AlwaysSend); - }); - builder.Create().Show(); - return true; - } - - void OnNoReleaseAvailable() - { - AppCenterLog.Info(LogTag, "No release available callback invoked."); - } - - bool OnReleaseAvailable(ReleaseDetails releaseDetails) - { - AppCenterLog.Info(LogTag, "OnReleaseAvailable id=" + releaseDetails.Id - + " version=" + releaseDetails.Version - + " releaseNotesUrl=" + releaseDetails.ReleaseNotesUrl); - var custom = releaseDetails.ReleaseNotes?.ToLowerInvariant().Contains("custom") ?? false; - if (custom) - { - var builder = new AlertDialog.Builder(this); - builder.SetTitle(string.Format(GetString(Resource.String.version_x_available), releaseDetails.ShortVersion)); - builder.SetMessage(releaseDetails.ReleaseNotes); - builder.SetPositiveButton(Resource.String.appcenter_distribute_update_dialog_download, delegate - { - Distribute.NotifyUpdateAction(UpdateAction.Update); - }); - builder.SetCancelable(false); - if (!releaseDetails.MandatoryUpdate) - { - builder.SetNegativeButton(Resource.String.appcenter_distribute_update_dialog_postpone, delegate - { - Distribute.NotifyUpdateAction(UpdateAction.Postpone); - }); - } - builder.Create().Show(); - } - return custom; - } - - public bool OnNavigationItemSelected(IMenuItem item) - { - switch (item.ItemId) - { - case Resource.Id.navigation_core: - UpdateFragment(new AppCenterFragment(), Resource.String.AppCenterTitle); - return true; - case Resource.Id.navigation_analytics: - UpdateFragment(new AnalyticsFragment(), Resource.String.AnalyticsTitle); - return true; - case Resource.Id.navigation_crashes: - UpdateFragment(new CrashesFragment(), Resource.String.CrashesTitle); - return true; - case Resource.Id.navigation_other: - UpdateFragment(new OthersFragment(), Resource.String.OthersTitle); - return true; - } - return false; - } - - private void UpdateFragment(PageFragment page, int titleId) - { - Title = Resources.GetString(titleId); - SupportFragmentManager.BeginTransaction() - .Replace(Resource.Id.content_frame, page) - .Commit(); - } - } -} diff --git a/Apps/Contoso.Android.Puppet/ModulePages/AnalyticsFragment.cs b/Apps/Contoso.Android.Puppet/ModulePages/AnalyticsFragment.cs deleted file mode 100644 index 440bb63aa..000000000 --- a/Apps/Contoso.Android.Puppet/ModulePages/AnalyticsFragment.cs +++ /dev/null @@ -1,132 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System; -using System.Collections.Generic; -using System.Linq; -using Android.Content; -using Android.OS; -using Android.Views; -using Android.Widget; -using Microsoft.AppCenter; -using Microsoft.AppCenter.Analytics; - -namespace Contoso.Android.Puppet -{ - using AlertDialog = global::Android.App.AlertDialog; - - public class AnalyticsFragment : PageFragment - { - private readonly IDictionary mEventProperties = new Dictionary(); - - private Switch AnalyticsEnabledSwitch; - private Switch EnableManualSessionTrackerSwitch; - private EditText EventNameText; - private TextView PropertiesCountLabel; - private Button AddPropertyButton; - private Button TrackEventButton; - private Button StartSessionButton; - - public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) - { - return inflater.Inflate(Resource.Layout.Analytics, container, false); - } - - public override void OnViewCreated(View view, Bundle savedInstanceState) - { - base.OnViewCreated(view, savedInstanceState); - - // Find views. - AnalyticsEnabledSwitch = view.FindViewById(Resource.Id.enabled_analytics) as Switch; - EnableManualSessionTrackerSwitch = view.FindViewById(Resource.Id.enable_manual_session_tracker_switch) as Switch; - EventNameText = view.FindViewById(Resource.Id.event_name) as EditText; - PropertiesCountLabel = view.FindViewById(Resource.Id.properties_count) as TextView; - AddPropertyButton = view.FindViewById(Resource.Id.add_property) as Button; - TrackEventButton = view.FindViewById(Resource.Id.track_event) as Button; - StartSessionButton = view.FindViewById(Resource.Id.start_session_button) as Button; - - // Subscribe to events. - AnalyticsEnabledSwitch.CheckedChange += UpdateEnabled; - EnableManualSessionTrackerSwitch.CheckedChange += EnableManualSessionUpdate; - ((View)PropertiesCountLabel.Parent).Click += Properties; - AddPropertyButton.Click += AddProperty; - TrackEventButton.Click += TrackEvent; - StartSessionButton.Click += StartSessionButtonClick; - - UpdateState(); - } - - protected override async void UpdateState() - { - AnalyticsEnabledSwitch.CheckedChange -= UpdateEnabled; - AnalyticsEnabledSwitch.Enabled = true; - AnalyticsEnabledSwitch.Checked = await Analytics.IsEnabledAsync(); - AnalyticsEnabledSwitch.Enabled = await AppCenter.IsEnabledAsync(); - AnalyticsEnabledSwitch.CheckedChange += UpdateEnabled; - EnableManualSessionTrackerSwitch.CheckedChange -= EnableManualSessionUpdate; - - // Set manual session tracker value. - var prefs = Context.GetSharedPreferences("AppCenter", FileCreationMode.Private); - EnableManualSessionTrackerSwitch.Checked = prefs.GetBoolean(Constants.EnableManualSessionTrackerKey, false); - EnableManualSessionTrackerSwitch.CheckedChange += EnableManualSessionUpdate; - PropertiesCountLabel.Text = mEventProperties.Count.ToString(); - } - - private async void UpdateEnabled(object sender, CompoundButton.CheckedChangeEventArgs e) - { - await Analytics.SetEnabledAsync(e.IsChecked); - AnalyticsEnabledSwitch.Checked = await Analytics.IsEnabledAsync(); - } - - private void Properties(object sender, EventArgs e) - { - var intent = new Intent(Activity, typeof(PropertiesActivity)); - intent.PutExtra("properties", mEventProperties.Select(i => i.Key + ": " + i.Value).ToArray()); - StartActivity(intent); - } - - private void AddProperty(object sender, EventArgs e) - { - var builder = new AlertDialog.Builder(Activity); - builder.SetTitle(Resource.String.add_property_dialog_title); - builder.SetMessage(Resource.String.add_property_dialog_message); - var layoutParameters = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MatchParent, - ViewGroup.LayoutParams.WrapContent); - var keyText = new EditText(Activity) { LayoutParameters = layoutParameters, Hint = "Property Name" }; - var valueText = new EditText(Activity) { LayoutParameters = layoutParameters, Hint = "Property Value" }; - var view = new LinearLayout(Activity) { Orientation = Orientation.Vertical }; - view.AddView(keyText); - view.AddView(valueText); - builder.SetView(view); - builder.SetPositiveButton(Resource.String.add_property_dialog_add_button, delegate - { - mEventProperties.Add(keyText.Text, valueText.Text); - PropertiesCountLabel.Text = mEventProperties.Count.ToString(); - }); - builder.SetNegativeButton(Resource.String.add_property_dialog_cancel_button, delegate - { - }); - builder.Create().Show(); - } - - private void TrackEvent(object sender, EventArgs e) - { - Analytics.TrackEvent(EventNameText.Text, mEventProperties.Count > 0 ? mEventProperties : null); - mEventProperties.Clear(); - PropertiesCountLabel.Text = mEventProperties.Count.ToString(); - } - - private void EnableManualSessionUpdate(object sender, CompoundButton.CheckedChangeEventArgs e) - { - var prefs = Context.GetSharedPreferences("AppCenter", FileCreationMode.Private); - var prefEditor = prefs.Edit(); - prefEditor.PutBoolean(Constants.EnableManualSessionTrackerKey, e.IsChecked); - prefEditor.Commit(); - } - - private void StartSessionButtonClick(object sender, EventArgs e) - { - Analytics.StartSession(); - } - } -} diff --git a/Apps/Contoso.Android.Puppet/ModulePages/AppCenterFragment.cs b/Apps/Contoso.Android.Puppet/ModulePages/AppCenterFragment.cs deleted file mode 100644 index 777928f50..000000000 --- a/Apps/Contoso.Android.Puppet/ModulePages/AppCenterFragment.cs +++ /dev/null @@ -1,176 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System; -using System.Collections.Generic; -using Android.Content; -using Android.OS; -using Android.Views; -using Android.Widget; -using Microsoft.AppCenter; - -namespace Contoso.Android.Puppet -{ - using Result = global::Android.App.Result; - - public class AppCenterFragment : PageFragment - { - const string LogTag = "AppCenterXamarinPuppet"; - - private static readonly IDictionary> LogFunctions = new Dictionary> { - { LogLevel.Verbose, AppCenterLog.Verbose }, - { LogLevel.Debug, AppCenterLog.Debug }, - { LogLevel.Info, AppCenterLog.Info }, - { LogLevel.Warn, AppCenterLog.Warn }, - { LogLevel.Error, AppCenterLog.Error } - }; - private static readonly IDictionary LogLevelNames = new Dictionary { - { LogLevel.Verbose, Constants.Verbose }, - { LogLevel.Debug, Constants.Debug }, - { LogLevel.Info, Constants.Info }, - { LogLevel.Warn, Constants.Warning }, - { LogLevel.Error, Constants.Error } - }; - private LogLevel mLogWriteLevel = LogLevel.Verbose; - - private Switch AppCenterEnabledSwitch; - private Switch AppCenterNetworkRequestsAllowedSwitch; - private TextView LogLevelLabel; - private EditText LogWriteMessageText; - private EditText LogWriteTagText; - private TextView LogWriteLevelLabel; - private Button LogWriteButton; - private EditText UserIdText; - private Button SaveStorageSizeButton; - private EditText StorageSizeText; - - public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) - { - return inflater.Inflate(Resource.Layout.AppCenter, container, false); - } - - public override void OnViewCreated(View view, Bundle savedInstanceState) - { - base.OnViewCreated(view, savedInstanceState); - - // Find views. - AppCenterEnabledSwitch = view.FindViewById(Resource.Id.enabled_app_center) as Switch; - AppCenterNetworkRequestsAllowedSwitch = view.FindViewById(Resource.Id.appcenter_network_requests_allowed) as Switch; - LogLevelLabel = view.FindViewById(Resource.Id.log_level) as TextView; - LogWriteMessageText = view.FindViewById(Resource.Id.write_log_message) as EditText; - LogWriteTagText = view.FindViewById(Resource.Id.write_log_tag) as EditText; - LogWriteLevelLabel = view.FindViewById(Resource.Id.write_log_level) as TextView; - LogWriteButton = view.FindViewById(Resource.Id.write_log) as Button; - UserIdText = view.FindViewById(Resource.Id.write_user_id) as EditText; - SaveStorageSizeButton = view.FindViewById(Resource.Id.save_storage_size) as Button; - StorageSizeText = view.FindViewById(Resource.Id.write_storage_size) as EditText; - - // Subscribe to events. - AppCenterEnabledSwitch.CheckedChange += UpdateEnabled; - AppCenterNetworkRequestsAllowedSwitch.CheckedChange += NetworkRequestAllowedChange; - ((View)LogLevelLabel.Parent).Click += LogLevelClicked; - ((View)LogWriteLevelLabel.Parent).Click += LogWriteLevelClicked; - LogWriteButton.Click += WriteLog; - SaveStorageSizeButton.Click += SaveStorageSize; - UserIdText.KeyPress += UserIdTextKeyPressedHandler; - - // Set max storage size value. - var prefs = Context.GetSharedPreferences("AppCenter", FileCreationMode.Private); - var storageSizeValue = prefs.GetLong(Constants.StorageSizeKey, 0); - if (storageSizeValue > 0) - { - StorageSizeText.Text = storageSizeValue.ToString(); - } - UpdateState(); - } - - protected override async void UpdateState() - { - AppCenterEnabledSwitch.CheckedChange -= UpdateEnabled; - AppCenterEnabledSwitch.Checked = await AppCenter.IsEnabledAsync(); - AppCenterEnabledSwitch.CheckedChange += UpdateEnabled; - AppCenterNetworkRequestsAllowedSwitch.CheckedChange -= NetworkRequestAllowedChange; - AppCenterNetworkRequestsAllowedSwitch.Checked = AppCenter.IsNetworkRequestsAllowed; - AppCenterNetworkRequestsAllowedSwitch.CheckedChange += NetworkRequestAllowedChange; - LogLevelLabel.Text = LogLevelNames[AppCenter.LogLevel]; - LogWriteLevelLabel.Text = LogLevelNames[mLogWriteLevel]; - } - - public override void OnActivityResult(int requestCode, int resultCode, Intent data) - { - base.OnActivityResult(requestCode, resultCode, data); - if (resultCode != (int)Result.Ok || data == null) - { - return; - } - var logLevel = (LogLevel)data.GetIntExtra("log_level", (int)LogLevel.Verbose); - switch (requestCode) - { - case 0: - AppCenter.LogLevel = logLevel; - LogLevelLabel.Text = LogLevelNames[AppCenter.LogLevel]; - break; - case 1: - mLogWriteLevel = logLevel; - LogWriteLevelLabel.Text = LogLevelNames[mLogWriteLevel]; - break; - } - } - - private async void UpdateEnabled(object sender, CompoundButton.CheckedChangeEventArgs e) - { - await AppCenter.SetEnabledAsync(e.IsChecked); - AppCenterEnabledSwitch.Checked = await AppCenter.IsEnabledAsync(); - } - - private void NetworkRequestAllowedChange(object sender, CompoundButton.CheckedChangeEventArgs e) - { - AppCenter.IsNetworkRequestsAllowed = e.IsChecked; - } - - private void LogLevelClicked(object sender, EventArgs e) - { - var intent = new Intent(Activity.ApplicationContext, typeof(LogLevelActivity)); - StartActivityForResult(intent, 0); - } - - private void LogWriteLevelClicked(object sender, EventArgs e) - { - var intent = new Intent(Activity.ApplicationContext, typeof(LogLevelActivity)); - StartActivityForResult(intent, 1); - } - - private void UserIdTextKeyPressedHandler(object sender, View.KeyEventArgs e) - { - if (e.Event.Action == KeyEventActions.Up) - { - var text = string.IsNullOrEmpty(UserIdText.Text) ? null : UserIdText.Text; - AppCenter.SetUserId(text); - } - } - - private void WriteLog(object sender, EventArgs e) - { - string message = LogWriteMessageText.Text; - string tag = LogWriteTagText.Text; - LogFunctions[mLogWriteLevel](tag, message); - } - - private void SaveStorageSize(object sender, EventArgs e) - { - var inputText = StorageSizeText.Text; - if (long.TryParse(inputText, out var result)) - { - AppCenter.SetMaxStorageSizeAsync(result); - var prefs = Context.GetSharedPreferences("AppCenter", FileCreationMode.Private); - var prefEditor = prefs.Edit(); - prefEditor.PutLong(Constants.StorageSizeKey, result); - prefEditor.Commit(); - } - else - { - AppCenterLog.Error(LogTag, "Wrong number value for the max storage size."); - } - } - } -} diff --git a/Apps/Contoso.Android.Puppet/ModulePages/CrashesFragment.cs b/Apps/Contoso.Android.Puppet/ModulePages/CrashesFragment.cs deleted file mode 100644 index 61e0b9310..000000000 --- a/Apps/Contoso.Android.Puppet/ModulePages/CrashesFragment.cs +++ /dev/null @@ -1,184 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System; -using System.IO; -using System.Threading; -using Android.Content; -using Android.OS; -using Android.Views; -using Android.Widget; -using Microsoft.AppCenter; -using Microsoft.AppCenter.Crashes; -using Uri = Android.Net.Uri; - -namespace Contoso.Android.Puppet -{ - public class CrashesFragment : PageFragment - { - private Switch CrashesEnabledSwitch; - private Button TestCrashButton; - private Button DivideByZeroButton; - private Button CrashWithAggregateExceptionButton; - private Button CrashWithNullReferenceExceptionButton; - private Button CatchNullReferenceExceptionButton; - private Button CrashAsyncButton; - private Button CrashDotNetThreadButton; - private Button CrashSuperNotCalledButton; - private Button CrashJavaFromDotNetButton; - - public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) - { - return inflater.Inflate(Resource.Layout.Crashes, container, false); - } - - public override void OnViewCreated(View view, Bundle savedInstanceState) - { - base.OnViewCreated(view, savedInstanceState); - - // Find views. - CrashesEnabledSwitch = view.FindViewById(Resource.Id.enabled_crashes) as Switch; - TestCrashButton = view.FindViewById(Resource.Id.test_crash) as Button; - DivideByZeroButton = view.FindViewById(Resource.Id.divide_by_zero) as Button; - CrashWithAggregateExceptionButton = view.FindViewById(Resource.Id.crash_with_aggregate_exception) as Button; - CrashWithNullReferenceExceptionButton = view.FindViewById(Resource.Id.crash_with_null_reference_exception) as Button; - CatchNullReferenceExceptionButton = view.FindViewById(Resource.Id.catch_null_reference_exception) as Button; - CrashAsyncButton = view.FindViewById(Resource.Id.crash_async) as Button; - CrashDotNetThreadButton = view.FindViewById(Resource.Id.crash_from_dotnet_thread) as Button; - CrashSuperNotCalledButton = view.FindViewById(Resource.Id.crash_super_not_called) as Button; - CrashJavaFromDotNetButton = view.FindViewById(Resource.Id.crash_java_from_dotnet) as Button; - - // Subscribe to events. - CrashesEnabledSwitch.CheckedChange += UpdateEnabled; - TestCrashButton.Click += TestCrash; - DivideByZeroButton.Click += DivideByZero; - CrashWithAggregateExceptionButton.Click += CrashWithAggregateException; - CrashWithNullReferenceExceptionButton.Click += CrashWithNullReferenceException; - CatchNullReferenceExceptionButton.Click += CatchNullReferenceException; - CrashAsyncButton.Click += CrashAsync; - CrashDotNetThreadButton.Click += CrashDotNetThread; - CrashSuperNotCalledButton.Click += CrashSuperNotCalled; - CrashJavaFromDotNetButton.Click += CrashJavaFromDotNet; - - UpdateState(); - } - - protected override async void UpdateState() - { - CrashesEnabledSwitch.CheckedChange -= UpdateEnabled; - CrashesEnabledSwitch.Enabled = true; - CrashesEnabledSwitch.Checked = await Crashes.IsEnabledAsync(); - CrashesEnabledSwitch.Enabled = await AppCenter.IsEnabledAsync(); - CrashesEnabledSwitch.CheckedChange += UpdateEnabled; - } - - private async void UpdateEnabled(object sender, CompoundButton.CheckedChangeEventArgs e) - { - await Crashes.SetEnabledAsync(e.IsChecked); - CrashesEnabledSwitch.Checked = await Crashes.IsEnabledAsync(); - } - - private void TestCrash(object sender, EventArgs e) - { - Crashes.GenerateTestCrash(); - } - - private void DivideByZero(object sender, EventArgs e) - { - /* This is supposed to cause a crash, so we don't care that the variable 'x' is never used */ -#pragma warning disable CS0219 - int x = (42 / int.Parse("0")); -#pragma warning restore CS0219 - } - - private void CatchNullReferenceException(object sender, EventArgs e) - { - try - { - TriggerNullReferenceException(); - } - catch (NullReferenceException) - { - System.Diagnostics.Debug.WriteLine("null reference exception"); - } - } - - private void CrashWithNullReferenceException(object sender, EventArgs e) - { - TriggerNullReferenceException(); - } - - private void TriggerNullReferenceException() - { - string[] values = { "one", null, "two" }; - for (int ctr = 0; ctr <= values.GetUpperBound(0); ctr++) - { - var val = values[ctr].Trim(); - var separator = ctr == values.GetUpperBound(0) ? "" : ", "; - System.Diagnostics.Debug.WriteLine("{0}{1}", val, separator); - } - System.Diagnostics.Debug.WriteLine(""); - } - - private void CrashWithAggregateException(object sender, EventArgs e) - { - throw PrepareException(); - } - - async private void CrashAsync(object sender, EventArgs e) - { - await FakeService.DoStuffInBackground(); - } - - private void CrashDotNetThread(object sender, EventArgs e) - { - new Thread(() => throw new Exception("oops")).Start(); - } - - private void CrashSuperNotCalled(object sender, EventArgs e) - { - StartActivity(new Intent(Activity, typeof(CrashActivity))); - } - - private void CrashJavaFromDotNet(object sender, EventArgs e) - { - Uri.Parse(null); - } - - static Exception PrepareException() - { - try - { - throw new AggregateException(SendHttp(), new ArgumentException("Invalid parameter", ValidateLength())); - } - catch (Exception e) - { - return e; - } - } - - static Exception SendHttp() - { - try - { - throw new IOException("Network down"); - } - catch (Exception e) - { - return e; - } - } - - static Exception ValidateLength() - { - try - { - throw new ArgumentOutOfRangeException(null, "It's over 9000!"); - } - catch (Exception e) - { - return e; - } - } - } -} diff --git a/Apps/Contoso.Android.Puppet/ModulePages/OthersFragment.cs b/Apps/Contoso.Android.Puppet/ModulePages/OthersFragment.cs deleted file mode 100644 index bd10d63a5..000000000 --- a/Apps/Contoso.Android.Puppet/ModulePages/OthersFragment.cs +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Android.OS; -using Android.Views; -using Android.Widget; -using Microsoft.AppCenter; -using Microsoft.AppCenter.Distribute; - -namespace Contoso.Android.Puppet -{ - public class OthersFragment : PageFragment - { - private Switch DistributeEnabledSwitch; - - public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) - { - return inflater.Inflate(Resource.Layout.Others, container, false); - } - - public override void OnViewCreated(View view, Bundle savedInstanceState) - { - base.OnViewCreated(view, savedInstanceState); - - // Find views. - DistributeEnabledSwitch = view.FindViewById(Resource.Id.enabled_distribute) as Switch; - - // Subscribe to events. - DistributeEnabledSwitch.CheckedChange += UpdateDistributeEnabled; - UpdateState(); - } - - protected override async void UpdateState() - { - DistributeEnabledSwitch.CheckedChange -= UpdateDistributeEnabled; - DistributeEnabledSwitch.Enabled = true; - DistributeEnabledSwitch.Checked = await Distribute.IsEnabledAsync(); - DistributeEnabledSwitch.Enabled = await AppCenter.IsEnabledAsync(); - DistributeEnabledSwitch.CheckedChange += UpdateDistributeEnabled; - } - - private async void UpdateDistributeEnabled(object sender, CompoundButton.CheckedChangeEventArgs e) - { - await Distribute.SetEnabledAsync(e.IsChecked); - DistributeEnabledSwitch.Checked = await Distribute.IsEnabledAsync(); - } - } -} diff --git a/Apps/Contoso.Android.Puppet/ModulePages/PageFragment.cs b/Apps/Contoso.Android.Puppet/ModulePages/PageFragment.cs deleted file mode 100644 index 7a01fb5ba..000000000 --- a/Apps/Contoso.Android.Puppet/ModulePages/PageFragment.cs +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using AndroidX.Fragment.App; - -namespace Contoso.Android.Puppet -{ - public abstract class PageFragment : Fragment - { - public override void SetInitialSavedState(SavedState state) - { - // Prevent set saved state - } - - public override bool UserVisibleHint - { - get { return base.UserVisibleHint; } - set - { - base.UserVisibleHint = value; - if (value && IsResumed) - UpdateState(); - } - } - - protected abstract void UpdateState(); - } -} diff --git a/Apps/Contoso.Android.Puppet/PagerAdapter.cs b/Apps/Contoso.Android.Puppet/PagerAdapter.cs deleted file mode 100644 index ed51d6a25..000000000 --- a/Apps/Contoso.Android.Puppet/PagerAdapter.cs +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Android.Content; -using AndroidX.Fragment.App; -using Java.Lang; - -namespace Contoso.Android.Puppet -{ - public class PagerAdapter : FragmentStatePagerAdapter - { - private readonly Context mContext; - - public PagerAdapter(FragmentManager fragmentManager, Context context) : base(fragmentManager) - { - mContext = context; - } - - public override int Count - { - get { return 4; } - } - - public override Fragment GetItem(int position) - { - switch (position) - { - case 0: return new AppCenterFragment(); - case 1: return new AnalyticsFragment(); - case 2: return new CrashesFragment(); - case 3: return new OthersFragment(); - default: return null; - } - } - - public override ICharSequence GetPageTitleFormatted(int position) - { - switch (position) - { - case 0: return new String(mContext.GetString(Resource.String.AppCenterTitle)); - case 1: return new String(mContext.GetString(Resource.String.AnalyticsTitle)); - case 2: return new String(mContext.GetString(Resource.String.CrashesTitle)); - case 3: return new String(mContext.GetString(Resource.String.OthersTitle)); - default: return null; - } - } - } -} diff --git a/Apps/Contoso.Android.Puppet/Preferences.cs b/Apps/Contoso.Android.Puppet/Preferences.cs deleted file mode 100644 index 1acb436f9..000000000 --- a/Apps/Contoso.Android.Puppet/Preferences.cs +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System; -using Android.App; -using Android.Content; - -namespace Contoso.Android.Puppet -{ - public static class Preferences - { - private const string SharedPreferencesName = "ContosoAppPrefs"; - - public static ISharedPreferences SharedPreferences => - Application.Context.GetSharedPreferences(SharedPreferencesName, FileCreationMode.Private); - } -} diff --git a/Apps/Contoso.Android.Puppet/Properties/AndroidManifest.xml b/Apps/Contoso.Android.Puppet/Properties/AndroidManifest.xml deleted file mode 100644 index f2f5eb116..000000000 --- a/Apps/Contoso.Android.Puppet/Properties/AndroidManifest.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/Apps/Contoso.Android.Puppet/Properties/AssemblyInfo.cs b/Apps/Contoso.Android.Puppet/Properties/AssemblyInfo.cs deleted file mode 100644 index 4f5b92d29..000000000 --- a/Apps/Contoso.Android.Puppet/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System.Reflection; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("Contoso.Android.Puppet")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("Microsoft Corporation")] -[assembly: AssemblyProduct("Contoso.Android.Puppet")] -[assembly: AssemblyCopyright("Microsoft Corp. All rights reserved.")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] -[assembly: ComVisible(false)] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("0.0.0.0")] -[assembly: AssemblyFileVersion("5.0.6.0")] -[assembly: AssemblyInformationalVersion("5.0.6-SNAPSHOT")] diff --git a/Apps/Contoso.Android.Puppet/PropertiesActivity.cs b/Apps/Contoso.Android.Puppet/PropertiesActivity.cs deleted file mode 100644 index b3afbf8cc..000000000 --- a/Apps/Contoso.Android.Puppet/PropertiesActivity.cs +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Android.App; -using Android.Content; -using Android.OS; -using Android.Widget; - -namespace Contoso.Android.Puppet -{ - [Activity(Label = "PropertiesActivity")] - public class PropertiesActivity : ListActivity - { - protected override void OnCreate(Bundle savedInstanceState) - { - base.OnCreate(savedInstanceState); - var properties = Intent.GetStringArrayExtra("properties"); - ListAdapter = new ArrayAdapter(this, global::Android.Resource.Layout.SimpleListItem1, properties); - } - } -} diff --git a/Apps/Contoso.Android.Puppet/Resources/AboutResources.txt b/Apps/Contoso.Android.Puppet/Resources/AboutResources.txt deleted file mode 100644 index c2bca974c..000000000 --- a/Apps/Contoso.Android.Puppet/Resources/AboutResources.txt +++ /dev/null @@ -1,44 +0,0 @@ -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. \ No newline at end of file diff --git a/Apps/Contoso.Android.Puppet/Resources/drawable-hdpi/icon.png b/Apps/Contoso.Android.Puppet/Resources/drawable-hdpi/icon.png deleted file mode 100644 index 964f110ab..000000000 Binary files a/Apps/Contoso.Android.Puppet/Resources/drawable-hdpi/icon.png and /dev/null differ diff --git a/Apps/Contoso.Android.Puppet/Resources/drawable-xhdpi/icon.png b/Apps/Contoso.Android.Puppet/Resources/drawable-xhdpi/icon.png deleted file mode 100644 index 3c01e60ce..000000000 Binary files a/Apps/Contoso.Android.Puppet/Resources/drawable-xhdpi/icon.png and /dev/null differ diff --git a/Apps/Contoso.Android.Puppet/Resources/drawable-xxhdpi/icon.png b/Apps/Contoso.Android.Puppet/Resources/drawable-xxhdpi/icon.png deleted file mode 100644 index 0d8c1c57d..000000000 Binary files a/Apps/Contoso.Android.Puppet/Resources/drawable-xxhdpi/icon.png and /dev/null differ diff --git a/Apps/Contoso.Android.Puppet/Resources/drawable/icon.png b/Apps/Contoso.Android.Puppet/Resources/drawable/icon.png deleted file mode 100644 index b0ba7150f..000000000 Binary files a/Apps/Contoso.Android.Puppet/Resources/drawable/icon.png and /dev/null differ diff --git a/Apps/Contoso.Android.Puppet/Resources/layout/Analytics.axml b/Apps/Contoso.Android.Puppet/Resources/layout/Analytics.axml deleted file mode 100644 index 6979cf08c..000000000 --- a/Apps/Contoso.Android.Puppet/Resources/layout/Analytics.axml +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Apps/Contoso.MacOS.Puppet/ModulePages/Analytics.cs b/Apps/Contoso.MacOS.Puppet/ModulePages/Analytics.cs deleted file mode 100644 index 1354c8ee6..000000000 --- a/Apps/Contoso.MacOS.Puppet/ModulePages/Analytics.cs +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System; -using System.Collections.Generic; -using System.Linq; -using Foundation; -using AppKit; - -namespace Contoso.MacOS.Puppet.ModulePages -{ - public partial class Analytics : AppKit.NSView - { - #region Constructors - - // Called when created from unmanaged code - public Analytics(IntPtr handle) : base(handle) - { - Initialize(); - } - - // Called when created directly from a XIB file - [Export("initWithCoder:")] - public Analytics(NSCoder coder) : base(coder) - { - Initialize(); - } - - // Shared initialization code - void Initialize() - { - } - - #endregion - } -} diff --git a/Apps/Contoso.MacOS.Puppet/ModulePages/Analytics.designer.cs b/Apps/Contoso.MacOS.Puppet/ModulePages/Analytics.designer.cs deleted file mode 100644 index 9e4748ec2..000000000 --- a/Apps/Contoso.MacOS.Puppet/ModulePages/Analytics.designer.cs +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -namespace Contoso.MacOS.Puppet.ModulePages -{ - - // Should subclass AppKit.NSView - [Foundation.Register("Analytics")] - public partial class Analytics - { - } -} diff --git a/Apps/Contoso.MacOS.Puppet/ModulePages/Analytics.xib b/Apps/Contoso.MacOS.Puppet/ModulePages/Analytics.xib deleted file mode 100644 index 1cc2826a2..000000000 --- a/Apps/Contoso.MacOS.Puppet/ModulePages/Analytics.xib +++ /dev/null @@ -1,166 +0,0 @@ - - - - 1060 - 10D573 - 762 - 1038.29 - 460.00 - - com.apple.InterfaceBuilder.CocoaPlugin - 762 - - - YES - - - - YES - com.apple.InterfaceBuilder.CocoaPlugin - - - YES - - YES - - - YES - - - - YES - - AnalyticsController - - - FirstResponder - - - NSApplication - - - - 268 - {470, 296} - - Analytics - - - - - YES - - - view - - - - 17 - - - - - YES - - 0 - - - - - - -2 - - - File's Owner - - - -1 - - - First Responder - - - -3 - - - Application - - - 4 - - - YES - - - - - - - YES - - YES - -1.IBPluginDependency - -2.IBPluginDependency - -3.IBPluginDependency - 4.IBEditorWindowLastContentRect - 4.IBPluginDependency - - - YES - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - {{380, 424}, {470, 296}} - com.apple.InterfaceBuilder.CocoaPlugin - - - - YES - - - YES - - - - - YES - - - YES - - - - 17 - - - - YES - - Analytics - NSView - - IBUserSource - - - - - AnalyticsController - NSViewController - - IBUserSource - - - - - - 0 - IBCocoaFramework - - com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3 - - - YES - - 3 - - diff --git a/Apps/Contoso.MacOS.Puppet/ModulePages/AnalyticsController.cs b/Apps/Contoso.MacOS.Puppet/ModulePages/AnalyticsController.cs deleted file mode 100644 index 26facdf65..000000000 --- a/Apps/Contoso.MacOS.Puppet/ModulePages/AnalyticsController.cs +++ /dev/null @@ -1,101 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System; -using System.Collections.Generic; -using System.Linq; -using Foundation; -using AppKit; - -namespace Contoso.MacOS.Puppet.ModulePages -{ - public partial class AnalyticsController : AppKit.NSViewController - { - private bool hasTrackEventPropery = false; - private const string On = "1"; - private const string Off = "0"; - private NSUserDefaults plist = NSUserDefaults.StandardUserDefaults; - - #region Constructors - - // Called when created from unmanaged code - public AnalyticsController(IntPtr handle) : base(handle) - { - Initialize(); - } - - // Called when created directly from a XIB file - [Export("initWithCoder:")] - public AnalyticsController(NSCoder coder) : base(coder) - { - Initialize(); - } - - // Call to load from the XIB/NIB file - public AnalyticsController() : base("Analytics", NSBundle.MainBundle) - { - Initialize(); - } - - // Shared initialization code - void Initialize() - { - } - - #endregion - - public override void ViewDidAppear() - { - base.ViewDidAppear(); - isAnalyticsEnabledSwitch.StringValue = Microsoft.AppCenter.Analytics.Analytics.IsEnabledAsync().Result ? On : Off; - isAnalyticsEnabledSwitch.Enabled = Microsoft.AppCenter.AppCenter.IsEnabledAsync().Result; - var isEnabled = plist.BoolForKey(Constants.EnableManualSessionTrackerKey); - ManualSessionTrackerSwitch.StringValue = isEnabled ? On : Off; - } - - partial void AnalyticsSwitchEnabled(NSSwitch sender) - { - var isAnalyticsEnabled = sender.AccessibilityValue.ToLower().Equals("on"); - Microsoft.AppCenter.Analytics.Analytics.SetEnabledAsync(isAnalyticsEnabled).Wait(); - isAnalyticsEnabledSwitch.StringValue = Microsoft.AppCenter.Analytics.Analytics.IsEnabledAsync().Result ? On : Off; - } - - partial void HasTrackErrorProperties(NSButton sender) - { - hasTrackEventPropery = !hasTrackEventPropery; - } - - partial void ManualSessionTrackerUpdate(NSSwitch sender) - { - plist.SetBool(sender.AccessibilityValue.ToLower().Equals("on"), Constants.EnableManualSessionTrackerKey); - } - - partial void StartSession(NSObject sender) - { - Microsoft.AppCenter.Analytics.Analytics.StartSession(); - } - - partial void SendTrackEvent(NSButton sender) - { - var trackEvent = trackEventName.AccessibilityValue; - if (hasTrackEventPropery) - { - var properties = new Dictionary(); - properties.Add("property1", "key1"); - properties.Add("property2", "key2"); - Microsoft.AppCenter.Analytics.Analytics.TrackEvent(trackEvent, properties); - return; - } - Microsoft.AppCenter.Analytics.Analytics.TrackEvent(trackEvent); - } - - //strongly typed view accessor - public new Analytics View - { - get - { - return (Analytics)base.View; - } - } - } -} diff --git a/Apps/Contoso.MacOS.Puppet/ModulePages/AnalyticsController.designer.cs b/Apps/Contoso.MacOS.Puppet/ModulePages/AnalyticsController.designer.cs deleted file mode 100644 index 135e09391..000000000 --- a/Apps/Contoso.MacOS.Puppet/ModulePages/AnalyticsController.designer.cs +++ /dev/null @@ -1,54 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Foundation; -using System.CodeDom.Compiler; - -namespace Contoso.MacOS.Puppet.ModulePages -{ - [Register ("AnalyticsController")] - partial class AnalyticsController - { - [Outlet] - AppKit.NSSwitch isAnalyticsEnabledSwitch { get; set; } - - [Outlet] - AppKit.NSSwitch ManualSessionTrackerSwitch { get; set; } - - [Outlet] - AppKit.NSTextField trackEventName { get; set; } - - [Action ("AnalyticsSwitchEnabled:")] - partial void AnalyticsSwitchEnabled (AppKit.NSSwitch sender); - - [Action ("HasTrackErrorProperties:")] - partial void HasTrackErrorProperties (AppKit.NSButton sender); - - [Action ("ManualSessionTrackerUpdate:")] - partial void ManualSessionTrackerUpdate (AppKit.NSSwitch sender); - - [Action ("SendTrackEvent:")] - partial void SendTrackEvent (AppKit.NSButton sender); - - [Action ("StartSession:")] - partial void StartSession (Foundation.NSObject sender); - - void ReleaseDesignerOutlets () - { - if (isAnalyticsEnabledSwitch != null) { - isAnalyticsEnabledSwitch.Dispose (); - isAnalyticsEnabledSwitch = null; - } - - if (trackEventName != null) { - trackEventName.Dispose (); - trackEventName = null; - } - - if (ManualSessionTrackerSwitch != null) { - ManualSessionTrackerSwitch.Dispose (); - ManualSessionTrackerSwitch = null; - } - } - } -} diff --git a/Apps/Contoso.MacOS.Puppet/ModulePages/AppCenter.cs b/Apps/Contoso.MacOS.Puppet/ModulePages/AppCenter.cs deleted file mode 100644 index 15092636e..000000000 --- a/Apps/Contoso.MacOS.Puppet/ModulePages/AppCenter.cs +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System; -using System.Collections.Generic; -using System.Linq; -using Foundation; -using AppKit; - -namespace Contoso.MacOS.Puppet.ModulePages -{ - public partial class AppCenter : AppKit.NSView - { - #region Constructors - - // Called when created from unmanaged code - public AppCenter(IntPtr handle) : base(handle) - { - Initialize(); - } - - // Called when created directly from a XIB file - [Export("initWithCoder:")] - public AppCenter(NSCoder coder) : base(coder) - { - Initialize(); - } - - // Shared initialization code - void Initialize() - { - } - - #endregion - } -} diff --git a/Apps/Contoso.MacOS.Puppet/ModulePages/AppCenter.designer.cs b/Apps/Contoso.MacOS.Puppet/ModulePages/AppCenter.designer.cs deleted file mode 100644 index 95083dfdf..000000000 --- a/Apps/Contoso.MacOS.Puppet/ModulePages/AppCenter.designer.cs +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -namespace Contoso.MacOS.Puppet.ModulePages -{ - - // Should subclass AppKit.NSView - [Foundation.Register("AppCenter")] - public partial class AppCenter - { - } -} diff --git a/Apps/Contoso.MacOS.Puppet/ModulePages/AppCenter.xib b/Apps/Contoso.MacOS.Puppet/ModulePages/AppCenter.xib deleted file mode 100644 index f4a9a5f95..000000000 --- a/Apps/Contoso.MacOS.Puppet/ModulePages/AppCenter.xib +++ /dev/null @@ -1,166 +0,0 @@ - - - - 1060 - 10D573 - 762 - 1038.29 - 460.00 - - com.apple.InterfaceBuilder.CocoaPlugin - 762 - - - YES - - - - YES - com.apple.InterfaceBuilder.CocoaPlugin - - - YES - - YES - - - YES - - - - YES - - AppCenterController - - - FirstResponder - - - NSApplication - - - - 268 - {470, 296} - - AppCenter - - - - - YES - - - view - - - - 17 - - - - - YES - - 0 - - - - - - -2 - - - File's Owner - - - -1 - - - First Responder - - - -3 - - - Application - - - 4 - - - YES - - - - - - - YES - - YES - -1.IBPluginDependency - -2.IBPluginDependency - -3.IBPluginDependency - 4.IBEditorWindowLastContentRect - 4.IBPluginDependency - - - YES - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - {{380, 424}, {470, 296}} - com.apple.InterfaceBuilder.CocoaPlugin - - - - YES - - - YES - - - - - YES - - - YES - - - - 17 - - - - YES - - AppCenter - NSView - - IBUserSource - - - - - AppCenterController - NSViewController - - IBUserSource - - - - - - 0 - IBCocoaFramework - - com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3 - - - YES - - 3 - - diff --git a/Apps/Contoso.MacOS.Puppet/ModulePages/AppCenterController.cs b/Apps/Contoso.MacOS.Puppet/ModulePages/AppCenterController.cs deleted file mode 100644 index a4feb2da9..000000000 --- a/Apps/Contoso.MacOS.Puppet/ModulePages/AppCenterController.cs +++ /dev/null @@ -1,103 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System; -using Foundation; -using AppKit; - -namespace Contoso.MacOS.Puppet.ModulePages -{ - public partial class AppCenterController : AppKit.NSViewController - { - private const string LogTag = "XamarinMacOS"; - private const string On = "1"; - private const string Off = "0"; - private NSUserDefaults plist = NSUserDefaults.StandardUserDefaults; - - #region Constructors - - // Called when created from unmanaged code - public AppCenterController(IntPtr handle) : base(handle) - { - Initialize(); - } - - // Called when created directly from a XIB file - [Export("initWithCoder:")] - public AppCenterController(NSCoder coder) : base(coder) - { - Initialize(); - } - - // Call to load from the XIB/NIB file - public AppCenterController() : base("AppCenter", NSBundle.MainBundle) - { - Initialize(); - } - - // Shared initialization code - void Initialize() - { - } - - #endregion - - public override void ViewDidAppear() - { - base.ViewDidAppear(); - IsAppCenterEnabledSwitch.StringValue = Microsoft.AppCenter.AppCenter.IsEnabledAsync().Result ? On : Off; - isNetworkRequestAllowedSwitch.StringValue = Microsoft.AppCenter.AppCenter.IsNetworkRequestsAllowed ? On : Off; - - // Set max storage size value. - plist = NSUserDefaults.StandardUserDefaults; - var storageSizeValue = plist.IntForKey(Constants.StorageSizeKey); - if (storageSizeValue > 0) - { - MaxStorageSizeText.StringValue = storageSizeValue.ToString(); - } - } - - partial void IsAppCenterEnabled(NSSwitch sender) - { - var IsAppCenterEnabled = sender.StringValue.ToLower().Equals(On); - Microsoft.AppCenter.AppCenter.SetEnabledAsync(IsAppCenterEnabled).Wait(); - IsAppCenterEnabledSwitch.StringValue = Microsoft.AppCenter.AppCenter.IsEnabledAsync().Result ? On : Off; - } - - partial void IsNetworkRequestsAllowed(NSSwitch sender) - { - var isNetworkAllowed = sender.StringValue.ToLower().Equals(On); - Microsoft.AppCenter.AppCenter.IsNetworkRequestsAllowed = isNetworkAllowed; - } - - partial void SaveMaxStorageSizeText(NSButton sender) - { - var size = MaxStorageSizeText.AccessibilityValue; - int.TryParse(size, out var result); - if (result != 0) - { - Microsoft.AppCenter.AppCenter.SetMaxStorageSizeAsync(result).Wait(); - plist.SetInt(result, Constants.StorageSizeKey); - } - else - { - Microsoft.AppCenter.AppCenterLog.Error(LogTag, "Wrong number value for the max storage size."); - } - } - - partial void UserIdTextChanged(NSTextField sender) - { - var userId = string.IsNullOrEmpty(sender.AccessibilityValue) ? null : sender.AccessibilityValue; - Microsoft.AppCenter.AppCenter.SetUserId(userId); - } - - //strongly typed view accessor - public new AppCenter View - { - get - { - return (AppCenter)base.View; - } - } - } -} diff --git a/Apps/Contoso.MacOS.Puppet/ModulePages/AppCenterController.designer.cs b/Apps/Contoso.MacOS.Puppet/ModulePages/AppCenterController.designer.cs deleted file mode 100644 index 058ce0875..000000000 --- a/Apps/Contoso.MacOS.Puppet/ModulePages/AppCenterController.designer.cs +++ /dev/null @@ -1,59 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Foundation; -using System.CodeDom.Compiler; - -namespace Contoso.MacOS.Puppet.ModulePages -{ - [Register ("AppCenterController")] - partial class AppCenterController - { - [Outlet] - AppKit.NSSwitch IsAppCenterEnabledSwitch { get; set; } - - [Outlet] - AppKit.NSSwitch isNetworkRequestAllowedSwitch { get; set; } - - [Outlet] - AppKit.NSTextField MaxStorageSizeText { get; set; } - - [Outlet] - AppKit.NSTextField UserIdText { get; set; } - - [Action ("IsAppCenterEnabled:")] - partial void IsAppCenterEnabled (AppKit.NSSwitch sender); - - [Action ("IsNetworkRequestsAllowed:")] - partial void IsNetworkRequestsAllowed (AppKit.NSSwitch sender); - - [Action ("SaveMaxStorageSizeText:")] - partial void SaveMaxStorageSizeText (AppKit.NSButton sender); - - [Action ("UserIdTextChanged:")] - partial void UserIdTextChanged (AppKit.NSTextField sender); - - void ReleaseDesignerOutlets () - { - if (IsAppCenterEnabledSwitch != null) { - IsAppCenterEnabledSwitch.Dispose (); - IsAppCenterEnabledSwitch = null; - } - - if (isNetworkRequestAllowedSwitch != null) { - isNetworkRequestAllowedSwitch.Dispose (); - isNetworkRequestAllowedSwitch = null; - } - - if (MaxStorageSizeText != null) { - MaxStorageSizeText.Dispose (); - MaxStorageSizeText = null; - } - - if (UserIdText != null) { - UserIdText.Dispose (); - UserIdText = null; - } - } - } -} diff --git a/Apps/Contoso.MacOS.Puppet/ModulePages/Crashes.cs b/Apps/Contoso.MacOS.Puppet/ModulePages/Crashes.cs deleted file mode 100644 index 9bedfdb67..000000000 --- a/Apps/Contoso.MacOS.Puppet/ModulePages/Crashes.cs +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System; -using System.Collections.Generic; -using System.Linq; -using Foundation; -using AppKit; - -namespace Contoso.MacOS.Puppet.ModulePages -{ - public partial class Crashes : AppKit.NSView - { - #region Constructors - - // Called when created from unmanaged code - public Crashes(IntPtr handle) : base(handle) - { - Initialize(); - } - - // Called when created directly from a XIB file - [Export("initWithCoder:")] - public Crashes(NSCoder coder) : base(coder) - { - Initialize(); - } - - // Shared initialization code - void Initialize() - { - } - - #endregion - } -} diff --git a/Apps/Contoso.MacOS.Puppet/ModulePages/Crashes.designer.cs b/Apps/Contoso.MacOS.Puppet/ModulePages/Crashes.designer.cs deleted file mode 100644 index 8a355325b..000000000 --- a/Apps/Contoso.MacOS.Puppet/ModulePages/Crashes.designer.cs +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -namespace Contoso.MacOS.Puppet.ModulePages -{ - - // Should subclass AppKit.NSView - [Foundation.Register("Crashes")] - public partial class Crashes - { - } -} diff --git a/Apps/Contoso.MacOS.Puppet/ModulePages/Crashes.xib b/Apps/Contoso.MacOS.Puppet/ModulePages/Crashes.xib deleted file mode 100644 index 91d99a883..000000000 --- a/Apps/Contoso.MacOS.Puppet/ModulePages/Crashes.xib +++ /dev/null @@ -1,166 +0,0 @@ - - - - 1060 - 10D573 - 762 - 1038.29 - 460.00 - - com.apple.InterfaceBuilder.CocoaPlugin - 762 - - - YES - - - - YES - com.apple.InterfaceBuilder.CocoaPlugin - - - YES - - YES - - - YES - - - - YES - - CrashesController - - - FirstResponder - - - NSApplication - - - - 268 - {470, 296} - - Crashes - - - - - YES - - - view - - - - 17 - - - - - YES - - 0 - - - - - - -2 - - - File's Owner - - - -1 - - - First Responder - - - -3 - - - Application - - - 4 - - - YES - - - - - - - YES - - YES - -1.IBPluginDependency - -2.IBPluginDependency - -3.IBPluginDependency - 4.IBEditorWindowLastContentRect - 4.IBPluginDependency - - - YES - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - {{380, 424}, {470, 296}} - com.apple.InterfaceBuilder.CocoaPlugin - - - - YES - - - YES - - - - - YES - - - YES - - - - 17 - - - - YES - - Crashes - NSView - - IBUserSource - - - - - CrashesController - NSViewController - - IBUserSource - - - - - - 0 - IBCocoaFramework - - com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3 - - - YES - - 3 - - diff --git a/Apps/Contoso.MacOS.Puppet/ModulePages/CrashesController.cs b/Apps/Contoso.MacOS.Puppet/ModulePages/CrashesController.cs deleted file mode 100644 index 4572cfb06..000000000 --- a/Apps/Contoso.MacOS.Puppet/ModulePages/CrashesController.cs +++ /dev/null @@ -1,162 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System; -using System.Collections.Generic; -using System.Linq; -using Foundation; -using AppKit; -using System.IO; - -namespace Contoso.MacOS.Puppet.ModulePages -{ - public partial class CrashesController : AppKit.NSViewController - { - private const string On = "1"; - private const string Off = "0"; - - #region Constructors - - // Called when created from unmanaged code - public CrashesController(IntPtr handle) : base(handle) - { - Initialize(); - } - - // Called when created directly from a XIB file - [Export("initWithCoder:")] - public CrashesController(NSCoder coder) : base(coder) - { - Initialize(); - } - - // Call to load from the XIB/NIB file - public CrashesController() : base("Crashes", NSBundle.MainBundle) - { - Initialize(); - } - - // Shared initialization code - void Initialize() - { - } - - #endregion - - public override void ViewDidAppear() - { - base.ViewDidAppear(); - IsCrashesEnabledSwitch.StringValue = Microsoft.AppCenter.Crashes.Crashes.IsEnabledAsync().Result ? On : Off; - IsCrashesEnabledSwitch.Enabled = Microsoft.AppCenter.AppCenter.IsEnabledAsync().Result; - } - - partial void IsCrashesEnabled(NSSwitch sender) - { - var isAnalyticsEnabled = sender.AccessibilityValue.ToLower().Equals("on"); - Microsoft.AppCenter.Crashes.Crashes.SetEnabledAsync(isAnalyticsEnabled).Wait(); - IsCrashesEnabledSwitch.StringValue = Microsoft.AppCenter.Crashes.Crashes.IsEnabledAsync().Result ? On : Off; - } - - partial void TestCrash(NSButton sender) - { - Microsoft.AppCenter.Crashes.Crashes.GenerateTestCrash(); - } - - partial void DivideByZero(NSButton sender) - { - /* This is supposed to cause a crash, so we don't care that the variable 'x' is never used */ -#pragma warning disable CS0219 - int x = (42 / int.Parse("0")); -#pragma warning restore CS0219 - } - - partial void CatchNullReferenceException(NSButton sender) - { - try - { - TriggerNullReferenceException(); - } - catch (NullReferenceException e) - { - Microsoft.AppCenter.Crashes.Crashes.TrackError(e); - } - } - - partial void CrashWithNullReferenceException(NSButton sender) - { - TriggerNullReferenceException(); - } - - void TriggerNullReferenceException() - { - string[] values = { "one", null, "two" }; - for (int ctr = 0; ctr <= values.GetUpperBound(0); ctr++) - { - var val = values[ctr].Trim(); - var separator = ctr == values.GetUpperBound(0) ? "" : ", "; - System.Diagnostics.Debug.WriteLine("{0}{1}", val, separator); - } - System.Diagnostics.Debug.WriteLine(""); - } - - partial void CrashWithAggregateException(NSButton sender) - { - throw PrepareException(); - } - - static Exception PrepareException() - { - try - { - throw new AggregateException(SendHttp(), new ArgumentException("Invalid parameter", ValidateLength())); - } - catch (Exception e) - { - return e; - } - } - - static Exception SendHttp() - { - try - { - throw new IOException("Network down"); - } - catch (Exception e) - { - return e; - } - } - - static Exception ValidateLength() - { - try - { - throw new ArgumentOutOfRangeException(null, "It's over 9000!"); - } - catch (Exception e) - { - return e; - } - } - - async partial void CrashAsync(NSButton sender) - { - await FakeService.DoStuffInBackground(); - } - - partial void NativeCrash(NSButton sender) - { - NSNull.Null.PerformSelector(new ObjCRuntime.Selector("isEqualToString:")); - } - - //strongly typed view accessor - public new Crashes View - { - get - { - return (Crashes)base.View; - } - } - } -} diff --git a/Apps/Contoso.MacOS.Puppet/ModulePages/CrashesController.designer.cs b/Apps/Contoso.MacOS.Puppet/ModulePages/CrashesController.designer.cs deleted file mode 100644 index 1ef6af94e..000000000 --- a/Apps/Contoso.MacOS.Puppet/ModulePages/CrashesController.designer.cs +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Foundation; -using System.CodeDom.Compiler; - -namespace Contoso.MacOS.Puppet.ModulePages -{ - [Register ("CrashesController")] - partial class CrashesController - { - [Outlet] - AppKit.NSSwitch IsCrashesEnabledSwitch { get; set; } - - [Action ("CatchNullReferenceException:")] - partial void CatchNullReferenceException (AppKit.NSButton sender); - - [Action ("CrashAsync:")] - partial void CrashAsync (AppKit.NSButton sender); - - [Action ("CrashWithAggregateException:")] - partial void CrashWithAggregateException (AppKit.NSButton sender); - - [Action ("CrashWithNullReferenceException:")] - partial void CrashWithNullReferenceException (AppKit.NSButton sender); - - [Action ("DivideByZero:")] - partial void DivideByZero (AppKit.NSButton sender); - - [Action ("IsCrashesEnabled:")] - partial void IsCrashesEnabled (AppKit.NSSwitch sender); - - [Action ("NativeCrash:")] - partial void NativeCrash (AppKit.NSButton sender); - - [Action ("TestCrash:")] - partial void TestCrash (AppKit.NSButton sender); - - void ReleaseDesignerOutlets () - { - if (IsCrashesEnabledSwitch != null) { - IsCrashesEnabledSwitch.Dispose (); - IsCrashesEnabledSwitch = null; - } - } - } -} diff --git a/Apps/Contoso.MacOS.Puppet/ViewController.cs b/Apps/Contoso.MacOS.Puppet/ViewController.cs deleted file mode 100644 index a18c108e1..000000000 --- a/Apps/Contoso.MacOS.Puppet/ViewController.cs +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System; - -using AppKit; -using Foundation; - -namespace Contoso.MacOS.Puppet -{ - public partial class ViewController : NSViewController - { - public ViewController(IntPtr handle) : base(handle) - { - } - - public override void ViewDidLoad() - { - base.ViewDidLoad(); - - // Do any additional setup after loading the view. - } - - public override NSObject RepresentedObject - { - get - { - return base.RepresentedObject; - } - set - { - base.RepresentedObject = value; - // Update the view, if already loaded. - } - } - } -} diff --git a/Apps/Contoso.MacOS.Puppet/ViewController.designer.cs b/Apps/Contoso.MacOS.Puppet/ViewController.designer.cs deleted file mode 100644 index 42e8f648d..000000000 --- a/Apps/Contoso.MacOS.Puppet/ViewController.designer.cs +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Foundation; - -namespace Contoso.MacOS.Puppet -{ - [Register("ViewController")] - partial class ViewController - { - void ReleaseDesignerOutlets() - { - } - } -} diff --git a/Apps/Contoso.UWP.Demo/Contoso.UWP.Demo.csproj b/Apps/Contoso.UWP.Demo/Contoso.UWP.Demo.csproj index 5e59ab263..6e933877d 100644 --- a/Apps/Contoso.UWP.Demo/Contoso.UWP.Demo.csproj +++ b/Apps/Contoso.UWP.Demo/Contoso.UWP.Demo.csproj @@ -149,8 +149,8 @@ - - + + diff --git a/Apps/Contoso.UWP.Demo/MainPage.xaml.cs b/Apps/Contoso.UWP.Demo/MainPage.xaml.cs index bbc61c35c..737373c9f 100644 --- a/Apps/Contoso.UWP.Demo/MainPage.xaml.cs +++ b/Apps/Contoso.UWP.Demo/MainPage.xaml.cs @@ -43,7 +43,6 @@ private void TrackEvent(object sender, RoutedEventArgs e) private async void ThrowException(object sender, RoutedEventArgs e) { - // Contoso.Forms.Puppet.UWP has more crash types and UI features to test properties. // This app is just for smoke testing. // Also this app uses min SDK version to 10240, which changes the .NET native generated code to have missing symbols for handled errors. // Handled errors in the forms app never hit that case because we need to use v16299 there. diff --git a/Apps/Contoso.UWP.Demo/Package.StoreAssociation.xml b/Apps/Contoso.UWP.Demo/Package.StoreAssociation.xml index 0919f4b80..d4f60ec07 100644 --- a/Apps/Contoso.UWP.Demo/Package.StoreAssociation.xml +++ b/Apps/Contoso.UWP.Demo/Package.StoreAssociation.xml @@ -365,8 +365,6 @@ - 10805zumoTestUser.AppCenter-Contoso.Forms.Demo.UWP - 10805zumoTestUser.AppCenter-Contoso.Forms.Puppet.U 10805zumoTestUser.AppCenter-Contoso.UWP.Puppet 10805zumoTestUser.AppCenter-Contso.Forms.Puppet.UW 10805zumoTestUser.ClientSdkDotNetApp diff --git a/Apps/Contoso.UWP.Demo/Package.appxmanifest b/Apps/Contoso.UWP.Demo/Package.appxmanifest index c4c2817b8..cf013a8b4 100644 --- a/Apps/Contoso.UWP.Demo/Package.appxmanifest +++ b/Apps/Contoso.UWP.Demo/Package.appxmanifest @@ -1,6 +1,6 @@ - + AppCenter-Contoso.UWP.Demo diff --git a/Apps/Contoso.UWP.Demo/Properties/AssemblyInfo.cs b/Apps/Contoso.UWP.Demo/Properties/AssemblyInfo.cs index ae964c538..32e7ab9a4 100644 --- a/Apps/Contoso.UWP.Demo/Properties/AssemblyInfo.cs +++ b/Apps/Contoso.UWP.Demo/Properties/AssemblyInfo.cs @@ -27,5 +27,5 @@ // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] [assembly: AssemblyVersion("0.0.0.0")] -[assembly: AssemblyFileVersion("5.0.6.0")] +[assembly: AssemblyFileVersion("5.0.7.0")] [assembly: ComVisible(false)] \ No newline at end of file diff --git a/Apps/Contoso.UWP.Puppet/MainPage.xaml.cs b/Apps/Contoso.UWP.Puppet/MainPage.xaml.cs index 3aefed959..a23dba24b 100644 --- a/Apps/Contoso.UWP.Puppet/MainPage.xaml.cs +++ b/Apps/Contoso.UWP.Puppet/MainPage.xaml.cs @@ -43,7 +43,6 @@ private void TrackEvent(object sender, RoutedEventArgs e) private async void ThrowException(object sender, RoutedEventArgs e) { - // Contoso.Forms.Puppet.UWP has more crash types and UI features to test properties. // This app is just for smoke testing. // Also this app uses min SDK version to 10240, which changes the .NET native generated code to have missing symbols for handled errors. // Handled errors in the forms app never hit that case because we need to use v16299 there. diff --git a/Apps/Contoso.UWP.Puppet/Package.appxmanifest b/Apps/Contoso.UWP.Puppet/Package.appxmanifest index 030ca658e..b825d4012 100644 --- a/Apps/Contoso.UWP.Puppet/Package.appxmanifest +++ b/Apps/Contoso.UWP.Puppet/Package.appxmanifest @@ -1,6 +1,6 @@ - + AppCenter-Contoso.UWP.Puppet diff --git a/Apps/Contoso.UWP.Puppet/Properties/AssemblyInfo.cs b/Apps/Contoso.UWP.Puppet/Properties/AssemblyInfo.cs index 57e22a0fd..1abc44f1b 100644 --- a/Apps/Contoso.UWP.Puppet/Properties/AssemblyInfo.cs +++ b/Apps/Contoso.UWP.Puppet/Properties/AssemblyInfo.cs @@ -27,5 +27,5 @@ // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] [assembly: AssemblyVersion("0.0.0.0")] -[assembly: AssemblyFileVersion("5.0.6.0")] +[assembly: AssemblyFileVersion("5.0.7.0")] [assembly: ComVisible(false)] \ No newline at end of file diff --git a/Apps/Contoso.WPF.Demo.DotNetCore/Contoso.WPF.Demo.DotNetCore.csproj b/Apps/Contoso.WPF.Demo.DotNetCore/Contoso.WPF.Demo.DotNetCore.csproj index a4d28a143..df2fcaf9f 100644 --- a/Apps/Contoso.WPF.Demo.DotNetCore/Contoso.WPF.Demo.DotNetCore.csproj +++ b/Apps/Contoso.WPF.Demo.DotNetCore/Contoso.WPF.Demo.DotNetCore.csproj @@ -4,13 +4,13 @@ WinExe netcoreapp3.1 true - 5.0.6 + 5.0.7 0.0.0.0 - 5.0.6.0 + 5.0.7.0 - - + + diff --git a/Apps/Contoso.WPF.Demo/Contoso.WPF.Demo.csproj b/Apps/Contoso.WPF.Demo/Contoso.WPF.Demo.csproj index c03bddf86..a332847f8 100644 --- a/Apps/Contoso.WPF.Demo/Contoso.WPF.Demo.csproj +++ b/Apps/Contoso.WPF.Demo/Contoso.WPF.Demo.csproj @@ -115,8 +115,8 @@ - - + + diff --git a/Apps/Contoso.WPF.Demo/Properties/AssemblyInfo.cs b/Apps/Contoso.WPF.Demo/Properties/AssemblyInfo.cs index 7fe36422a..af18e5cd0 100644 --- a/Apps/Contoso.WPF.Demo/Properties/AssemblyInfo.cs +++ b/Apps/Contoso.WPF.Demo/Properties/AssemblyInfo.cs @@ -30,5 +30,5 @@ // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] [assembly: AssemblyVersion("0.0.0.0")] -[assembly: AssemblyFileVersion("5.0.6.0")] -[assembly: AssemblyInformationalVersion("5.0.6")] +[assembly: AssemblyFileVersion("5.0.7.0")] +[assembly: AssemblyInformationalVersion("5.0.7")] diff --git a/Apps/Contoso.WPF.Puppet.DotNetCore/Contoso.WPF.Puppet.DotNetCore.csproj b/Apps/Contoso.WPF.Puppet.DotNetCore/Contoso.WPF.Puppet.DotNetCore.csproj index e7cde89e2..7d2483f79 100644 --- a/Apps/Contoso.WPF.Puppet.DotNetCore/Contoso.WPF.Puppet.DotNetCore.csproj +++ b/Apps/Contoso.WPF.Puppet.DotNetCore/Contoso.WPF.Puppet.DotNetCore.csproj @@ -4,9 +4,9 @@ WinExe netcoreapp3.1 true - 5.0.6-SNAPSHOT + 5.0.7-SNAPSHOT 0.0.0.0 - 5.0.6.0 + 5.0.7.0 diff --git a/Apps/Contoso.WPF.Puppet/Properties/AssemblyInfo.cs b/Apps/Contoso.WPF.Puppet/Properties/AssemblyInfo.cs index 11fab607e..7e068d4e6 100644 --- a/Apps/Contoso.WPF.Puppet/Properties/AssemblyInfo.cs +++ b/Apps/Contoso.WPF.Puppet/Properties/AssemblyInfo.cs @@ -30,5 +30,5 @@ // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] [assembly: AssemblyVersion("0.0.0.0")] -[assembly: AssemblyFileVersion("5.0.6.0")] -[assembly: AssemblyInformationalVersion("5.0.6-SNAPSHOT")] +[assembly: AssemblyFileVersion("5.0.7.0")] +[assembly: AssemblyInformationalVersion("5.0.7-SNAPSHOT")] diff --git a/Apps/Contoso.WinForms.Demo.DotNetCore/Contoso.WinForms.Demo.DotNetCore.csproj b/Apps/Contoso.WinForms.Demo.DotNetCore/Contoso.WinForms.Demo.DotNetCore.csproj index c34c92c48..800ccd4cf 100644 --- a/Apps/Contoso.WinForms.Demo.DotNetCore/Contoso.WinForms.Demo.DotNetCore.csproj +++ b/Apps/Contoso.WinForms.Demo.DotNetCore/Contoso.WinForms.Demo.DotNetCore.csproj @@ -4,11 +4,11 @@ WinExe netcoreapp3.1 true - 5.0.6 + 5.0.7 - - + + diff --git a/Apps/Contoso.WinForms.Demo/Contoso.WinForms.Demo.csproj b/Apps/Contoso.WinForms.Demo/Contoso.WinForms.Demo.csproj index 87b561592..3c8f285dc 100644 --- a/Apps/Contoso.WinForms.Demo/Contoso.WinForms.Demo.csproj +++ b/Apps/Contoso.WinForms.Demo/Contoso.WinForms.Demo.csproj @@ -81,8 +81,8 @@ - - + + diff --git a/Apps/Contoso.WinForms.Demo/Properties/AssemblyInfo.cs b/Apps/Contoso.WinForms.Demo/Properties/AssemblyInfo.cs index 97a3765d9..f3b8d3c58 100644 --- a/Apps/Contoso.WinForms.Demo/Properties/AssemblyInfo.cs +++ b/Apps/Contoso.WinForms.Demo/Properties/AssemblyInfo.cs @@ -28,5 +28,5 @@ // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] [assembly: AssemblyVersion("0.0.0.0")] -[assembly: AssemblyFileVersion("5.0.6.0")] -[assembly: AssemblyInformationalVersion("5.0.6")] +[assembly: AssemblyFileVersion("5.0.7.0")] +[assembly: AssemblyInformationalVersion("5.0.7")] diff --git a/Apps/Contoso.WinForms.Puppet.DotNetCore/Contoso.WinForms.Puppet.DotNetCore.csproj b/Apps/Contoso.WinForms.Puppet.DotNetCore/Contoso.WinForms.Puppet.DotNetCore.csproj index 3ac3ebcbb..829b18c68 100644 --- a/Apps/Contoso.WinForms.Puppet.DotNetCore/Contoso.WinForms.Puppet.DotNetCore.csproj +++ b/Apps/Contoso.WinForms.Puppet.DotNetCore/Contoso.WinForms.Puppet.DotNetCore.csproj @@ -4,7 +4,7 @@ WinExe netcoreapp3.1 true - 5.0.6-SNAPSHOT + 5.0.7-SNAPSHOT diff --git a/Apps/Contoso.WinForms.Puppet/Properties/AssemblyInfo.cs b/Apps/Contoso.WinForms.Puppet/Properties/AssemblyInfo.cs index 32e927eca..d288a5e3b 100644 --- a/Apps/Contoso.WinForms.Puppet/Properties/AssemblyInfo.cs +++ b/Apps/Contoso.WinForms.Puppet/Properties/AssemblyInfo.cs @@ -28,5 +28,5 @@ // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] [assembly: AssemblyVersion("0.0.0.0")] -[assembly: AssemblyFileVersion("5.0.6.0")] -[assembly: AssemblyInformationalVersion("5.0.6-SNAPSHOT")] +[assembly: AssemblyFileVersion("5.0.7.0")] +[assembly: AssemblyInformationalVersion("5.0.7-SNAPSHOT")] diff --git a/Apps/Contoso.WinUI.Desktop.Demo/Contoso.WinUI.Desktop.Demo (Package)/Package.appxmanifest b/Apps/Contoso.WinUI.Desktop.Demo/Contoso.WinUI.Desktop.Demo (Package)/Package.appxmanifest index 3996b079b..fc632287e 100644 --- a/Apps/Contoso.WinUI.Desktop.Demo/Contoso.WinUI.Desktop.Demo (Package)/Package.appxmanifest +++ b/Apps/Contoso.WinUI.Desktop.Demo/Contoso.WinUI.Desktop.Demo (Package)/Package.appxmanifest @@ -9,7 +9,7 @@ + Version="5.0.7.0" /> Contoso.WinUI.Desktop.Demo (Package) diff --git a/Apps/Contoso.WinUI.Desktop.Demo/Contoso.WinUI.Desktop.Demo/Contoso.WinUI.Desktop.Demo.csproj b/Apps/Contoso.WinUI.Desktop.Demo/Contoso.WinUI.Desktop.Demo/Contoso.WinUI.Desktop.Demo.csproj index bb5d57df1..27fa56803 100644 --- a/Apps/Contoso.WinUI.Desktop.Demo/Contoso.WinUI.Desktop.Demo/Contoso.WinUI.Desktop.Demo.csproj +++ b/Apps/Contoso.WinUI.Desktop.Demo/Contoso.WinUI.Desktop.Demo/Contoso.WinUI.Desktop.Demo.csproj @@ -11,8 +11,8 @@ - - + + diff --git a/Apps/Contoso.WinUI.Desktop.Puppet/Contoso.WinUI.Desktop.Puppet (Package)/Package.appxmanifest b/Apps/Contoso.WinUI.Desktop.Puppet/Contoso.WinUI.Desktop.Puppet (Package)/Package.appxmanifest index cbb97970b..a13dbdb45 100644 --- a/Apps/Contoso.WinUI.Desktop.Puppet/Contoso.WinUI.Desktop.Puppet (Package)/Package.appxmanifest +++ b/Apps/Contoso.WinUI.Desktop.Puppet/Contoso.WinUI.Desktop.Puppet (Package)/Package.appxmanifest @@ -9,7 +9,7 @@ + Version="5.0.7.0" /> Contoso.WinUI.Desktop.Puppet (Package) diff --git a/Apps/Contoso.iOS.Puppet/AppDelegate.cs b/Apps/Contoso.iOS.Puppet/AppDelegate.cs deleted file mode 100644 index 1fa7be916..000000000 --- a/Apps/Contoso.iOS.Puppet/AppDelegate.cs +++ /dev/null @@ -1,64 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -#pragma warning disable XI0002 // Notifies you from using newer Apple APIs when targeting an older OS version - -using System; -using Foundation; -using Microsoft.AppCenter; -using Microsoft.AppCenter.Analytics; -using Microsoft.AppCenter.Crashes; -using Microsoft.AppCenter.Distribute; -using UIKit; - -namespace Contoso.iOS.Puppet -{ - [Register("AppDelegate")] - public class AppDelegate : UIApplicationDelegate - { - public override UIWindow Window - { - get; - set; - } - - static bool _didTapNotification; - const string LogTag = "AppCenterXamarinPuppet"; - - public override bool FinishedLaunching(UIApplication application, NSDictionary launchOptions) - { - - // Configure App Center. - AppCenter.LogLevel = LogLevel.Verbose; - AppCenter.SetLogUrl("https://in-integration.dev.avalanch.es"); - Distribute.SetInstallUrl("https://install.portal-server-core-integration.dev.avalanch.es"); - Distribute.SetApiUrl("https://api-gateway-core-integration.dev.avalanch.es/v0.1"); - Distribute.DontCheckForUpdatesInDebug(); - Distribute.WillExitApp = OnWillExitApp; - Distribute.NoReleaseAvailable = OnNoReleaseAvailable; - var plist = NSUserDefaults.StandardUserDefaults; - var storageSizeValue = plist.IntForKey(Constants.StorageSizeKey); - if (storageSizeValue > 0) - { - AppCenter.SetMaxStorageSizeAsync(storageSizeValue); - } - if (plist.BoolForKey(Constants.EnableManualSessionTrackerKey)) { - Analytics.EnableManualSessionTracker(); - } - var appCenterSecret = Environment.GetEnvironmentVariable("XAMARIN_IOS_INT"); - AppCenter.Start(appCenterSecret, typeof(Analytics), typeof(Crashes), typeof(Distribute)); - return true; - } - - void OnWillExitApp() - { - AppCenterLog.Info(LogTag, "App will close callback invoked."); - } - - void OnNoReleaseAvailable() - { - AppCenterLog.Info(LogTag, "No release available callback invoked."); - } - } -} - diff --git a/Apps/Contoso.iOS.Puppet/Assets.xcassets/AppIcon.appiconset/Contents.json b/Apps/Contoso.iOS.Puppet/Assets.xcassets/AppIcon.appiconset/Contents.json deleted file mode 100644 index 4e646784c..000000000 --- a/Apps/Contoso.iOS.Puppet/Assets.xcassets/AppIcon.appiconset/Contents.json +++ /dev/null @@ -1,157 +0,0 @@ -{ - "images": [ - { - "idiom": "iphone", - "size": "29x29", - "scale": "1x" - }, - { - "idiom": "iphone", - "size": "29x29", - "scale": "2x" - }, - { - "idiom": "iphone", - "size": "29x29", - "scale": "3x" - }, - { - "idiom": "iphone", - "size": "40x40", - "scale": "2x" - }, - { - "idiom": "iphone", - "size": "40x40", - "scale": "3x" - }, - { - "idiom": "iphone", - "size": "57x57", - "scale": "1x" - }, - { - "idiom": "iphone", - "size": "57x57", - "scale": "2x" - }, - { - "idiom": "iphone", - "size": "60x60", - "scale": "2x" - }, - { - "idiom": "iphone", - "size": "60x60", - "scale": "3x" - }, - { - "idiom": "ipad", - "size": "29x29", - "scale": "1x" - }, - { - "idiom": "ipad", - "size": "29x29", - "scale": "2x" - }, - { - "idiom": "ipad", - "size": "40x40", - "scale": "1x" - }, - { - "idiom": "ipad", - "size": "40x40", - "scale": "2x" - }, - { - "idiom": "ipad", - "size": "50x50", - "scale": "1x" - }, - { - "idiom": "ipad", - "size": "50x50", - "scale": "2x" - }, - { - "idiom": "ipad", - "size": "72x72", - "scale": "1x" - }, - { - "idiom": "ipad", - "size": "72x72", - "scale": "2x" - }, - { - "idiom": "ipad", - "size": "76x76", - "scale": "1x" - }, - { - "idiom": "ipad", - "size": "76x76", - "scale": "2x" - }, - { - "size": "24x24", - "idiom": "watch", - "scale": "2x", - "role": "notificationCenter", - "subtype": "38mm" - }, - { - "size": "27.5x27.5", - "idiom": "watch", - "scale": "2x", - "role": "notificationCenter", - "subtype": "42mm" - }, - { - "size": "29x29", - "idiom": "watch", - "role": "companionSettings", - "scale": "2x" - }, - { - "size": "29x29", - "idiom": "watch", - "role": "companionSettings", - "scale": "3x" - }, - { - "size": "40x40", - "idiom": "watch", - "scale": "2x", - "role": "appLauncher", - "subtype": "38mm" - }, - { - "size": "44x44", - "idiom": "watch", - "scale": "2x", - "role": "longLook", - "subtype": "42mm" - }, - { - "size": "86x86", - "idiom": "watch", - "scale": "2x", - "role": "quickLook", - "subtype": "38mm" - }, - { - "size": "98x98", - "idiom": "watch", - "scale": "2x", - "role": "quickLook", - "subtype": "42mm" - } - ], - "info": { - "version": 1, - "author": "xcode" - } -} \ No newline at end of file diff --git a/Apps/Contoso.iOS.Puppet/Assets.xcassets/Contents.json b/Apps/Contoso.iOS.Puppet/Assets.xcassets/Contents.json deleted file mode 100644 index 4caf392f9..000000000 --- a/Apps/Contoso.iOS.Puppet/Assets.xcassets/Contents.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/Apps/Contoso.iOS.Puppet/Assets.xcassets/First.imageset/Contents.json b/Apps/Contoso.iOS.Puppet/Assets.xcassets/First.imageset/Contents.json deleted file mode 100644 index dbeeb8907..000000000 --- a/Apps/Contoso.iOS.Puppet/Assets.xcassets/First.imageset/Contents.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "images": [ - { - "filename": "vector.pdf", - "idiom": "universal" - }, - { - "scale": "1x", - "idiom": "universal" - }, - { - "scale": "2x", - "idiom": "universal" - }, - { - "scale": "3x", - "idiom": "universal" - }, - { - "idiom": "iphone" - }, - { - "scale": "1x", - "idiom": "iphone" - }, - { - "scale": "2x", - "idiom": "iphone" - }, - { - "subtype": "retina4", - "scale": "2x", - "idiom": "iphone" - }, - { - "scale": "3x", - "idiom": "iphone" - }, - { - "idiom": "ipad" - }, - { - "scale": "1x", - "idiom": "ipad" - }, - { - "scale": "2x", - "idiom": "ipad" - } - ], - "info": { - "version": 1, - "author": "xcode" - } -} diff --git a/Apps/Contoso.iOS.Puppet/Assets.xcassets/First.imageset/vector.pdf b/Apps/Contoso.iOS.Puppet/Assets.xcassets/First.imageset/vector.pdf deleted file mode 100644 index 47d911dea..000000000 Binary files a/Apps/Contoso.iOS.Puppet/Assets.xcassets/First.imageset/vector.pdf and /dev/null differ diff --git a/Apps/Contoso.iOS.Puppet/Assets.xcassets/Second.imageset/Contents.json b/Apps/Contoso.iOS.Puppet/Assets.xcassets/Second.imageset/Contents.json deleted file mode 100644 index dbeeb8907..000000000 --- a/Apps/Contoso.iOS.Puppet/Assets.xcassets/Second.imageset/Contents.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "images": [ - { - "filename": "vector.pdf", - "idiom": "universal" - }, - { - "scale": "1x", - "idiom": "universal" - }, - { - "scale": "2x", - "idiom": "universal" - }, - { - "scale": "3x", - "idiom": "universal" - }, - { - "idiom": "iphone" - }, - { - "scale": "1x", - "idiom": "iphone" - }, - { - "scale": "2x", - "idiom": "iphone" - }, - { - "subtype": "retina4", - "scale": "2x", - "idiom": "iphone" - }, - { - "scale": "3x", - "idiom": "iphone" - }, - { - "idiom": "ipad" - }, - { - "scale": "1x", - "idiom": "ipad" - }, - { - "scale": "2x", - "idiom": "ipad" - } - ], - "info": { - "version": 1, - "author": "xcode" - } -} diff --git a/Apps/Contoso.iOS.Puppet/Assets.xcassets/Second.imageset/vector.pdf b/Apps/Contoso.iOS.Puppet/Assets.xcassets/Second.imageset/vector.pdf deleted file mode 100644 index 401614e28..000000000 Binary files a/Apps/Contoso.iOS.Puppet/Assets.xcassets/Second.imageset/vector.pdf and /dev/null differ diff --git a/Apps/Contoso.iOS.Puppet/Constants.cs b/Apps/Contoso.iOS.Puppet/Constants.cs deleted file mode 100644 index 557e93da4..000000000 --- a/Apps/Contoso.iOS.Puppet/Constants.cs +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -namespace Contoso.iOS.Puppet -{ - public static class Constants - { - public const string Verbose = "Verbose"; - public const string Debug = "Debug"; - public const string Info = "Info"; - public const string Warning = "Warning"; - public const string Error = "Error"; - public const string StorageSizeKey = "AppCenterStorageSizeKey"; - public const string EnableManualSessionTrackerKey = "EnableManualSessionTrackerKey"; - } -} diff --git a/Apps/Contoso.iOS.Puppet/Contoso.iOS.Puppet.csproj b/Apps/Contoso.iOS.Puppet/Contoso.iOS.Puppet.csproj deleted file mode 100644 index 429433b00..000000000 --- a/Apps/Contoso.iOS.Puppet/Contoso.iOS.Puppet.csproj +++ /dev/null @@ -1,184 +0,0 @@ - - - - Debug - iPhoneSimulator - {7595F47D-11D6-4716-BDE6-264C1AFBFFB5} - {FEACFBD2-3405-455C-9665-78FE426C6842};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} - Exe - Contoso.iOS.Puppet - Contoso.iOS.Puppet - Resources - - - true - full - false - bin\iPhoneSimulator\Debug - DEBUG;ENABLE_TEST_CLOUD; - prompt - 4 - iPhone Developer - true - true - None - i386, x86_64 - HttpClientHandler - Default - false - - - Entitlements.plist - - - pdbonly - true - bin\iPhone\Release - - - prompt - 4 - iPhone Developer - true - Entitlements.plist - SdkOnly - ARMv7, ARM64 - HttpClientHandler - Default - - - pdbonly - true - bin\iPhoneSimulator\Release - - - prompt - 4 - iPhone Developer - Full - i386, x86_64 - HttpClientHandler - Default - Entitlements.plist - - - true - full - false - bin\iPhone\Debug - DEBUG;ENABLE_TEST_CLOUD; - prompt - 4 - iPhone Developer - true - true - false - true - Entitlements.plist - SdkOnly - ARMv7, ARM64 - HttpClientHandler - Default - - - - - - - - - - - - - ..\..\packages\Newtonsoft.Json.13.0.2\lib\netstandard2.0\Newtonsoft.Json.dll - - - - - false - - - false - - - false - - - false - - - false - - - false - - - - - - - - - - - - - - - - - - - - - - - - - AnalyticsController.cs - - - - CrashesController.cs - - - - DistributeController.cs - - - - AppCenterController.cs - - - - TabBarController.cs - - - - LogLevelController.cs - - - - - - - - - - - - Microsoft.AppCenter.Distribute.Apple.Mono - - - Microsoft.AppCenter.Crashes.Apple.Mono - - - Microsoft.AppCenter.Apple.Mono - - - Microsoft.AppCenter.Analytics.Apple.Mono - - - - \ No newline at end of file diff --git a/Apps/Contoso.iOS.Puppet/Entitlements.plist b/Apps/Contoso.iOS.Puppet/Entitlements.plist deleted file mode 100644 index 903def2af..000000000 --- a/Apps/Contoso.iOS.Puppet/Entitlements.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - aps-environment - development - - diff --git a/Apps/Contoso.iOS.Puppet/FakeService.cs b/Apps/Contoso.iOS.Puppet/FakeService.cs deleted file mode 100644 index 410c45ccb..000000000 --- a/Apps/Contoso.iOS.Puppet/FakeService.cs +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System.IO; -using System.Threading.Tasks; - -namespace Contoso.iOS.Puppet -{ - static class FakeService - { - internal async static Task DoStuffInBackground() - { - await Task.Run(() => { throw new IOException("Server did not respond"); }); - } - } -} diff --git a/Apps/Contoso.iOS.Puppet/Info.plist b/Apps/Contoso.iOS.Puppet/Info.plist deleted file mode 100644 index 32bf516e9..000000000 --- a/Apps/Contoso.iOS.Puppet/Info.plist +++ /dev/null @@ -1,61 +0,0 @@ - - - - - CFBundleName - ACPuppet - CFBundleIdentifier - com.microsoft.appcenter.xamarin.ios.puppet - CFBundleShortVersionString - 5.0.6 - CFBundleVersion - 5.0.6 - LSRequiresIPhoneOS - - MinimumOSVersion - 9.0 - UIDeviceFamily - - 1 - 2 - - UILaunchStoryboardName - LaunchScreen - UIMainStoryboardFile - Main - UIRequiredDeviceCapabilities - - armv7 - - UISupportedInterfaceOrientations - - UIInterfaceOrientationPortrait - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - CFBundleURLTypes - - - CFBundleTypeRole - None - CFBundleURLName - com.microsoft.appcenter.xamarin.ios.puppet - CFBundleURLSchemes - - appcenter-e94aaff4-e80d-4fee-9a5f-a84eb6e688fc - - - - XSAppIconAssets - Assets.xcassets/AppIcon.appiconset - NSAppTransportSecurity - - NSAllowsArbitraryLoads - - - UIBackgroundModes - - remote-notification - - - diff --git a/Apps/Contoso.iOS.Puppet/LaunchScreen.storyboard b/Apps/Contoso.iOS.Puppet/LaunchScreen.storyboard deleted file mode 100644 index 7981a14b7..000000000 --- a/Apps/Contoso.iOS.Puppet/LaunchScreen.storyboard +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Apps/Contoso.iOS.Puppet/Main.cs b/Apps/Contoso.iOS.Puppet/Main.cs deleted file mode 100644 index 962c7f369..000000000 --- a/Apps/Contoso.iOS.Puppet/Main.cs +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using UIKit; - -namespace Contoso.iOS.Puppet -{ - public static class Application - { - // This is the main entry point of the application. - static void Main(string[] args) - { - // if you want to use a different Application Delegate class from "AppDelegate" - // you can specify it here. - UIApplication.Main(args, null, "AppDelegate"); - } - } -} diff --git a/Apps/Contoso.iOS.Puppet/Main.storyboard b/Apps/Contoso.iOS.Puppet/Main.storyboard deleted file mode 100644 index 4248074e9..000000000 --- a/Apps/Contoso.iOS.Puppet/Main.storyboard +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Apps/Contoso.iOS.Puppet/ModulePages/Analytics.storyboard b/Apps/Contoso.iOS.Puppet/ModulePages/Analytics.storyboard deleted file mode 100644 index fa16d8d79..000000000 --- a/Apps/Contoso.iOS.Puppet/ModulePages/Analytics.storyboard +++ /dev/null @@ -1,264 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Apps/Contoso.iOS.Puppet/ModulePages/AnalyticsController.cs b/Apps/Contoso.iOS.Puppet/ModulePages/AnalyticsController.cs deleted file mode 100644 index b1ff3475e..000000000 --- a/Apps/Contoso.iOS.Puppet/ModulePages/AnalyticsController.cs +++ /dev/null @@ -1,112 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System; -using System.Collections.Generic; -using System.Linq; -using Foundation; -using Microsoft.AppCenter; -using Microsoft.AppCenter.Analytics; -using UIKit; - -namespace Contoso.iOS.Puppet -{ - - public partial class AnalyticsController : UITableViewController - { - public class PropertiesTableSource : UITableViewSource - { - private readonly IDictionary mEventProperties; - private readonly string[] mKeys; - - public PropertiesTableSource(IDictionary eventProperties) - { - mEventProperties = eventProperties; - mKeys = mEventProperties.Keys.ToArray(); - } - - public override nint RowsInSection(UITableView tableview, nint section) - { - return mKeys.Length; - } - - public override UITableViewCell GetCell(UITableView tableView, NSIndexPath indexPath) - { - var cell = tableView.DequeueReusableCell("PropertiesCell"); - var key = mKeys[indexPath.Row]; - var value = mEventProperties[key]; - - cell.TextLabel.Text = key; - cell.DetailTextLabel.Text = value; - - return cell; - } - } - - private readonly IDictionary mEventProperties = new Dictionary(); - private NSUserDefaults plist = NSUserDefaults.StandardUserDefaults; - - public AnalyticsController(IntPtr handle) : base(handle) - { - } - - public override void ViewDidAppear(bool animated) - { - base.ViewDidAppear(animated); - AnalyticsEnabledSwitch.On = Analytics.IsEnabledAsync().Result; - AnalyticsEnabledSwitch.Enabled = AppCenter.IsEnabledAsync().Result; - NumPropertiesLabel.Text = mEventProperties.Count.ToString(); - - // Set enabled manual session tracker value. - EnableManualSessionTrackerSwitch.On = plist.BoolForKey(Constants.EnableManualSessionTrackerKey); - } - - public override void PrepareForSegue(UIStoryboardSegue segue, NSObject sender) - { - base.PrepareForSegue(segue, sender); - - var tableViewContoller = segue.DestinationViewController as UITableViewController; - if (tableViewContoller != null) - { - tableViewContoller.TableView.Source = new PropertiesTableSource(mEventProperties); - } - } - - partial void UpdateEnabled() - { - Analytics.SetEnabledAsync(AnalyticsEnabledSwitch.On).Wait(); - AnalyticsEnabledSwitch.On = Analytics.IsEnabledAsync().Result; - } - - partial void SessionGenerationUpdate(NSObject sender) - { - plist.SetBool(EnableManualSessionTrackerSwitch.On, Constants.EnableManualSessionTrackerKey); - } - - partial void StartSession(NSObject sender) - { - Analytics.StartSession(); - } - - partial void AddProperty() - { - var alert = UIAlertController.Create("Add Property", "Please enter a property values to add to the event", UIAlertControllerStyle.Alert); - alert.AddTextField(textField => textField.Placeholder = "Property Name"); - alert.AddTextField(textField => textField.Placeholder = "Property Value"); - alert.AddAction(UIAlertAction.Create("Add Property", UIAlertActionStyle.Default, Action => - { - mEventProperties.Add(alert.TextFields[0].Text, alert.TextFields[1].Text); - NumPropertiesLabel.Text = mEventProperties.Count.ToString(); - })); - alert.AddAction(UIAlertAction.Create("Cancel", UIAlertActionStyle.Cancel, null)); - PresentViewController(alert, true, null); - } - - partial void TrackEvent() - { - Analytics.TrackEvent(EventName.Text, mEventProperties.Count > 0 ? mEventProperties : null); - mEventProperties.Clear(); - NumPropertiesLabel.Text = mEventProperties.Count.ToString(); - } - } -} diff --git a/Apps/Contoso.iOS.Puppet/ModulePages/AnalyticsController.designer.cs b/Apps/Contoso.iOS.Puppet/ModulePages/AnalyticsController.designer.cs deleted file mode 100644 index 714c3b19a..000000000 --- a/Apps/Contoso.iOS.Puppet/ModulePages/AnalyticsController.designer.cs +++ /dev/null @@ -1,65 +0,0 @@ -// WARNING -// -// This file has been generated automatically by Visual Studio from the outlets and -// actions declared in your storyboard file. -// Manual changes to this file will not be maintained. -// -using Foundation; -using System.CodeDom.Compiler; - -namespace Contoso.iOS.Puppet -{ - [Register ("AnalyticsController")] - partial class AnalyticsController - { - [Outlet] - UIKit.UISwitch AnalyticsEnabledSwitch { get; set; } - - [Outlet] - UIKit.UISwitch EnableManualSessionTrackerSwitch { get; set; } - - [Outlet] - UIKit.UITextField EventName { get; set; } - - [Outlet] - UIKit.UILabel NumPropertiesLabel { get; set; } - - [Action ("AddProperty")] - partial void AddProperty (); - - [Action ("SessionGenerationUpdate:")] - partial void SessionGenerationUpdate (Foundation.NSObject sender); - - [Action ("StartSession:")] - partial void StartSession (Foundation.NSObject sender); - - [Action ("TrackEvent")] - partial void TrackEvent (); - - [Action ("UpdateEnabled")] - partial void UpdateEnabled (); - - void ReleaseDesignerOutlets () - { - if (EnableManualSessionTrackerSwitch != null) { - EnableManualSessionTrackerSwitch.Dispose (); - EnableManualSessionTrackerSwitch = null; - } - - if (AnalyticsEnabledSwitch != null) { - AnalyticsEnabledSwitch.Dispose (); - AnalyticsEnabledSwitch = null; - } - - if (EventName != null) { - EventName.Dispose (); - EventName = null; - } - - if (NumPropertiesLabel != null) { - NumPropertiesLabel.Dispose (); - NumPropertiesLabel = null; - } - } - } -} diff --git a/Apps/Contoso.iOS.Puppet/ModulePages/AppCenter.storyboard b/Apps/Contoso.iOS.Puppet/ModulePages/AppCenter.storyboard deleted file mode 100644 index 1a756b048..000000000 --- a/Apps/Contoso.iOS.Puppet/ModulePages/AppCenter.storyboard +++ /dev/null @@ -1,428 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Apps/Contoso.iOS.Puppet/ModulePages/AppCenterController.cs b/Apps/Contoso.iOS.Puppet/ModulePages/AppCenterController.cs deleted file mode 100644 index 0e35c87bc..000000000 --- a/Apps/Contoso.iOS.Puppet/ModulePages/AppCenterController.cs +++ /dev/null @@ -1,119 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System; -using System.Collections.Generic; -using Foundation; -using Microsoft.AppCenter; -using UIKit; - -namespace Contoso.iOS.Puppet -{ - public partial class AppCenterController : UITableViewController - { - const string LogTag = "AppCenterXamarinPuppet"; - - private static readonly IDictionary> LogFunctions = new Dictionary> { - { LogLevel.Verbose, AppCenterLog.Verbose }, - { LogLevel.Debug, AppCenterLog.Debug }, - { LogLevel.Info, AppCenterLog.Info }, - { LogLevel.Warn, AppCenterLog.Warn }, - { LogLevel.Error, AppCenterLog.Error } - }; - private static readonly IDictionary LogLevelNames = new Dictionary { - { LogLevel.Verbose, Constants.Verbose }, - { LogLevel.Debug, Constants.Debug }, - { LogLevel.Info, Constants.Info }, - { LogLevel.Warn, Constants.Warning }, - { LogLevel.Error, Constants.Error } - }; - private LogLevel mLogWriteLevel = LogLevel.Verbose; - - public AppCenterController(IntPtr handle) : base(handle) - { - } - - public override void ViewDidAppear(bool animated) - { - base.ViewDidAppear(animated); - AppCenterEnabledSwitch.On = AppCenter.IsEnabledAsync().Result; - - AppCenterNetworkRequestAllowedSwitch.On = AppCenter.IsNetworkRequestsAllowed; - LogLevelLabel.Text = LogLevelNames[AppCenter.LogLevel]; - LogWriteLevelLabel.Text = LogLevelNames[mLogWriteLevel]; - - // Set max storage size value. - var plist = NSUserDefaults.StandardUserDefaults; - var storageSizeValue = plist.IntForKey(Constants.StorageSizeKey); - if (storageSizeValue > 0) - { - StorageSizeText.Text = storageSizeValue.ToString(); - } - } - - partial void UpdateUserId(UITextField sender) - { - var text = string.IsNullOrEmpty(sender.Text) ? null : sender.Text; - AppCenter.SetUserId(text); - } - - public override void PrepareForSegue(UIStoryboardSegue segue, NSObject sender) - { - base.PrepareForSegue(segue, sender); - - var logLevelContoller = segue.DestinationViewController as LogLevelController; - if (logLevelContoller != null) - { - switch (segue.Identifier) - { - case "LogLevel": - logLevelContoller.LevelSelected += level => - { - AppCenter.LogLevel = level; - }; - break; - case "LogWriteLevel": - logLevelContoller.LevelSelected += level => - { - mLogWriteLevel = level; - LogWriteLevelLabel.Text = LogLevelNames[mLogWriteLevel]; - }; - break; - } - } - } - - partial void UpdateEnabled() - { - AppCenter.SetEnabledAsync(AppCenterEnabledSwitch.On).Wait(); - AppCenterEnabledSwitch.On = AppCenter.IsEnabledAsync().Result; - } - - partial void NetworkRequestAllowedSwitch() - { - AppCenter.IsNetworkRequestsAllowed = AppCenterNetworkRequestAllowedSwitch.On; - } - - partial void WriteLog() - { - string message = LogWriteMessage.Text; - string tag = LogWriteTag.Text; - LogFunctions[mLogWriteLevel](tag, message); - } - - partial void SaveStorageSize(NSObject sender) - { - var inputText = StorageSizeText.Text; - if (int.TryParse(inputText, out var size)) - { - AppCenter.SetMaxStorageSizeAsync(size); - var plist = NSUserDefaults.StandardUserDefaults; - plist.SetInt(size, Constants.StorageSizeKey); - } - else - { - AppCenterLog.Error(LogTag, "Wrong number value for the max storage size."); - } - } - } -} diff --git a/Apps/Contoso.iOS.Puppet/ModulePages/AppCenterController.designer.cs b/Apps/Contoso.iOS.Puppet/ModulePages/AppCenterController.designer.cs deleted file mode 100644 index 427cd73bb..000000000 --- a/Apps/Contoso.iOS.Puppet/ModulePages/AppCenterController.designer.cs +++ /dev/null @@ -1,98 +0,0 @@ -// WARNING -// -// This file has been generated automatically by Visual Studio to store outlets and -// actions made in the UI designer. If it is removed, they will be lost. -// Manual changes to this file may not be handled correctly. -// -using Foundation; -using System.CodeDom.Compiler; - -namespace Contoso.iOS.Puppet -{ - [Register ("AppCenterController")] - partial class AppCenterController - { - [Outlet] - UIKit.UISwitch AppCenterEnabledSwitch { get; set; } - - [Outlet] - UIKit.UISwitch AppCenterNetworkRequestAllowedSwitch { get; set; } - - [Outlet] - UIKit.UILabel LogLevelLabel { get; set; } - - [Outlet] - UIKit.UILabel LogWriteLevelLabel { get; set; } - - [Outlet] - UIKit.UITextField LogWriteMessage { get; set; } - - [Outlet] - UIKit.UITextField LogWriteTag { get; set; } - - [Outlet] - UIKit.UITextField StorageSizeText { get; set; } - - [Outlet] - [GeneratedCode ("iOS Designer", "1.0")] - UIKit.UITextField UserIdTextField { get; set; } - - [Action ("NetworkRequestAllowedSwitch")] - partial void NetworkRequestAllowedSwitch (); - - [Action ("SaveStorageSize:")] - partial void SaveStorageSize (Foundation.NSObject sender); - - [Action ("UpdateEnabled")] - partial void UpdateEnabled (); - - [Action ("UpdateUserId:")] - partial void UpdateUserId (UIKit.UITextField sender); - - [Action ("WriteLog")] - partial void WriteLog (); - - void ReleaseDesignerOutlets () - { - if (AppCenterEnabledSwitch != null) { - AppCenterEnabledSwitch.Dispose (); - AppCenterEnabledSwitch = null; - } - - if (AppCenterNetworkRequestAllowedSwitch != null) { - AppCenterNetworkRequestAllowedSwitch.Dispose (); - AppCenterNetworkRequestAllowedSwitch = null; - } - - if (LogLevelLabel != null) { - LogLevelLabel.Dispose (); - LogLevelLabel = null; - } - - if (LogWriteLevelLabel != null) { - LogWriteLevelLabel.Dispose (); - LogWriteLevelLabel = null; - } - - if (LogWriteMessage != null) { - LogWriteMessage.Dispose (); - LogWriteMessage = null; - } - - if (StorageSizeText != null) { - StorageSizeText.Dispose (); - StorageSizeText = null; - } - - if (LogWriteTag != null) { - LogWriteTag.Dispose (); - LogWriteTag = null; - } - - if (UserIdTextField != null) { - UserIdTextField.Dispose (); - UserIdTextField = null; - } - } - } -} diff --git a/Apps/Contoso.iOS.Puppet/ModulePages/Crashes.storyboard b/Apps/Contoso.iOS.Puppet/ModulePages/Crashes.storyboard deleted file mode 100644 index 388b6aa02..000000000 --- a/Apps/Contoso.iOS.Puppet/ModulePages/Crashes.storyboard +++ /dev/null @@ -1,199 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Apps/Contoso.iOS.Puppet/ModulePages/CrashesController.cs b/Apps/Contoso.iOS.Puppet/ModulePages/CrashesController.cs deleted file mode 100644 index 9cfef9b44..000000000 --- a/Apps/Contoso.iOS.Puppet/ModulePages/CrashesController.cs +++ /dev/null @@ -1,132 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System; -using System.IO; -using Foundation; -using Microsoft.AppCenter; -using Microsoft.AppCenter.Crashes; -using UIKit; - -namespace Contoso.iOS.Puppet -{ - public partial class CrashesController : UITableViewController - { - public CrashesController(IntPtr handle) : base(handle) - { - } - - public override void ViewDidAppear(bool animated) - { - base.ViewDidAppear(animated); - CrashesEnabledSwitch.On = Crashes.IsEnabledAsync().Result; - CrashesEnabledSwitch.Enabled = AppCenter.IsEnabledAsync().Result; - } - - partial void UpdateEnabled() - { - Crashes.SetEnabledAsync(CrashesEnabledSwitch.On).Wait(); - CrashesEnabledSwitch.On = Crashes.IsEnabledAsync().Result; - } - - partial void TestCrash() - { - Crashes.GenerateTestCrash(); - } - - partial void DivideByZero() - { - /* This is supposed to cause a crash, so we don't care that the variable 'x' is never used */ -#pragma warning disable CS0219 - int x = (42 / int.Parse("0")); -#pragma warning restore CS0219 - } - - partial void CatchNullReferenceException() - { - try - { - TriggerNullReferenceException(); - } - catch (NullReferenceException) - { - System.Diagnostics.Debug.WriteLine("null reference exception"); - } - } - - partial void CrashWithNullReferenceException() - { - TriggerNullReferenceException(); - } - - void TriggerNullReferenceException() - { - string[] values = { "one", null, "two" }; - for (int ctr = 0; ctr <= values.GetUpperBound(0); ctr++) - { - var val = values[ctr].Trim(); - var separator = ctr == values.GetUpperBound(0) ? "" : ", "; - System.Diagnostics.Debug.WriteLine("{0}{1}", val, separator); - } - System.Diagnostics.Debug.WriteLine(""); - } - - partial void CrashWithAggregateException() - { - throw PrepareException(); - } - - static Exception PrepareException() - { - try - { - throw new AggregateException(SendHttp(), new ArgumentException("Invalid parameter", ValidateLength())); - } - catch (Exception e) - { - return e; - } - } - - static Exception SendHttp() - { - try - { - throw new IOException("Network down"); - } - catch (Exception e) - { - return e; - } - } - - static Exception ValidateLength() - { - try - { - throw new ArgumentOutOfRangeException(null, "It's over 9000!"); - } - catch (Exception e) - { - return e; - } - } - - async partial void CrashAsync() - { - await FakeService.DoStuffInBackground(); - } - - partial void NativeCrash() - { - try - { - NSNull.Null.PerformSelector(new ObjCRuntime.Selector("isEqualToString:")); - } - catch(Exception ex) - { - Crashes.TrackError(ex); - } - } - } -} diff --git a/Apps/Contoso.iOS.Puppet/ModulePages/CrashesController.designer.cs b/Apps/Contoso.iOS.Puppet/ModulePages/CrashesController.designer.cs deleted file mode 100644 index d5452bc47..000000000 --- a/Apps/Contoso.iOS.Puppet/ModulePages/CrashesController.designer.cs +++ /dev/null @@ -1,58 +0,0 @@ -// WARNING -// -// This file has been generated automatically by Visual Studio from the outlets and -// actions declared in your storyboard file. -// Manual changes to this file will not be maintained. -// -using Foundation; -using System; -using System.CodeDom.Compiler; - -namespace Contoso.iOS.Puppet -{ - [Register ("CrashesController")] - partial class CrashesController - { - [Outlet] - UIKit.UISwitch CrashesEnabledSwitch { get; set; } - - - [Action ("CatchNullReferenceException")] - partial void CatchNullReferenceException (); - - - [Action ("CrashAsync")] - partial void CrashAsync (); - - - [Action ("CrashWithAggregateException")] - partial void CrashWithAggregateException (); - - - [Action ("CrashWithNullReferenceException")] - partial void CrashWithNullReferenceException (); - - - [Action ("DivideByZero")] - partial void DivideByZero (); - - - [Action ("TestCrash")] - partial void TestCrash (); - - - [Action ("UpdateEnabled")] - partial void UpdateEnabled (); - - [Action ("NativeCrash")] - partial void NativeCrash (); - - void ReleaseDesignerOutlets () - { - if (CrashesEnabledSwitch != null) { - CrashesEnabledSwitch.Dispose (); - CrashesEnabledSwitch = null; - } - } - } -} \ No newline at end of file diff --git a/Apps/Contoso.iOS.Puppet/ModulePages/Distribute.storyboard b/Apps/Contoso.iOS.Puppet/ModulePages/Distribute.storyboard deleted file mode 100644 index 86e90fe22..000000000 --- a/Apps/Contoso.iOS.Puppet/ModulePages/Distribute.storyboard +++ /dev/null @@ -1,73 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Apps/Contoso.iOS.Puppet/ModulePages/DistributeController.cs b/Apps/Contoso.iOS.Puppet/ModulePages/DistributeController.cs deleted file mode 100644 index 3a060c03d..000000000 --- a/Apps/Contoso.iOS.Puppet/ModulePages/DistributeController.cs +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System; -using Microsoft.AppCenter; -using Microsoft.AppCenter.Distribute; -using UIKit; - -namespace Contoso.iOS.Puppet -{ - public partial class DistributeController : UITableViewController - { - public DistributeController(IntPtr handle) : base(handle) - { - } - - public override void ViewDidAppear(bool animated) - { - base.ViewDidAppear(animated); - DistributeEnabledSwitch.On = Distribute.IsEnabledAsync().Result; - DistributeEnabledSwitch.Enabled = AppCenter.IsEnabledAsync().Result; - } - - partial void UpdateEnabled() - { - Distribute.SetEnabledAsync(DistributeEnabledSwitch.On).Wait(); - DistributeEnabledSwitch.On = Distribute.IsEnabledAsync().Result; - } - } -} diff --git a/Apps/Contoso.iOS.Puppet/ModulePages/DistributeController.designer.cs b/Apps/Contoso.iOS.Puppet/ModulePages/DistributeController.designer.cs deleted file mode 100644 index 89016c448..000000000 --- a/Apps/Contoso.iOS.Puppet/ModulePages/DistributeController.designer.cs +++ /dev/null @@ -1,31 +0,0 @@ -// WARNING -// -// This file has been generated automatically by Visual Studio from the outlets and -// actions declared in your storyboard file. -// Manual changes to this file will not be maintained. -// -using Foundation; -using System; -using System.CodeDom.Compiler; - -namespace Contoso.iOS.Puppet -{ - [Register ("DistributeController")] - partial class DistributeController - { - [Outlet] - UIKit.UISwitch DistributeEnabledSwitch { get; set; } - - - [Action ("UpdateEnabled")] - partial void UpdateEnabled (); - - void ReleaseDesignerOutlets () - { - if (DistributeEnabledSwitch != null) { - DistributeEnabledSwitch.Dispose (); - DistributeEnabledSwitch = null; - } - } - } -} \ No newline at end of file diff --git a/Apps/Contoso.iOS.Puppet/ModulePages/LogLevelController.cs b/Apps/Contoso.iOS.Puppet/ModulePages/LogLevelController.cs deleted file mode 100644 index 23632d76b..000000000 --- a/Apps/Contoso.iOS.Puppet/ModulePages/LogLevelController.cs +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System; -using System.Collections.Generic; -using Foundation; -using Microsoft.AppCenter; -using UIKit; - -namespace Contoso.iOS.Puppet -{ - public partial class LogLevelController : UITableViewController - { - private readonly IDictionary mLogLevels = new Dictionary { - { Constants.Verbose, LogLevel.Verbose }, - { Constants.Debug, LogLevel.Debug }, - { Constants.Info, LogLevel.Info }, - { Constants.Warning, LogLevel.Warn }, - { Constants.Error, LogLevel.Error } - }; - public event Action LevelSelected; - - public LogLevelController(IntPtr handle) : base(handle) - { - } - - public override void RowSelected(UITableView tableView, NSIndexPath indexPath) - { - var cell = tableView.CellAt(indexPath); - LevelSelected?.Invoke(mLogLevels[cell.TextLabel.Text]); - tableView.DeselectRow(indexPath, true); - NavigationController.PopViewController(true); - } - } -} diff --git a/Apps/Contoso.iOS.Puppet/ModulePages/LogLevelController.designer.cs b/Apps/Contoso.iOS.Puppet/ModulePages/LogLevelController.designer.cs deleted file mode 100644 index f21965144..000000000 --- a/Apps/Contoso.iOS.Puppet/ModulePages/LogLevelController.designer.cs +++ /dev/null @@ -1,21 +0,0 @@ -// WARNING -// -// This file has been generated automatically by Xamarin Studio from the outlets and -// actions declared in your storyboard file. -// Manual changes to this file will not be maintained. -// -using Foundation; -using System; -using System.CodeDom.Compiler; -using UIKit; - -namespace Contoso.iOS.Puppet -{ - [Register("LogLevelController")] - partial class LogLevelController - { - void ReleaseDesignerOutlets() - { - } - } -} diff --git a/Apps/Contoso.iOS.Puppet/Resources/bolt@2x.png b/Apps/Contoso.iOS.Puppet/Resources/bolt@2x.png deleted file mode 100644 index 48c3d8a19..000000000 Binary files a/Apps/Contoso.iOS.Puppet/Resources/bolt@2x.png and /dev/null differ diff --git a/Apps/Contoso.iOS.Puppet/Resources/lightning@2x.png b/Apps/Contoso.iOS.Puppet/Resources/lightning@2x.png deleted file mode 100644 index 58e552a1e..000000000 Binary files a/Apps/Contoso.iOS.Puppet/Resources/lightning@2x.png and /dev/null differ diff --git a/Apps/Contoso.iOS.Puppet/Resources/socket@2x.png b/Apps/Contoso.iOS.Puppet/Resources/socket@2x.png deleted file mode 100644 index 738bc6a9a..000000000 Binary files a/Apps/Contoso.iOS.Puppet/Resources/socket@2x.png and /dev/null differ diff --git a/Apps/Contoso.iOS.Puppet/TabBarController.cs b/Apps/Contoso.iOS.Puppet/TabBarController.cs deleted file mode 100644 index 3ecc7aab7..000000000 --- a/Apps/Contoso.iOS.Puppet/TabBarController.cs +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System; - -using UIKit; - -namespace Contoso.iOS.Puppet -{ - public partial class TabBarController : UITabBarController - { - public TabBarController(IntPtr handle) : base(handle) - { - } - - public override void ViewDidLoad() - { - base.ViewDidLoad(); - - // Storyboard References are only available since iOS 9.0, so do it manually. - ViewControllers = new UIViewController[] { - UIStoryboard.FromName("AppCenter", null).InstantiateViewController("AppCenter"), - UIStoryboard.FromName("Analytics", null).InstantiateViewController("Analytics"), - UIStoryboard.FromName("Crashes", null).InstantiateViewController("Crashes"), - UIStoryboard.FromName("Distribute", null).InstantiateViewController("Distribute") - }; - } - } -} - diff --git a/Apps/Contoso.iOS.Puppet/TabBarController.designer.cs b/Apps/Contoso.iOS.Puppet/TabBarController.designer.cs deleted file mode 100644 index 4bcb6b729..000000000 --- a/Apps/Contoso.iOS.Puppet/TabBarController.designer.cs +++ /dev/null @@ -1,21 +0,0 @@ -// WARNING -// -// This file has been generated automatically by Visual Studio from the outlets and -// actions declared in your storyboard file. -// Manual changes to this file will not be maintained. -// -using Foundation; -using System; -using System.CodeDom.Compiler; -using UIKit; - -namespace Contoso.iOS.Puppet -{ - [Register ("TabBarController")] - partial class TabBarController - { - void ReleaseDesignerOutlets () - { - } - } -} \ No newline at end of file diff --git a/Apps/Contoso.iOS.Puppet/packages.config b/Apps/Contoso.iOS.Puppet/packages.config deleted file mode 100644 index 9d0ad5de6..000000000 --- a/Apps/Contoso.iOS.Puppet/packages.config +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 46b6efb29..fae6852a1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,21 @@ # App Center SDK for .NET Change Log +## Version 5.0.7 (Under development) + +#### Apple + +* **[Improvement]** Update native SDK to version [5.0.6](https://github.com/microsoft/appcenter-sdk-android/releases/tag/5.0.6) +* **[Improvement]** Update target iOS and tvOS version to 12.0. +* **[Improvement]** Update PLCrashReporter. +* **[Improvement]** Update sqlite to 3.46.1, which fixes CVE-2020-11656. + +#### Android + +* **[Improvement]** Update native SDK to version [5.0.6](https://github.com/microsoft/appcenter-sdk-android/releases/tag/5.0.6) +* **[Fix]** Fix app crash on hiding install update dialog for Distribute module. + +___ + ## Version 5.0.6 ### App Center diff --git a/SDK/AppCenter/Microsoft.AppCenter.Shared/WrapperSdk.cs b/SDK/AppCenter/Microsoft.AppCenter.Shared/WrapperSdk.cs index 364b494cc..2da606b19 100644 --- a/SDK/AppCenter/Microsoft.AppCenter.Shared/WrapperSdk.cs +++ b/SDK/AppCenter/Microsoft.AppCenter.Shared/WrapperSdk.cs @@ -14,6 +14,6 @@ public partial class WrapperSdk public const string Name = "appcenter.xamarin"; /* We can't use reflection for assemblyInformationalVersion on iOS with "Link All" optimization. */ - internal const string Version = "5.0.6-SNAPSHOT"; + internal const string Version = "5.0.7-SNAPSHOT"; } } diff --git a/SDK/Directory.Build.props b/SDK/Directory.Build.props index f6c251600..85b6b1263 100644 --- a/SDK/Directory.Build.props +++ b/SDK/Directory.Build.props @@ -4,8 +4,8 @@ Microsoft Corp. All rights reserved. Microsoft Corporation - 5.0.6-SNAPSHOT - 5.0.6.0 + 5.0.7-SNAPSHOT + 5.0.7.0 0.0.0.0 diff --git a/Tests/Contoso.Test.Functional.Droid/Properties/AndroidManifest.xml b/Tests/Contoso.Test.Functional.Droid/Properties/AndroidManifest.xml index 97bbaea38..39558e8d4 100644 --- a/Tests/Contoso.Test.Functional.Droid/Properties/AndroidManifest.xml +++ b/Tests/Contoso.Test.Functional.Droid/Properties/AndroidManifest.xml @@ -1,5 +1,5 @@ - + diff --git a/Tests/Contoso.Test.Functional.Droid/Properties/AssemblyInfo.cs b/Tests/Contoso.Test.Functional.Droid/Properties/AssemblyInfo.cs index 9e7bd85c4..097b6b89d 100644 --- a/Tests/Contoso.Test.Functional.Droid/Properties/AssemblyInfo.cs +++ b/Tests/Contoso.Test.Functional.Droid/Properties/AssemblyInfo.cs @@ -22,8 +22,8 @@ // and "{Major}.{Minor}.{Build}.*" will update just the revision. [assembly: AssemblyVersion("0.0.0.0")] -[assembly: AssemblyFileVersion("5.0.6.0")] -[assembly: AssemblyInformationalVersion("5.0.6-SNAPSHOT")] +[assembly: AssemblyFileVersion("5.0.7.0")] +[assembly: AssemblyInformationalVersion("5.0.7-SNAPSHOT")] // The following attributes are used to specify the signing key for the assembly, // if desired. See the Mono documentation for more information about signing. diff --git a/Tests/Contoso.Test.Functional.iOS/Info.plist b/Tests/Contoso.Test.Functional.iOS/Info.plist index 9d5c57eac..0e8676c03 100644 --- a/Tests/Contoso.Test.Functional.iOS/Info.plist +++ b/Tests/Contoso.Test.Functional.iOS/Info.plist @@ -7,9 +7,9 @@ CFBundleIdentifier com.contoso.test.functional CFBundleShortVersionString - 5.0.6 + 5.0.7 CFBundleVersion - 5.0.6 + 5.0.7 LSRequiresIPhoneOS MinimumOSVersion diff --git a/Tests/Contoso.Test.Functional.iOS/Properties/AssemblyInfo.cs b/Tests/Contoso.Test.Functional.iOS/Properties/AssemblyInfo.cs index 15dd2fab4..c5c8a0229 100644 --- a/Tests/Contoso.Test.Functional.iOS/Properties/AssemblyInfo.cs +++ b/Tests/Contoso.Test.Functional.iOS/Properties/AssemblyInfo.cs @@ -37,5 +37,5 @@ // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] [assembly: AssemblyVersion("0.0.0.0")] -[assembly: AssemblyFileVersion("5.0.6.0")] -[assembly: AssemblyInformationalVersion("5.0.6-SNAPSHOT")] +[assembly: AssemblyFileVersion("5.0.7.0")] +[assembly: AssemblyInformationalVersion("5.0.7-SNAPSHOT")] diff --git a/Tests/Microsoft.AppCenter.Analytics.Test.Windows/Properties/AssemblyInfo.cs b/Tests/Microsoft.AppCenter.Analytics.Test.Windows/Properties/AssemblyInfo.cs index 7c69bba3c..6dfc40925 100644 --- a/Tests/Microsoft.AppCenter.Analytics.Test.Windows/Properties/AssemblyInfo.cs +++ b/Tests/Microsoft.AppCenter.Analytics.Test.Windows/Properties/AssemblyInfo.cs @@ -19,5 +19,5 @@ // [assembly: AssemblyVersion("1.0.*")] [assembly: AssemblyVersion("0.0.0.0")] -[assembly: AssemblyFileVersion("5.0.6.0")] -[assembly: AssemblyInformationalVersion("5.0.6-SNAPSHOT")] +[assembly: AssemblyFileVersion("5.0.7.0")] +[assembly: AssemblyInformationalVersion("5.0.7-SNAPSHOT")] diff --git a/Tests/Microsoft.AppCenter.Crashes.Test.Windows/Properties/AssemblyInfo.cs b/Tests/Microsoft.AppCenter.Crashes.Test.Windows/Properties/AssemblyInfo.cs index 1b887fe77..6de0c4a9a 100644 --- a/Tests/Microsoft.AppCenter.Crashes.Test.Windows/Properties/AssemblyInfo.cs +++ b/Tests/Microsoft.AppCenter.Crashes.Test.Windows/Properties/AssemblyInfo.cs @@ -19,5 +19,5 @@ // [assembly: AssemblyVersion("1.0.*")] [assembly: AssemblyVersion("0.0.0.0")] -[assembly: AssemblyFileVersion("5.0.6.0")] -[assembly: AssemblyInformationalVersion("5.0.6-SNAPSHOT")] +[assembly: AssemblyFileVersion("5.0.7.0")] +[assembly: AssemblyInformationalVersion("5.0.7-SNAPSHOT")] diff --git a/Tests/Microsoft.AppCenter.Test.UWP/Package.appxmanifest b/Tests/Microsoft.AppCenter.Test.UWP/Package.appxmanifest index f81ac1110..d87f81ed5 100644 --- a/Tests/Microsoft.AppCenter.Test.UWP/Package.appxmanifest +++ b/Tests/Microsoft.AppCenter.Test.UWP/Package.appxmanifest @@ -7,7 +7,7 @@ + Version="5.0.7.0" /> diff --git a/Tests/Microsoft.AppCenter.Test.UWP/Properties/AssemblyInfo.cs b/Tests/Microsoft.AppCenter.Test.UWP/Properties/AssemblyInfo.cs index c3e8be505..d86a97825 100644 --- a/Tests/Microsoft.AppCenter.Test.UWP/Properties/AssemblyInfo.cs +++ b/Tests/Microsoft.AppCenter.Test.UWP/Properties/AssemblyInfo.cs @@ -17,5 +17,5 @@ // [assembly: AssemblyVersion("1.0.*")] [assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("5.0.6.0")] +[assembly: AssemblyFileVersion("5.0.7.0")] [assembly: ComVisible(false)] \ No newline at end of file diff --git a/Tests/Microsoft.AppCenter.Test.Windows/Properties/AssemblyInfo.cs b/Tests/Microsoft.AppCenter.Test.Windows/Properties/AssemblyInfo.cs index 0a3dc140d..ee1ddda8f 100644 --- a/Tests/Microsoft.AppCenter.Test.Windows/Properties/AssemblyInfo.cs +++ b/Tests/Microsoft.AppCenter.Test.Windows/Properties/AssemblyInfo.cs @@ -19,5 +19,5 @@ // [assembly: AssemblyVersion("1.0.*")] [assembly: AssemblyVersion("0.0.0.0")] -[assembly: AssemblyFileVersion("5.0.6.0")] -[assembly: AssemblyInformationalVersion("5.0.6-SNAPSHOT")] +[assembly: AssemblyFileVersion("5.0.7.0")] +[assembly: AssemblyInformationalVersion("5.0.7-SNAPSHOT")] diff --git a/Tests/Microsoft.AppCenter.Test.WindowsDesktop/Properties/AssemblyInfo.cs b/Tests/Microsoft.AppCenter.Test.WindowsDesktop/Properties/AssemblyInfo.cs index 0d7372002..390224144 100644 --- a/Tests/Microsoft.AppCenter.Test.WindowsDesktop/Properties/AssemblyInfo.cs +++ b/Tests/Microsoft.AppCenter.Test.WindowsDesktop/Properties/AssemblyInfo.cs @@ -20,4 +20,4 @@ // [assembly: AssemblyVersion("1.0.*")] [assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("5.0.6.0")] +[assembly: AssemblyFileVersion("5.0.7.0")] diff --git a/build.cake b/build.cake index 857669c70..70cb9fd8e 100644 --- a/build.cake +++ b/build.cake @@ -27,17 +27,26 @@ IList AppCenterModules = null; * By running mozroots and install part of Mozilla's root certificates can make it work. */ +/* NOTE: Running build locally + When running build locally download artifacts from apple and android build pipelines manually and place them in `externals` folder. + Place the artifacts in appropriate `externals` subfolders `apple` or `android` + Apple: + AppCenter-SDK-Apple-XCFramework-VERSION.zip + AppCenter-SDK-Apple-VERSION.zip + Android: + appcenter-distribute-play-VERSION.aar + appcenter-distribute-VERSION.aar + appcenter-crashes-VERSION.aar + appcenter-analytics-VERSION.aar + appcenter-VERSION.aar +*/ + var ExternalsDirectory = "externals"; var AndroidExternals = $"{ExternalsDirectory}/android"; var AppleExternals = $"{ExternalsDirectory}/apple"; -var SdkStorageUrl = "https://mobilecentersdkdev.blob.core.windows.net/sdk/"; - // Need to read versions before setting url values VersionReader.ReadVersions(); -var AndroidUrl = $"{SdkStorageUrl}AppCenter-SDK-Android-{VersionReader.AndroidVersion}.zip"; -var AppleUrl = $"{SdkStorageUrl}AppCenter-SDK-Apple-{VersionReader.AppleVersion}.zip"; -var AppleXCFrameworkUrl = $"{SdkStorageUrl}AppCenter-SDK-Apple-XCFramework-{VersionReader.AppleVersion}.zip"; // Task Target for build var Target = Argument("Target", Argument("t", "Default")); @@ -82,33 +91,22 @@ Task("PrepareAssemblies") Task("Externals-Android") .Does(() => { - var zipFile = System.IO.Path.Combine(AndroidExternals, "android.zip"); - if (FileExists(zipFile)) - { - return; - } - CleanDirectory(AndroidExternals); - - // Download zip file. - var authParams = Argument("StorageAuthParams", EnvironmentVariable("STORAGE_AUTH_PARAMS")); - var artifactUrl = $"{AndroidUrl}{authParams}"; - using (VerboseVerbosity()) - DownloadFile(artifactUrl, zipFile); - Unzip(zipFile, AndroidExternals); - // Move binaries to externals/android so that linked files don't have versions // in their paths var androidExternalsPath = System.IO.Path.Combine(AndroidExternals, "*"); var files = GetFiles(androidExternalsPath); + // regex pattern for extracting version + var versionPattern = new System.Text.RegularExpressions.Regex(@"\d+\.\d+\.\d+"); + // fix since aar files contain version name instead of release string foreach (var file in files) { var filename = file.GetFilename().ToString(); - if (filename.Contains($"{VersionReader.AndroidVersion}")) + if (versionPattern.IsMatch(filename)) { - var replacedName = filename.Replace($"{VersionReader.AndroidVersion}", "release"); + var replacedName = versionPattern.Replace(filename, "release"); var newPath = System.IO.Path.Combine(AndroidExternals, replacedName); MoveFile(file, newPath); } @@ -122,6 +120,7 @@ public static void UnzipFile(this ICakeContext context, string zipFile, string o new ProcessSettings { Arguments = new ProcessArgumentBuilder() + .Append("-o") .Append(zipFile) .Append("-d") .Append(outputPath), @@ -141,23 +140,24 @@ Task("Externals-Apple") .WithCriteria(() => IsRunningOnUnix()) .Does(() => { - var zipFile = System.IO.Path.Combine(AppleExternals, "apple.zip"); - var zipXCFrameworkFile = System.IO.Path.Combine(AppleExternals, "apple-xcframework.zip"); var XCFrameworkOutputDir = System.IO.Path.Combine(AppleExternals, "xcframework"); - - CleanDirectory(AppleExternals); - - // Download framework and xcframework files. - var authParams = Argument("StorageAuthParams", EnvironmentVariable("STORAGE_AUTH_PARAMS")); - using (VerboseVerbosity()) + var appleExternalsPath = System.IO.Path.Combine(AppleExternals, "*"); + var zipFiles = GetFiles(appleExternalsPath); + foreach (var file in zipFiles) { - DownloadFile($"{AppleUrl}{authParams}", zipFile); - DownloadFile($"{AppleXCFrameworkUrl}{authParams}", zipXCFrameworkFile); + var fileName = file.GetFilename().ToString(); + if (fileName.Contains("XCFramework")) + { + var zipXCFrameworkFile = System.IO.Path.Combine(AppleExternals, fileName); + Context.UnzipFile(zipXCFrameworkFile, XCFrameworkOutputDir); + } + else + { + var zipFile = System.IO.Path.Combine(AppleExternals, fileName); + Context.UnzipFile(zipFile, AppleExternals); + } } - Context.UnzipFile(zipFile, AppleExternals); - Context.UnzipFile(zipXCFrameworkFile, XCFrameworkOutputDir); - var iosFrameworksLocation = System.IO.Path.Combine(AppleExternals, "AppCenter-SDK-Apple/iOS"); var macosFrameworksLocation = System.IO.Path.Combine(AppleExternals, "AppCenter-SDK-Apple/macOS"); var xcframeworkLocation = System.IO.Path.Combine(XCFrameworkOutputDir, "AppCenter-SDK-Apple"); diff --git a/cgmanifest.json b/cgmanifest.json index 25af9ea4a..0a58c408a 100644 --- a/cgmanifest.json +++ b/cgmanifest.json @@ -6,7 +6,7 @@ "type": "git", "git": { "repositoryUrl": "https://github.com/microsoft/appcenter-sdk-android.git", - "commitHash": "2b0278445e55f17ab389736fb3b82b24b53e6412" + "commitHash": "453316ce5fee6d1a4d76f80587fd816e7185ff55" } } }, @@ -15,7 +15,7 @@ "type": "git", "git": { "repositoryUrl": "https://github.com/microsoft/appcenter-sdk-apple.git", - "commitHash": "ab54f758243f282d290b33027e8aac910d3d859a" + "commitHash": "9308921a2f6ef828cf9fae898ea4f080a81cdf11" } } } diff --git a/scripts/configuration/ac-build-config.xml b/scripts/configuration/ac-build-config.xml index 43ecbbc84..06ada23d1 100644 --- a/scripts/configuration/ac-build-config.xml +++ b/scripts/configuration/ac-build-config.xml @@ -1,9 +1,9 @@ - 5.0.6-SNAPSHOT - 5.0.5 - 5.0.5 + 5.0.7-SNAPSHOT + 5.0.6 + 5.0.6 diff --git a/scripts/update-app-secrets.sh b/scripts/update-app-secrets.sh old mode 100755 new mode 100644 index bab1001d6..8ff9fee36 --- a/scripts/update-app-secrets.sh +++ b/scripts/update-app-secrets.sh @@ -1,52 +1,23 @@ #!/bin/bash -# Replace app-secret's and tokens values in test apps. Update Puppet apps by default. +# Replace app-secret's and tokens values in test MAUI app. # Usage: -# ./scripts/update-app-secrets.sh - -# Dynamic constants. -appPrefix="INT" - -# Prepare constants. -if [ "$1" == "PROD" ]; then - appPrefix="PROD" -fi +# ./scripts/update-app-secrets.sh # Constants for iOS and Android. declare -a platformConstants=( - "XAMARIN_FORMS_ANDROID_${appPrefix}" - "XAMARIN_FORMS_ANDROID_TARGET_TOKEN_${appPrefix}" - "XAMARIN_FORMS_IOS_${appPrefix}" - "XAMARIN_FORMS_IOS_TARGET_TOKEN_${appPrefix}" - "XAMARIN_FORMS_MACOS_${appPrefix}" - "XAMARIN_ANDROID_${appPrefix}" - "XAMARIN_IOS_${appPrefix}" - "XAMARIN_MACOS_${appPrefix}" - "MAUI_ANDROID_${appPrefix}" - "MAUI_ANDROID_TARGET_TOKEN_${appPrefix}" - "MAUI_IOS_${appPrefix}" - "MAUI_IOS_TARGET_TOKEN_${appPrefix}" - "MAUI_MACOS_${appPrefix}") + "MAUI_ANDROID_PROD" + "MAUI_ANDROID_TARGET_TOKEN_PROD" + "MAUI_IOS_PROD" + "MAUI_IOS_TARGET_TOKEN_PROD") -# Files which should be changed. -declare -a targetFiles=("Apps/Contoso.Android.Puppet/Contoso.Android.Puppet.csproj" - "Apps/Contoso.Forms.Puppet/Contoso.Forms.Puppet.Droid/Contoso.Forms.Puppet.Droid.csproj" - "Apps/Contoso.Forms.Puppet/Contoso.Forms.Puppet.MacOS/Contoso.Forms.Puppet.MacOS.csproj" - "Apps/Contoso.Forms.Puppet/Contoso.Forms.Puppet.iOS/Contoso.Forms.Puppet.iOS.csproj" - "Apps/Contoso.MacOS.Puppet/Contoso.MacOS.Puppet.csproj" - "Apps/Contoso.iOS.Puppet/Contoso.iOS.Puppet.csproj" - "Apps/Contoso.Forms.Demo/Contoso.Forms.Demo/App.xaml.cs" - "Apps/Contoso.MAUI.Demo/App.xaml.cs") +# File which should be changed. +targetFile=("Apps/Contoso.MAUI.Demo/App.xaml.cs") -# Print info about current job. -echo "Insert secrets for $appPrefix apps." +echo "Insert secrets for MAUI app." # Update files from array. -for constant in "${platformConstants[@]}" -do - for file in "${targetFiles[@]}" - do - # Replace secret value from enviroment variables. - sed -i '' "s/{$constant}/"${!constant}"/g" $file - done +for constant in "${platformConstants[@]}"; do + # Replace secret value from enviroment variables. + sed -i '' "s/{$constant}/"${!constant}"/g" $targetFile done diff --git a/test-tools.cake b/test-tools.cake deleted file mode 100644 index db68649ea..000000000 --- a/test-tools.cake +++ /dev/null @@ -1,399 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -#addin nuget:?package=Cake.Xamarin&version=4.0.0 -#addin nuget:?package=Cake.FileHelpers&version=5.0.0 -#addin nuget:?package=Newtonsoft.Json&version=13.0.2 - -using System; -using System.Collections.Generic; -using System.Net; -using Newtonsoft.Json.Linq; - -// Task Target for build -var Target = Argument("target", Argument("t", "Default")); - -string ArchiveDirectory = "archives"; -bool IsMandatory = false; -string DistributionGroup = "Private Release Script Group"; -string Token = EnvironmentVariable("APP_CENTER_API_TOKEN"); -string BaseUrl = "https://api.appcenter.ms"; -ApplicationInfo CurrentApp = null; - -public enum Environment -{ - Int, - Prod -} - -public enum Platform -{ - iOS, - Android, - UWP -} - -public class ApplicationInfo -{ - public static ICakeContext Context; - public static string OutputDirectory; - public Environment AppEnvironment { get; } - public Platform AppPlatform { get; } - public string AppOwner { get; } - public string AppId { get; } - public string AppPath - { - get - { - return OutputDirectory + "/" + AppId + "." + _appExtension; - } - } - public string ProjectPath - { - get - { - if (_projectPath == null) - { - _projectPath = Context.GetFiles("**/" + _projectFile).Single().ToString(); - } - return _projectPath; - } - } - - public string ProjectDirectory - { - get - { - return System.IO.Path.GetDirectoryName(ProjectPath); - } - } - - private string _appExtension = null; - private string _projectPath = null; - private string _projectFile = null; - public ApplicationInfo(Environment environment, Platform platform, string appOwner, string appId, string projectFile, string appExtension) - { - AppOwner = appOwner; - AppId = appId; - AppEnvironment = environment; - AppPlatform = platform; - _projectFile = projectFile; - _appExtension = appExtension; - } -} - -ApplicationInfo.Context = Context; -ApplicationInfo.OutputDirectory = ArchiveDirectory; -IList Applications = new List -{ - new ApplicationInfo(Environment.Prod, Platform.iOS, "appcenter", "xamarin-demo-ios", "Contoso.Forms.Demo.iOS.csproj", "ipa"), - new ApplicationInfo(Environment.Prod, Platform.Android, "appcenter", "xamarin-demo-android", "Contoso.Forms.Demo.Droid.csproj", "apk"), - new ApplicationInfo(Environment.Prod, Platform.UWP, "appcenter-sdk", "UWP-Forms-Puppet", "Contoso.Forms.Demo.UWP.csproj", ""), - new ApplicationInfo(Environment.Int, Platform.iOS, "appcenter-sdk", "xamarin-puppet-ios", "Contoso.Forms.Puppet.iOS.csproj", "ipa"), - new ApplicationInfo(Environment.Int, Platform.Android, "appcenter-sdk", "xamarin-puppet-android-03", "Contoso.Forms.Puppet.Droid.csproj", "apk"), - new ApplicationInfo(Environment.Int, Platform.UWP, "appcenter-sdk", "xamarin-forms-puppet-uwp-2", "Contoso.Forms.Puppet.UWP.csproj", "") -}; - -Setup(context => -{ - // Arguments: - // -environment (-e): App "environment" ("prod" or "int") -- Default is "int" - // -group (-g): Distribution group name -- Default is "Private Release Script Group" - // -mandatory (-m): Should the release be mandatory ("true" or "false") -- Default is "false" - // -platform (-p): ios, android, or uwp -- Default is ios - - // Read arguments - var environment = Environment.Prod; - if (Argument("Environment", "int") == "int") - { - environment = Environment.Int; - Token = EnvironmentVariable("APP_CENTER_INT_API_TOKEN"); - BaseUrl = "https://api-gateway-core-integration.dev.avalanch.es"; - } - var platformString = Argument("Platform", "ios"); - var platform = Platform.iOS; - if (platformString == "android") - { - platform = Platform.Android; - } - else if (platformString == "uwp") - { - platform = Platform.UWP; - } - - CurrentApp = ( from app in Applications - where app.AppPlatform == platform && - app.AppEnvironment == environment - select app - ).Single(); - - DistributionGroup = Argument("Group", DistributionGroup); - DistributionGroup = DistributionGroup.Replace('_', ' '); - IsMandatory = Argument("Mandatory", false); -}); - -// Distribution Tasks - -Task("CreateIosArchive").IsDependentOn("IncreaseAppleVersion").Does(()=> -{ - MSBuild(CurrentApp.ProjectPath, settings => settings.SetConfiguration("Release") - .WithTarget("Build") - .WithProperty("Platform", "iPhone") - .WithProperty("BuildIpa", "true") - .WithProperty("OutputPath", "bin/Release/") - .WithProperty("AllowUnsafeBlocks", "true")); - var projectLocation = CurrentApp.ProjectDirectory; - var ipaLocation = projectLocation + - "/bin/Release/" + - System.IO.Path.GetFileNameWithoutExtension(CurrentApp.ProjectPath) + - ".ipa"; - EnsureDirectoryExists(ArchiveDirectory); - if (System.IO.File.Exists(CurrentApp.AppPath)) - { - System.IO.File.Delete(CurrentApp.AppPath); - } - CopyFile(ipaLocation, CurrentApp.AppPath); -}); - -Task("CreateAndroidArchive").IsDependentOn("IncreaseAndroidVersion").Does(()=> -{ - BuildAndroidApk(CurrentApp.ProjectPath, true, "Release", c => c.Configuration = "Release"); - var projectLocation = CurrentApp.ProjectDirectory; - var apks = GetFiles(projectLocation + "/bin/Release/*.apk"); - var unsignedApk = ""; - foreach (var path in apks) - { - if (!path.ToString().EndsWith("-Signed.apk")) - { - unsignedApk = path.ToString(); - break; - } - } - EnsureDirectoryExists(ArchiveDirectory); - if (System.IO.File.Exists(CurrentApp.AppPath)) - { - System.IO.File.Delete(CurrentApp.AppPath); - } - CopyFile(unsignedApk, CurrentApp.AppPath); -}); - -Task("IncreaseAppleVersion").Does(()=> -{ - var infoPlistLocation = CurrentApp.ProjectDirectory + "/Info.plist"; - var plist = File(infoPlistLocation); - var bundleVersionPattern = @"CFBundleVersion<\/key>\s*[^<]*<\/string>"; - var match = FindRegexMatchInFile(File(infoPlistLocation), bundleVersionPattern, System.Text.RegularExpressions.RegexOptions.None); - var openTag = ""; - var closeTag = ""; - var currentVersion = match.Substring(match.IndexOf(openTag) + openTag.Length, match.IndexOf(closeTag) - match.IndexOf(openTag) - openTag.Length); - var newVersion = IncrementPatch(currentVersion); - var newBundleVersionString = "CFBundleVersion\n\t" + newVersion + ""; - ReplaceRegexInFiles(infoPlistLocation, bundleVersionPattern, newBundleVersionString); - Information("iOS Version increased to " + newVersion); -}); - -Task("IncreaseAndroidVersion").Does(()=> -{ - // Setup - var manifestLocation = CurrentApp.ProjectDirectory + "/Properties/AndroidManifest.xml"; - var xmlNamespaces = new Dictionary {{"android", "http://schemas.android.com/apk/res/android"}}; - var peekSettings = new XmlPeekSettings(); - peekSettings.Namespaces = xmlNamespaces; - var pokeSettings = new XmlPokeSettings(); - pokeSettings.Namespaces = xmlNamespaces; - - // Manifest version code - var versionCode = int.Parse(XmlPeek(manifestLocation, "manifest/@android:versionCode", peekSettings)); - var newVersionCode = versionCode + 1; - XmlPoke(manifestLocation, "manifest/@android:versionCode", newVersionCode.ToString(), pokeSettings); - - // Manifest version name - var versionName = XmlPeek(manifestLocation, "manifest/@android:versionName", peekSettings); - var suffix = "-SNAPSHOT"; - if (versionName.Contains(suffix)) - { - versionName = versionName.Substring(0, versionName.IndexOf(suffix)); - } - var newVersionName = IncrementPatch(versionName); - XmlPoke(manifestLocation, "manifest/@android:versionName", newVersionName, pokeSettings); - Information("Android version name changed to " + newVersionName + ", version code increased to " + newVersionCode); -}); - -Task("ReleaseApplication") -.Does(()=> -{ - if (CurrentApp.AppPlatform == Platform.iOS) - { - RunTarget("CreateIosArchive"); - } - else if (CurrentApp.AppPlatform == Platform.Android) - { - RunTarget("CreateAndroidArchive"); - } - else - { - Error("Cannot distribute for this platform."); - return; - } - - // Start the upload. - Information("Initiating distribution process..."); - var startUploadUrl = GetApiUrl(BaseUrl, CurrentApp.AppOwner, CurrentApp.AppId, "release_uploads"); - var startUploadRequest = GetWebRequest(startUploadUrl, Token); - var startUploadResponse = GetResponseJson(startUploadRequest); - - // Upload the file to the given endpoint. The label "ipa" is correct for all platforms. - var uploadUrl = startUploadResponse["upload_url"].ToString(); - HttpUploadFile(uploadUrl, CurrentApp.AppPath, "ipa"); - - // Commit the upload - Information("Committing distribution..."); - var uploadId = startUploadResponse["upload_id"].ToString(); - var commitRequestUrl = startUploadUrl + "/" + uploadId; - var commitRequest = GetWebRequest(commitRequestUrl, Token, "PATCH"); - AttachJsonPayload(commitRequest, - new JObject( - new JProperty("status", "committed"))); - var commitResponse = GetResponseJson(commitRequest); - var releaseUrl = BaseUrl + "/" + commitResponse["release_url"].ToString(); - - // Release the upload - Information("Finalizing release..."); - var releaseRequest = GetWebRequest(releaseUrl, Token, "PATCH"); - var releaseNotes = "This release has been created by the script test-tools.cake."; - AttachJsonPayload(releaseRequest, - new JObject( - new JProperty("destination_name", DistributionGroup), - new JProperty("release_notes", releaseNotes), - new JProperty("mandatory", IsMandatory.ToString().ToLower()))); - releaseRequest.GetResponse().Dispose(); - var mandatorySuffix = IsMandatory ? " as a mandatory update" : ""; - Information("Successfully released " + CurrentApp.AppOwner + - "/" + CurrentApp.AppId + " to group " + - DistributionGroup + mandatorySuffix + "."); -}); - -Task("BuildAppsInAppCenter").Does(() => -{ - CurrentApp = ( from app in Applications - where app.AppPlatform == Platform.iOS && - app.AppEnvironment == Environment.Prod - select app - ).Single(); - BuildCurrentAppInAppCenter(); - BuildCurrentAppInAppCenter(); - CurrentApp = ( from app in Applications - where app.AppPlatform == Platform.Android && - app.AppEnvironment == Environment.Prod - select app - ).Single(); - BuildCurrentAppInAppCenter(); - BuildCurrentAppInAppCenter(); - CurrentApp = ( from app in Applications - where app.AppPlatform == Platform.UWP && - app.AppEnvironment == Environment.Prod - select app - ).Single(); - BuildCurrentAppInAppCenter(); -}); - -void BuildCurrentAppInAppCenter() -{ - Information("Triggering build in App Center... "); - var appCenterToken = Argument("AppCenterToken"); - var url = GetApiUrl(BaseUrl, CurrentApp.AppOwner, CurrentApp.AppId, "branches/master/builds"); - var request = GetWebRequest(url, appCenterToken); - var responseJson = GetResponseJson(request); - Information("Successfully triggered build in App Center."); -} - -// Helper methods - -string GetApiUrl(string baseUrl, string appOwner, string appId, string apiName) -{ - return string.Format("{0}/v0.1/apps/{1}/{2}/{3}", baseUrl, appOwner, appId, apiName); -} - -JObject GetResponseJson(HttpWebRequest request) -{ - using (var response = request.GetResponse()) - using (var reader = new StreamReader(response.GetResponseStream())) - { - return JObject.Parse(reader.ReadToEnd()); - } -} - -HttpWebRequest GetWebRequest(string url, string token, string method = "POST") -{ - Information(string.Format("About to call url '{0}'", url)); - var request = (HttpWebRequest)WebRequest.Create(url); - request.Headers["X-API-Token"] = token; - request.ContentType = "application/json"; - request.Accept = "application/json"; - request.Method = method; - return request; -} - -void AttachJsonPayload(HttpWebRequest request, JObject json) -{ - using (var stream = request.GetRequestStream()) - using (var sr = new StreamWriter(stream)) - { - sr.Write(json.ToString()); - } -} - -string IncrementPatch(string semVer) -{ - int patchIdx = 0; - for (int i = semVer.Length - 1; i >= 0; --i) - { - if (semVer[i] == '.') - { - patchIdx = i + 1; - break; - } - } - var newPatch = Convert.ToInt32(semVer.Substring(patchIdx, semVer.Length - patchIdx)) + 1; - return semVer.Substring(0, patchIdx) + newPatch; -} - -// Adapted from https://stackoverflow.com/questions/566462/upload-files-with-httpwebrequest-multipart-form-data/2996904#2996904 -void HttpUploadFile(string url, string file, string paramName) -{ - Information(string.Format("Uploading {0} to {1}", file, url)); - var boundary = "---------------------------" + DateTime.Now.Ticks.ToString("x"); - byte[] boundaryBytes = System.Text.Encoding.ASCII.GetBytes("\r\n--" + boundary + "\r\n"); - var request = (HttpWebRequest)WebRequest.Create(url); - request.ContentType = "multipart/form-data; boundary=" + boundary; - request.Method = "POST"; - request.KeepAlive = true; - using (var requestStream = request.GetRequestStream()) - { - requestStream.Write(boundaryBytes, 0, boundaryBytes.Length); - var headerTemplate = "Content-Disposition: form-data; name=\"{0}\"; filename=\"{1}\"\r\n\r\n"; - var header = string.Format(headerTemplate, paramName, file); - byte[] headerBytes = System.Text.Encoding.UTF8.GetBytes(header); - requestStream.Write(headerBytes, 0, headerBytes.Length); - using (var fileStream = new FileStream(file, FileMode.Open, FileAccess.Read)) - { - byte[] buffer = new byte[4096]; - var bytesRead = 0; - while ((bytesRead = fileStream.Read(buffer, 0, buffer.Length)) != 0) - { - requestStream.Write(buffer, 0, bytesRead); - } - } - byte[] trailer = System.Text.Encoding.ASCII.GetBytes("\r\n--" + boundary + "--\r\n"); - requestStream.Write(trailer, 0, trailer.Length); - } - request.GetResponse().Dispose(); - Information("File uploaded."); -} - -Task("Default").Does(()=> -{ - Error("Please run a specific target."); -}); - -RunTarget(Target);