Merge branch 'main' into mu-20240205-tfm-net80-material-1.11.0
18
README.md
|
@ -1,13 +1,12 @@
|
|||
# AndroidX for .NET Android
|
||||
# AndroidX for .NET for Android
|
||||
|
||||
[![GitHub License](https://img.shields.io/badge/license-MIT-lightgrey.svg)](https://github.com/xamarin/AndroidX/blob/master/LICENSE)
|
||||
[![GitHub License](https://img.shields.io/badge/license-MIT-lightgrey.svg)](https://github.com/xamarin/AndroidX/blob/main/LICENSE)
|
||||
[![contributions welcome](https://img.shields.io/badge/contributions-welcome-brightgreen.svg?style=flat)](https://github.com/xamarin/AndroidX/issues)
|
||||
[![GitHub contributors](https://img.shields.io/github/contributors/xamarin/AndroidX.svg)](https://github.com/xamarin/AndroidX/graphs/contributors)
|
||||
[![Build Status](https://dev.azure.com/devdiv/DevDiv/_apis/build/status/Xamarin/Components/AndroidX?branchName=master)](https://dev.azure.com/devdiv/DevDiv/_build/latest?definitionId=12322&branchName=master)
|
||||
|
||||
Microsoft creates and maintains .NET Android bindings for many of [Google's AndroidX libraries](https://developer.android.com/jetpack).
|
||||
Microsoft creates and maintains .NET for Android bindings for many of [Google's AndroidX libraries](https://developer.android.com/jetpack).
|
||||
|
||||
These bindings will also continue to support Xamarin.Android projects for the remainder of its [supported lifecycle](https://dotnet.microsoft.com/en-us/platform/support/policy/xamarin).
|
||||
Support for Xamarin.Android ended on [May 1st, 2024](https://dotnet.microsoft.com/en-us/platform/support/policy/xamarin). New versions of these packages will not support Xamarin.Android.
|
||||
|
||||
## What is AndroidX
|
||||
|
||||
|
@ -45,21 +44,20 @@ Note that these packages are largely just autogenerated bindings around Google's
|
|||
|
||||
## License
|
||||
|
||||
The license for this repository is specified in [LICENSE.md](LICENSE.md)
|
||||
The license for this repository is specified in [LICENSE.md](LICENSE.md).
|
||||
|
||||
Each package published from this repository generally contains third-party code (ie: `.jar`/`.aar`) that
|
||||
is governed by its own license. Per-package license information is available in [cgmanifest.json](cgmanifest.json).
|
||||
|
||||
|
||||
## Building
|
||||
|
||||
Instructions for building this repository are specified in [BUILDING.md](BUILDING.md)
|
||||
Instructions for building this repository are specified in [BUILDING.md](BUILDING.md).
|
||||
|
||||
In depth building instructions: [./docs/build.md](./docs/build.md).
|
||||
|
||||
## Contribution Guidelines
|
||||
|
||||
The Contribution Guidelines for this repository are listed in [CONTRIBUTING.md](.github/CONTRIBUTING.md)
|
||||
The Contribution Guidelines for this repository are listed in [CONTRIBUTING.md](.github/CONTRIBUTING.md).
|
||||
|
||||
This project has adopted the code of conduct defined by the Contributor Covenant
|
||||
to clarify expected behavior in our community. For more information, see the
|
||||
|
@ -67,4 +65,4 @@ to clarify expected behavior in our community. For more information, see the
|
|||
|
||||
## .NET Foundation
|
||||
|
||||
This project is part of the [.NET Foundation](http://www.dotnetfoundation.org/projects)
|
||||
This project is part of the [.NET Foundation](http://www.dotnetfoundation.org/projects).
|
||||
|
|
|
@ -19,12 +19,10 @@ variables:
|
|||
# Windows specific variables
|
||||
windowsAgentPoolName: Maui-1ESPT # Windows VM pool name
|
||||
windowsImage: 1ESPT-Windows2022 # Windows VM image name
|
||||
windowsClassicInstaller: https://aka.ms/xamarin-android-commercial-d17-8-windows # Windows Classic XA installer URL
|
||||
|
||||
# macOS specific variables
|
||||
macosAgentPoolName: Azure Pipelines # macOS VM pool name
|
||||
macosImage: internal-macos12 # macOS VM image name
|
||||
macosClassicInstaller: https://aka.ms/xamarin-android-commercial-d17-8-macos # macOS Classic XA installer URL
|
||||
|
||||
resources:
|
||||
repositories:
|
||||
|
@ -57,7 +55,6 @@ extends:
|
|||
name: $(windowsAgentPoolName)
|
||||
image: $(windowsImage)
|
||||
os: windows
|
||||
classicInstallerUrl: $(windowsClassicInstaller)
|
||||
mainBranchName: $(mainBranchName)
|
||||
configuration: $(configuration)
|
||||
runAPIScan: true
|
||||
|
@ -69,7 +66,6 @@ extends:
|
|||
name: $(macosAgentPoolName)
|
||||
vmImage: $(macosImage)
|
||||
os: macOS
|
||||
classicInstallerUrl: $(macosClassicInstaller)
|
||||
mainBranchName: $(mainBranchName)
|
||||
configuration: $(configuration)
|
||||
|
||||
|
|
52
build.cake
|
@ -757,55 +757,6 @@ Task("samples-generate-all-targets")
|
|||
System.IO.File.WriteAllText("./output/Directory.packages.props", content_new);
|
||||
});
|
||||
|
||||
Task("samples")
|
||||
.IsDependentOn("nuget")
|
||||
.IsDependentOn("samples-only");
|
||||
|
||||
Task("samples-only")
|
||||
.IsDependentOn("samples-generate-all-targets")
|
||||
.Does(() =>
|
||||
{
|
||||
// clear the packages folder so we always use the latest
|
||||
var packagesPath = MakeAbsolute((DirectoryPath)"./samples/packages").FullPath;
|
||||
EnsureDirectoryExists(packagesPath);
|
||||
CleanDirectories(packagesPath);
|
||||
|
||||
// build the samples
|
||||
MSBuildSettings settings_msbuild = new MSBuildSettings()
|
||||
.SetConfiguration("Debug") // We don't need to run linking
|
||||
.SetVerbosity(VERBOSITY)
|
||||
.SetMaxCpuCount(0)
|
||||
.WithRestore()
|
||||
.WithProperty("RestorePackagesPath", packagesPath)
|
||||
.WithProperty("AndroidSdkBuildToolsVersion", $"{AndroidSdkBuildTools}");
|
||||
|
||||
if (!string.IsNullOrEmpty(ANDROID_HOME))
|
||||
settings_msbuild.WithProperty("AndroidSdkDirectory", $"{ANDROID_HOME}");
|
||||
|
||||
if (!string.IsNullOrEmpty(MSBUILD_PATH))
|
||||
settings_msbuild.ToolPath = MSBUILD_PATH;
|
||||
|
||||
string[] solutions = new string[]
|
||||
{
|
||||
"./samples/BuildXamarinFormsApp/BuildXamarinFormsApp.sln",
|
||||
//"./samples/BuildMinimalMaterial/BuildMinimalMaterial.sln",
|
||||
// "./samples/BuildMinimalMaterialAppCompat/BuildMinimalMaterialAppCompat.sln",
|
||||
// "./samples/dotnet/BuildAllDotNet.sln", //MSBuild cannot handle net6 projects
|
||||
};
|
||||
|
||||
foreach(string solution in solutions)
|
||||
{
|
||||
FilePath fp_solution = new FilePath(solution);
|
||||
string filename = fp_solution.GetFilenameWithoutExtension().ToString();
|
||||
Information($"=====================================================================================================");
|
||||
Information($"MSBuild {solution} / {filename}");
|
||||
MSBuild(solution, settings_msbuild.EnableBinaryLogger($"./output/samples.{filename}.{CONFIGURATION}.msbuild.{DateTime.Now.ToString("yyyyMMddHHmmss")}.binlog"));
|
||||
}
|
||||
|
||||
return;
|
||||
});
|
||||
|
||||
|
||||
Task("samples-dotnet")
|
||||
.IsDependentOn("nuget")
|
||||
.IsDependentOn("samples-only-dotnet");
|
||||
|
@ -832,7 +783,6 @@ Task("samples-only-dotnet")
|
|||
{
|
||||
"./samples/dotnet/BuildAllDotNet.sln",
|
||||
"./samples/dotnet/BuildAllMauiApp.sln",
|
||||
"./samples/dotnet/BuildAllXamarinForms.sln",
|
||||
};
|
||||
|
||||
foreach(string solution in solutions)
|
||||
|
@ -1019,7 +969,6 @@ Task ("packages")
|
|||
Task ("full-run")
|
||||
.IsDependentOn ("binderate")
|
||||
.IsDependentOn ("nuget")
|
||||
.IsDependentOn ("samples")
|
||||
.IsDependentOn ("samples-dotnet")
|
||||
.IsDependentOn ("tools-executive-order")
|
||||
;
|
||||
|
@ -1040,7 +989,6 @@ Task ("ci-build")
|
|||
|
||||
// Runs samples without building packages
|
||||
Task ("ci-samples")
|
||||
.IsDependentOn ("samples-only")
|
||||
.IsDependentOn ("samples-only-dotnet")
|
||||
;
|
||||
|
||||
|
|
|
@ -2,7 +2,6 @@ parameters:
|
|||
# Environment Parameters
|
||||
name: # Job display name
|
||||
buildPool: # VM pool information
|
||||
classicInstallerUrl: # URL to retrieve the Classic XA installer
|
||||
|
||||
# Build Parameters
|
||||
mainBranchName: 'main' # Name of Git "main" branch
|
||||
|
@ -23,7 +22,6 @@ parameters:
|
|||
tools: # Additional .NET global tools to install
|
||||
- 'xamarin.androidbinderator.tool': '0.5.7'
|
||||
- 'Cake.Tool': '4.0.0'
|
||||
- 'boots': '1.1.0.36'
|
||||
- 'private-api-tools': '1.0.3'
|
||||
|
||||
# Reporting/Analysis Parameters
|
||||
|
@ -56,7 +54,6 @@ jobs:
|
|||
dotnetWorkloadSource: ${{ parameters.dotnetWorkloadSource }}
|
||||
dotnetNuGetOrgSource: ${{ parameters.dotnetNuGetOrgSource }}
|
||||
dotnetTools: ${{ parameters.tools }}
|
||||
classicInstallerUrl: ${{ parameters.classicInstallerUrl }}
|
||||
|
||||
- template: build-and-test.yml
|
||||
parameters:
|
||||
|
|
|
@ -5,7 +5,6 @@ parameters:
|
|||
dotnetWorkloadSource: ''
|
||||
dotnetNuGetOrgSource: ''
|
||||
dotnetTools: []
|
||||
classicInstallerUrl: ''
|
||||
|
||||
steps:
|
||||
# before the build starts, make sure the tooling is as expected
|
||||
|
@ -38,6 +37,3 @@ steps:
|
|||
- ${{ each pair in tool }}:
|
||||
- pwsh: dotnet tool update -g ${{ pair.key }} --version ${{ pair.value }}
|
||||
displayName: 'Install tool: ${{ pair.key }}'
|
||||
|
||||
- pwsh: boots --url ${{ parameters.classicInstallerUrl }} --downgrade-first
|
||||
displayName: 'Install Classic XA'
|
||||
|
|
612
cgmanifest.json
630
config.json
|
@ -1,314 +0,0 @@
|
|||
# Artifacts with versions supported
|
||||
|
||||
|
||||
|
||||
|
||||
| | | | | |
|
||||
|----|----------------------------------------------------------------------|--------------------|----------------------------------------------------------------------|--------------------|
|
||||
| 1|androidx.activity:activity |1.9.0 |Xamarin.AndroidX.Activity |1.9.0 |
|
||||
| 2|androidx.activity:activity-compose |1.9.0 |Xamarin.AndroidX.Activity.Compose |1.9.0 |
|
||||
| 3|androidx.activity:activity-ktx |1.9.0 |Xamarin.AndroidX.Activity.Ktx |1.9.0 |
|
||||
| 4|androidx.ads:ads-identifier |1.0.0-alpha05 |Xamarin.AndroidX.Ads.Identifier |1.0.0.22-alpha05 |
|
||||
| 5|androidx.ads:ads-identifier-common |1.0.0-alpha05 |Xamarin.AndroidX.Ads.IdentifierCommon |1.0.0.22-alpha05 |
|
||||
| 6|androidx.ads:ads-identifier-provider |1.0.0-alpha05 |Xamarin.AndroidX.Ads.IdentifierProvider |1.0.0.22-alpha05 |
|
||||
| 7|androidx.annotation:annotation |1.7.1 |Xamarin.AndroidX.Annotation |1.7.1.1 |
|
||||
| 8|androidx.annotation:annotation-experimental |1.4.1 |Xamarin.AndroidX.Annotation.Experimental |1.4.1 |
|
||||
| 9|androidx.annotation:annotation-jvm |1.7.1 |Xamarin.AndroidX.Annotation.Jvm |1.7.1.1 |
|
||||
| 10|androidx.appcompat:appcompat |1.6.1 |Xamarin.AndroidX.AppCompat |1.6.1.7 |
|
||||
| 11|androidx.appcompat:appcompat-resources |1.6.1 |Xamarin.AndroidX.AppCompat.AppCompatResources |1.6.1.8 |
|
||||
| 12|androidx.arch.core:core-common |2.2.0 |Xamarin.AndroidX.Arch.Core.Common |2.2.0.7 |
|
||||
| 13|androidx.arch.core:core-runtime |2.2.0 |Xamarin.AndroidX.Arch.Core.Runtime |2.2.0.7 |
|
||||
| 14|androidx.asynclayoutinflater:asynclayoutinflater |1.0.0 |Xamarin.AndroidX.AsyncLayoutInflater |1.0.0.23 |
|
||||
| 15|androidx.autofill:autofill |1.1.0 |Xamarin.AndroidX.AutoFill |1.1.0.22 |
|
||||
| 16|androidx.biometric:biometric |1.1.0 |Xamarin.AndroidX.Biometric |1.1.0.19 |
|
||||
| 17|androidx.browser:browser |1.8.0 |Xamarin.AndroidX.Browser |1.8.0 |
|
||||
| 18|androidx.camera:camera-camera2 |1.3.3 |Xamarin.AndroidX.Camera.Camera2 |1.3.3 |
|
||||
| 19|androidx.camera:camera-core |1.3.3 |Xamarin.AndroidX.Camera.Core |1.3.3 |
|
||||
| 20|androidx.camera:camera-extensions |1.3.3 |Xamarin.AndroidX.Camera.Extensions |1.3.3 |
|
||||
| 21|androidx.camera:camera-lifecycle |1.3.3 |Xamarin.AndroidX.Camera.Lifecycle |1.3.3 |
|
||||
| 22|androidx.camera:camera-video |1.3.3 |Xamarin.AndroidX.Camera.Video |1.3.3 |
|
||||
| 23|androidx.camera:camera-view |1.3.3 |Xamarin.AndroidX.Camera.View |1.3.3 |
|
||||
| 24|androidx.car:car |1.0.0-alpha7 |Xamarin.AndroidX.Car.Car |1.0.0.21-alpha7 |
|
||||
| 25|androidx.car:car-cluster |1.0.0-alpha5 |Xamarin.AndroidX.Car.Cluster |1.0.0.21-alpha5 |
|
||||
| 26|androidx.car.app:app |1.2.0 |Xamarin.AndroidX.Car.App.App |1.2.0.8 |
|
||||
| 27|androidx.cardview:cardview |1.0.0 |Xamarin.AndroidX.CardView |1.0.0.25 |
|
||||
| 28|androidx.collection:collection |1.4.0 |Xamarin.AndroidX.Collection |1.4.0.2 |
|
||||
| 29|androidx.collection:collection-jvm |1.4.0 |Xamarin.AndroidX.Collection.Jvm |1.4.0.1 |
|
||||
| 30|androidx.collection:collection-ktx |1.4.0 |Xamarin.AndroidX.Collection.Ktx |1.4.0.1 |
|
||||
| 31|androidx.compose.animation:animation |1.6.6 |Xamarin.AndroidX.Compose.Animation |1.6.6 |
|
||||
| 32|androidx.compose.animation:animation-android |1.6.6 |Xamarin.AndroidX.Compose.Animation.Android |1.6.6 |
|
||||
| 33|androidx.compose.animation:animation-core |1.6.6 |Xamarin.AndroidX.Compose.Animation.Core |1.6.6 |
|
||||
| 34|androidx.compose.animation:animation-core-android |1.6.6 |Xamarin.AndroidX.Compose.Animation.Core.Android |1.6.6 |
|
||||
| 35|androidx.compose.animation:animation-graphics |1.6.6 |Xamarin.AndroidX.Compose.Animation.Graphics |1.6.6 |
|
||||
| 36|androidx.compose.animation:animation-graphics-android |1.6.6 |Xamarin.AndroidX.Compose.Animation.Graphics.Android |1.6.6 |
|
||||
| 37|androidx.compose.foundation:foundation |1.6.6 |Xamarin.AndroidX.Compose.Foundation |1.6.6 |
|
||||
| 38|androidx.compose.foundation:foundation-android |1.6.6 |Xamarin.AndroidX.Compose.Foundation.Android |1.6.6 |
|
||||
| 39|androidx.compose.foundation:foundation-layout |1.6.6 |Xamarin.AndroidX.Compose.Foundation.Layout |1.6.6 |
|
||||
| 40|androidx.compose.foundation:foundation-layout-android |1.6.6 |Xamarin.AndroidX.Compose.Foundation.Layout.Android |1.6.6 |
|
||||
| 41|androidx.compose.material:material |1.6.6 |Xamarin.AndroidX.Compose.Material |1.6.6 |
|
||||
| 42|androidx.compose.material:material-android |1.6.6 |Xamarin.AndroidX.Compose.Material.Android |1.6.6 |
|
||||
| 43|androidx.compose.material:material-icons-core |1.6.6 |Xamarin.AndroidX.Compose.Material.Icons.Core |1.6.6 |
|
||||
| 44|androidx.compose.material:material-icons-core-android |1.6.6 |Xamarin.AndroidX.Compose.Material.Icons.Core.Android |1.6.6 |
|
||||
| 45|androidx.compose.material:material-icons-extended |1.6.6 |Xamarin.AndroidX.Compose.Material.Icons.Extended |1.6.6 |
|
||||
| 46|androidx.compose.material:material-icons-extended-android |1.6.6 |Xamarin.AndroidX.Compose.Material.Icons.Extended.Android |1.6.6 |
|
||||
| 47|androidx.compose.material:material-ripple |1.6.6 |Xamarin.AndroidX.Compose.Material.Ripple |1.6.6 |
|
||||
| 48|androidx.compose.material:material-ripple-android |1.6.6 |Xamarin.AndroidX.Compose.Material.Ripple.Android |1.6.6 |
|
||||
| 49|androidx.compose.material3:material3 |1.2.1 |Xamarin.AndroidX.Compose.Material3 |1.2.1 |
|
||||
| 50|androidx.compose.material3:material3-android |1.2.1 |Xamarin.AndroidX.Compose.Material3Android |1.2.1 |
|
||||
| 51|androidx.compose.material3:material3-window-size-class |1.2.1 |Xamarin.AndroidX.Compose.Material3.WindowSizeClass |1.2.1 |
|
||||
| 52|androidx.compose.material3:material3-window-size-class-android |1.2.1 |Xamarin.AndroidX.Compose.Material3.WindowSizeClassAndroid |1.2.1 |
|
||||
| 53|androidx.compose.runtime:runtime |1.6.6 |Xamarin.AndroidX.Compose.Runtime |1.6.6 |
|
||||
| 54|androidx.compose.runtime:runtime-android |1.6.6 |Xamarin.AndroidX.Compose.Runtime.Android |1.6.6 |
|
||||
| 55|androidx.compose.runtime:runtime-livedata |1.6.6 |Xamarin.AndroidX.Compose.Runtime.LiveData |1.6.6 |
|
||||
| 56|androidx.compose.runtime:runtime-rxjava2 |1.6.6 |Xamarin.AndroidX.Compose.Runtime.RxJava2 |1.6.6 |
|
||||
| 57|androidx.compose.runtime:runtime-rxjava3 |1.6.6 |Xamarin.AndroidX.Compose.Runtime.RxJava3 |1.6.6 |
|
||||
| 58|androidx.compose.runtime:runtime-saveable |1.6.6 |Xamarin.AndroidX.Compose.Runtime.Saveable |1.6.6 |
|
||||
| 59|androidx.compose.runtime:runtime-saveable-android |1.6.6 |Xamarin.AndroidX.Compose.Runtime.Saveable.Android |1.6.6 |
|
||||
| 60|androidx.compose.ui:ui |1.6.6 |Xamarin.AndroidX.Compose.UI |1.6.6 |
|
||||
| 61|androidx.compose.ui:ui-android |1.6.6 |Xamarin.AndroidX.Compose.UI.Android |1.6.6 |
|
||||
| 62|androidx.compose.ui:ui-geometry |1.6.6 |Xamarin.AndroidX.Compose.UI.Geometry |1.6.6 |
|
||||
| 63|androidx.compose.ui:ui-geometry-android |1.6.6 |Xamarin.AndroidX.Compose.UI.Geometry.Android |1.6.6 |
|
||||
| 64|androidx.compose.ui:ui-graphics |1.6.6 |Xamarin.AndroidX.Compose.UI.Graphics |1.6.6 |
|
||||
| 65|androidx.compose.ui:ui-graphics-android |1.6.6 |Xamarin.AndroidX.Compose.UI.Graphics.Android |1.6.6 |
|
||||
| 66|androidx.compose.ui:ui-text |1.6.6 |Xamarin.AndroidX.Compose.UI.Text |1.6.6 |
|
||||
| 67|androidx.compose.ui:ui-text-android |1.6.6 |Xamarin.AndroidX.Compose.UI.Text.Android |1.6.6 |
|
||||
| 68|androidx.compose.ui:ui-tooling |1.6.6 |Xamarin.AndroidX.Compose.UI.Tooling |1.6.6 |
|
||||
| 69|androidx.compose.ui:ui-tooling-android |1.6.6 |Xamarin.AndroidX.Compose.UI.Tooling.Android |1.6.6 |
|
||||
| 70|androidx.compose.ui:ui-tooling-data |1.6.6 |Xamarin.AndroidX.Compose.UI.Tooling.Data |1.6.6 |
|
||||
| 71|androidx.compose.ui:ui-tooling-data-android |1.6.6 |Xamarin.AndroidX.Compose.UI.Tooling.Data.Android |1.6.6 |
|
||||
| 72|androidx.compose.ui:ui-tooling-preview |1.6.6 |Xamarin.AndroidX.Compose.UI.Tooling.Preview |1.6.6 |
|
||||
| 73|androidx.compose.ui:ui-tooling-preview-android |1.6.6 |Xamarin.AndroidX.Compose.UI.Tooling.Preview.Android |1.6.6 |
|
||||
| 74|androidx.compose.ui:ui-unit |1.6.6 |Xamarin.AndroidX.Compose.UI.Unit |1.6.6 |
|
||||
| 75|androidx.compose.ui:ui-unit-android |1.6.6 |Xamarin.AndroidX.Compose.UI.Unit.Android |1.6.6 |
|
||||
| 76|androidx.compose.ui:ui-util |1.6.6 |Xamarin.AndroidX.Compose.UI.Util |1.6.6 |
|
||||
| 77|androidx.compose.ui:ui-util-android |1.6.6 |Xamarin.AndroidX.Compose.UI.Util.Android |1.6.6 |
|
||||
| 78|androidx.compose.ui:ui-viewbinding |1.6.6 |Xamarin.AndroidX.Compose.UI.ViewBinding |1.6.6 |
|
||||
| 79|androidx.concurrent:concurrent-futures |1.1.0 |Xamarin.AndroidX.Concurrent.Futures |1.1.0.18 |
|
||||
| 80|androidx.concurrent:concurrent-futures-ktx |1.1.0 |Xamarin.AndroidX.Concurrent.Futures.Ktx |1.1.0.7 |
|
||||
| 81|androidx.constraintlayout:constraintlayout |2.1.4 |Xamarin.AndroidX.ConstraintLayout |2.1.4.10 |
|
||||
| 82|androidx.constraintlayout:constraintlayout-core |1.0.4 |Xamarin.AndroidX.ConstraintLayout.Core |1.0.4.10 |
|
||||
| 83|androidx.constraintlayout:constraintlayout-solver |2.0.4 |Xamarin.AndroidX.ConstraintLayout.Solver |2.0.4.18 |
|
||||
| 84|androidx.contentpager:contentpager |1.0.0 |Xamarin.AndroidX.ContentPager |1.0.0.23 |
|
||||
| 85|androidx.coordinatorlayout:coordinatorlayout |1.2.0 |Xamarin.AndroidX.CoordinatorLayout |1.2.0.11 |
|
||||
| 86|androidx.core:core |1.13.0 |Xamarin.AndroidX.Core |1.13.0 |
|
||||
| 87|androidx.core:core-animation |1.0.0-alpha02 |Xamarin.AndroidX.Core.Animation |1.0.0.21-alpha02 |
|
||||
| 88|androidx.core:core-google-shortcuts |1.1.0 |Xamarin.AndroidX.Core.GoogleShortcuts |1.1.0.8 |
|
||||
| 89|androidx.core:core-ktx |1.13.0 |Xamarin.AndroidX.Core.Core.Ktx |1.13.0 |
|
||||
| 90|androidx.core:core-role |1.0.0 |Xamarin.AndroidX.Core.Role |1.0.0.21 |
|
||||
| 91|androidx.core:core-splashscreen |1.0.1 |Xamarin.AndroidX.Core.SplashScreen |1.0.1.6 |
|
||||
| 92|androidx.credentials:credentials |1.2.2 |Xamarin.AndroidX.Credentials |1.2.2 |
|
||||
| 93|androidx.credentials:credentials-play-services-auth |1.2.2 |Xamarin.AndroidX.Credentials.PlayServicesAuth |1.2.2 |
|
||||
| 94|androidx.cursoradapter:cursoradapter |1.0.0 |Xamarin.AndroidX.CursorAdapter |1.0.0.23 |
|
||||
| 95|androidx.customview:customview |1.1.0 |Xamarin.AndroidX.CustomView |1.1.0.22 |
|
||||
| 96|androidx.customview:customview-poolingcontainer |1.0.0 |Xamarin.AndroidX.CustomView.PoolingContainer |1.0.0.9 |
|
||||
| 97|androidx.databinding:databinding-adapters |8.3.2 |Xamarin.AndroidX.DataBinding.DataBindingAdapters |8.3.2 |
|
||||
| 98|androidx.databinding:databinding-common |8.3.2 |Xamarin.AndroidX.DataBinding.DataBindingCommon |8.3.2 |
|
||||
| 99|androidx.databinding:databinding-runtime |8.3.2 |Xamarin.AndroidX.DataBinding.DataBindingRuntime |8.3.2 |
|
||||
| 100|androidx.databinding:viewbinding |8.3.2 |Xamarin.AndroidX.DataBinding.ViewBinding |8.3.2 |
|
||||
| 101|androidx.datastore:datastore |1.1.0 |Xamarin.AndroidX.DataStore |1.1.0 |
|
||||
| 102|androidx.datastore:datastore-android |1.1.0 |Xamarin.AndroidX.DataStore.Android |1.1.0 |
|
||||
| 103|androidx.datastore:datastore-core |1.1.0 |Xamarin.AndroidX.DataStore.Core |1.1.0 |
|
||||
| 104|androidx.datastore:datastore-core-android |1.1.0 |Xamarin.AndroidX.DataStore.Core.Android |1.1.0 |
|
||||
| 105|androidx.datastore:datastore-core-jvm |1.1.0 |Xamarin.AndroidX.DataStore.Core.Jvm |1.1.0 |
|
||||
| 106|androidx.datastore:datastore-core-okio |1.1.0 |Xamarin.AndroidX.DataStore.Core.OkIO |1.1.0 |
|
||||
| 107|androidx.datastore:datastore-core-okio-jvm |1.1.0 |Xamarin.AndroidX.DataStore.Core.OkIO.Jvm |1.1.0 |
|
||||
| 108|androidx.datastore:datastore-preferences |1.1.0 |Xamarin.AndroidX.DataStore.Preferences |1.1.0 |
|
||||
| 109|androidx.datastore:datastore-preferences-android |1.1.0 |Xamarin.AndroidX.DataStore.Preferences.Android |1.1.0 |
|
||||
| 110|androidx.datastore:datastore-preferences-core |1.1.0 |Xamarin.AndroidX.DataStore.Preferences.Core |1.1.0 |
|
||||
| 111|androidx.datastore:datastore-preferences-core-jvm |1.1.0 |Xamarin.AndroidX.DataStore.Preferences.Core.Jvm |1.1.0 |
|
||||
| 112|androidx.datastore:datastore-rxjava2 |1.1.0 |Xamarin.AndroidX.DataStore.RxJava2 |1.1.0 |
|
||||
| 113|androidx.datastore:datastore-rxjava3 |1.1.0 |Xamarin.AndroidX.DataStore.RxJava3 |1.1.0 |
|
||||
| 114|androidx.documentfile:documentfile |1.0.1 |Xamarin.AndroidX.DocumentFile |1.0.1.23 |
|
||||
| 115|androidx.drawerlayout:drawerlayout |1.2.0 |Xamarin.AndroidX.DrawerLayout |1.2.0.7 |
|
||||
| 116|androidx.dynamicanimation:dynamicanimation |1.0.0 |Xamarin.AndroidX.DynamicAnimation |1.0.0.23 |
|
||||
| 117|androidx.emoji:emoji |1.1.0 |Xamarin.AndroidX.Emoji |1.1.0.18 |
|
||||
| 118|androidx.emoji:emoji-appcompat |1.1.0 |Xamarin.AndroidX.Emoji.AppCompat |1.1.0.18 |
|
||||
| 119|androidx.emoji:emoji-bundled |1.1.0 |Xamarin.AndroidX.Emoji.Bundled |1.1.0.18 |
|
||||
| 120|androidx.emoji2:emoji2 |1.4.0 |Xamarin.AndroidX.Emoji2 |1.4.0.4 |
|
||||
| 121|androidx.emoji2:emoji2-views-helper |1.4.0 |Xamarin.AndroidX.Emoji2.ViewsHelper |1.4.0.4 |
|
||||
| 122|androidx.enterprise:enterprise-feedback |1.1.0 |Xamarin.AndroidX.Enterprise.Feedback |1.1.0.9 |
|
||||
| 123|androidx.exifinterface:exifinterface |1.3.7 |Xamarin.AndroidX.ExifInterface |1.3.7.1 |
|
||||
| 124|androidx.fragment:fragment |1.6.2 |Xamarin.AndroidX.Fragment |1.6.2.2 |
|
||||
| 125|androidx.fragment:fragment-ktx |1.6.2 |Xamarin.AndroidX.Fragment.Ktx |1.6.2.2 |
|
||||
| 126|androidx.gridlayout:gridlayout |1.0.0 |Xamarin.AndroidX.GridLayout |1.0.0.23 |
|
||||
| 127|androidx.heifwriter:heifwriter |1.0.0 |Xamarin.AndroidX.HeifWriter |1.0.0.23 |
|
||||
| 128|androidx.interpolator:interpolator |1.0.0 |Xamarin.AndroidX.Interpolator |1.0.0.23 |
|
||||
| 129|androidx.leanback:leanback |1.0.0 |Xamarin.AndroidX.Leanback |1.0.0.25 |
|
||||
| 130|androidx.leanback:leanback-preference |1.0.0 |Xamarin.AndroidX.Leanback.Preference |1.0.0.23 |
|
||||
| 131|androidx.legacy:legacy-preference-v14 |1.0.0 |Xamarin.AndroidX.Legacy.Preference.V14 |1.0.0.23 |
|
||||
| 132|androidx.legacy:legacy-support-core-ui |1.0.0 |Xamarin.AndroidX.Legacy.Support.Core.UI |1.0.0.24 |
|
||||
| 133|androidx.legacy:legacy-support-core-utils |1.0.0 |Xamarin.AndroidX.Legacy.Support.Core.Utils |1.0.0.23 |
|
||||
| 134|androidx.legacy:legacy-support-v13 |1.0.0 |Xamarin.AndroidX.Legacy.Support.V13 |1.0.0.23 |
|
||||
| 135|androidx.legacy:legacy-support-v4 |1.0.0 |Xamarin.AndroidX.Legacy.Support.V4 |1.0.0.23 |
|
||||
| 136|androidx.lifecycle:lifecycle-common |2.7.0 |Xamarin.AndroidX.Lifecycle.Common |2.7.0.1 |
|
||||
| 137|androidx.lifecycle:lifecycle-common-java8 |2.7.0 |Xamarin.AndroidX.Lifecycle.Common.Java8 |2.7.0.1 |
|
||||
| 138|androidx.lifecycle:lifecycle-extensions |2.2.0 |Xamarin.AndroidX.Lifecycle.Extensions |2.2.0.23 |
|
||||
| 139|androidx.lifecycle:lifecycle-livedata |2.7.0 |Xamarin.AndroidX.Lifecycle.LiveData |2.7.0.1 |
|
||||
| 140|androidx.lifecycle:lifecycle-livedata-core |2.7.0 |Xamarin.AndroidX.Lifecycle.LiveData.Core |2.7.0.1 |
|
||||
| 141|androidx.lifecycle:lifecycle-livedata-core-ktx |2.7.0 |Xamarin.AndroidX.Lifecycle.LiveData.Core.Ktx |2.7.0.1 |
|
||||
| 142|androidx.lifecycle:lifecycle-livedata-ktx |2.7.0 |Xamarin.AndroidX.Lifecycle.LiveData.Ktx |2.7.0.1 |
|
||||
| 143|androidx.lifecycle:lifecycle-process |2.7.0 |Xamarin.AndroidX.Lifecycle.Process |2.7.0.1 |
|
||||
| 144|androidx.lifecycle:lifecycle-reactivestreams |2.7.0 |Xamarin.AndroidX.Lifecycle.ReactiveStreams |2.7.0.1 |
|
||||
| 145|androidx.lifecycle:lifecycle-reactivestreams-ktx |2.7.0 |Xamarin.AndroidX.Lifecycle.ReactiveStreams.Ktx |2.7.0.1 |
|
||||
| 146|androidx.lifecycle:lifecycle-runtime |2.7.0 |Xamarin.AndroidX.Lifecycle.Runtime |2.7.0.1 |
|
||||
| 147|androidx.lifecycle:lifecycle-runtime-ktx |2.7.0 |Xamarin.AndroidX.Lifecycle.Runtime.Ktx |2.7.0.1 |
|
||||
| 148|androidx.lifecycle:lifecycle-service |2.7.0 |Xamarin.AndroidX.Lifecycle.Service |2.7.0.1 |
|
||||
| 149|androidx.lifecycle:lifecycle-viewmodel |2.7.0 |Xamarin.AndroidX.Lifecycle.ViewModel |2.7.0.1 |
|
||||
| 150|androidx.lifecycle:lifecycle-viewmodel-compose |2.7.0 |Xamarin.AndroidX.Lifecycle.ViewModel.Compose |2.7.0.1 |
|
||||
| 151|androidx.lifecycle:lifecycle-viewmodel-ktx |2.7.0 |Xamarin.AndroidX.Lifecycle.ViewModel.Ktx |2.7.0.1 |
|
||||
| 152|androidx.lifecycle:lifecycle-viewmodel-savedstate |2.7.0 |Xamarin.AndroidX.Lifecycle.ViewModelSavedState |2.7.0.1 |
|
||||
| 153|androidx.loader:loader |1.1.0 |Xamarin.AndroidX.Loader |1.1.0.23 |
|
||||
| 154|androidx.localbroadcastmanager:localbroadcastmanager |1.1.0 |Xamarin.AndroidX.LocalBroadcastManager |1.1.0.11 |
|
||||
| 155|androidx.media:media |1.7.0 |Xamarin.AndroidX.Media |1.7.0.1 |
|
||||
| 156|androidx.media2:media2-common |1.3.0 |Xamarin.AndroidX.Media2.Common |1.3.0.1 |
|
||||
| 157|androidx.media2:media2-session |1.3.0 |Xamarin.AndroidX.Media2.Session |1.3.0.1 |
|
||||
| 158|androidx.media2:media2-widget |1.3.0 |Xamarin.AndroidX.Media2.Widget |1.3.0.1 |
|
||||
| 159|androidx.mediarouter:mediarouter |1.7.0 |Xamarin.AndroidX.MediaRouter |1.7.0 |
|
||||
| 160|androidx.multidex:multidex |2.0.1 |Xamarin.AndroidX.MultiDex |2.0.1.23 |
|
||||
| 161|androidx.navigation:navigation-common |2.7.7 |Xamarin.AndroidX.Navigation.Common |2.7.7.1 |
|
||||
| 162|androidx.navigation:navigation-common-ktx |2.7.7 |Xamarin.AndroidX.Navigation.Common.Ktx |2.7.7.1 |
|
||||
| 163|androidx.navigation:navigation-compose |2.7.7 |Xamarin.AndroidX.Navigation.Compose |2.7.7.1 |
|
||||
| 164|androidx.navigation:navigation-fragment |2.7.7 |Xamarin.AndroidX.Navigation.Fragment |2.7.7.1 |
|
||||
| 165|androidx.navigation:navigation-fragment-ktx |2.7.7 |Xamarin.AndroidX.Navigation.Fragment.Ktx |2.7.7.1 |
|
||||
| 166|androidx.navigation:navigation-runtime |2.7.7 |Xamarin.AndroidX.Navigation.Runtime |2.7.7.1 |
|
||||
| 167|androidx.navigation:navigation-runtime-ktx |2.7.7 |Xamarin.AndroidX.Navigation.Runtime.Ktx |2.7.7.1 |
|
||||
| 168|androidx.navigation:navigation-ui |2.7.7 |Xamarin.AndroidX.Navigation.UI |2.7.7.1 |
|
||||
| 169|androidx.navigation:navigation-ui-ktx |2.7.7 |Xamarin.AndroidX.Navigation.UI.Ktx |2.7.7.1 |
|
||||
| 170|androidx.paging:paging-common |3.2.1 |Xamarin.AndroidX.Paging.Common |3.2.1.4 |
|
||||
| 171|androidx.paging:paging-common-ktx |3.2.1 |Xamarin.AndroidX.Paging.Common.Ktx |3.2.1.4 |
|
||||
| 172|androidx.paging:paging-runtime |3.2.1 |Xamarin.AndroidX.Paging.Runtime |3.2.1.4 |
|
||||
| 173|androidx.paging:paging-runtime-ktx |3.2.1 |Xamarin.AndroidX.Paging.Runtime.Ktx |3.2.1.4 |
|
||||
| 174|androidx.paging:paging-rxjava2 |3.2.1 |Xamarin.AndroidX.Paging.RxJava2 |3.2.1.4 |
|
||||
| 175|androidx.paging:paging-rxjava2-ktx |3.2.1 |Xamarin.AndroidX.Paging.RxJava2.Ktx |3.2.1.4 |
|
||||
| 176|androidx.palette:palette |1.0.0 |Xamarin.AndroidX.Palette |1.0.0.23 |
|
||||
| 177|androidx.palette:palette-ktx |1.0.0 |Xamarin.AndroidX.Palette.Palette.Ktx |1.0.0.16 |
|
||||
| 178|androidx.percentlayout:percentlayout |1.0.0 |Xamarin.AndroidX.PercentLayout |1.0.0.24 |
|
||||
| 179|androidx.preference:preference |1.2.1 |Xamarin.AndroidX.Preference |1.2.1.4 |
|
||||
| 180|androidx.preference:preference-ktx |1.2.1 |Xamarin.AndroidX.Preference.Preference.Ktx |1.2.1.4 |
|
||||
| 181|androidx.print:print |1.0.0 |Xamarin.AndroidX.Print |1.0.0.23 |
|
||||
| 182|androidx.profileinstaller:profileinstaller |1.3.1 |Xamarin.AndroidX.ProfileInstaller.ProfileInstaller |1.3.1.6 |
|
||||
| 183|androidx.recommendation:recommendation |1.0.0 |Xamarin.AndroidX.Recommendation |1.0.0.23 |
|
||||
| 184|androidx.recyclerview:recyclerview |1.3.2 |Xamarin.AndroidX.RecyclerView |1.3.2.2 |
|
||||
| 185|androidx.recyclerview:recyclerview-selection |1.1.0 |Xamarin.AndroidX.RecyclerView.Selection |1.1.0.17 |
|
||||
| 186|androidx.resourceinspection:resourceinspection-annotation |1.0.1 |Xamarin.AndroidX.ResourceInspection.Annotation |1.0.1.11 |
|
||||
| 187|androidx.room:room-common |2.6.1 |Xamarin.AndroidX.Room.Common |2.6.1.1 |
|
||||
| 188|androidx.room:room-guava |2.6.1 |Xamarin.AndroidX.Room.Guava |2.6.1.1 |
|
||||
| 189|androidx.room:room-ktx |2.6.1 |Xamarin.AndroidX.Room.Room.Ktx |2.6.1.1 |
|
||||
| 190|androidx.room:room-runtime |2.6.1 |Xamarin.AndroidX.Room.Runtime |2.6.1.1 |
|
||||
| 191|androidx.room:room-rxjava2 |2.6.1 |Xamarin.AndroidX.Room.Room.RxJava2 |2.6.1.1 |
|
||||
| 192|androidx.room:room-rxjava3 |2.6.1 |Xamarin.AndroidX.Room.Room.RxJava3 |2.6.1.1 |
|
||||
| 193|androidx.savedstate:savedstate |1.2.1 |Xamarin.AndroidX.SavedState |1.2.1.7 |
|
||||
| 194|androidx.savedstate:savedstate-ktx |1.2.1 |Xamarin.AndroidX.SavedState.SavedState.Ktx |1.2.1.7 |
|
||||
| 195|androidx.security:security-crypto |1.0.0 |Xamarin.AndroidX.Security.SecurityCrypto |1.0.0.16 |
|
||||
| 196|androidx.slice:slice-builders |1.0.0 |Xamarin.AndroidX.Slice.Builders |1.0.0.23 |
|
||||
| 197|androidx.slice:slice-core |1.0.0 |Xamarin.AndroidX.Slice.Core |1.0.0.23 |
|
||||
| 198|androidx.slice:slice-view |1.0.0 |Xamarin.AndroidX.Slice.View |1.0.0.23 |
|
||||
| 199|androidx.slidingpanelayout:slidingpanelayout |1.2.0 |Xamarin.AndroidX.SlidingPaneLayout |1.2.0.11 |
|
||||
| 200|androidx.sqlite:sqlite |2.4.0 |Xamarin.AndroidX.Sqlite |2.4.0.2 |
|
||||
| 201|androidx.sqlite:sqlite-framework |2.4.0 |Xamarin.AndroidX.Sqlite.Framework |2.4.0.2 |
|
||||
| 202|androidx.startup:startup-runtime |1.1.1 |Xamarin.AndroidX.Startup.StartupRuntime |1.1.1.11 |
|
||||
| 203|androidx.swiperefreshlayout:swiperefreshlayout |1.1.0 |Xamarin.AndroidX.SwipeRefreshLayout |1.1.0.18 |
|
||||
| 204|androidx.tracing:tracing |1.2.0 |Xamarin.AndroidX.Tracing.Tracing |1.2.0.1 |
|
||||
| 205|androidx.transition:transition |1.4.1 |Xamarin.AndroidX.Transition |1.4.1.16 |
|
||||
| 206|androidx.tvprovider:tvprovider |1.0.0 |Xamarin.AndroidX.TvProvider |1.0.0.25 |
|
||||
| 207|androidx.vectordrawable:vectordrawable |1.1.0 |Xamarin.AndroidX.VectorDrawable |1.1.0.23 |
|
||||
| 208|androidx.vectordrawable:vectordrawable-animated |1.1.0 |Xamarin.AndroidX.VectorDrawable.Animated |1.1.0.23 |
|
||||
| 209|androidx.versionedparcelable:versionedparcelable |1.2.0 |Xamarin.AndroidX.VersionedParcelable |1.2.0.1 |
|
||||
| 210|androidx.viewpager:viewpager |1.0.0 |Xamarin.AndroidX.ViewPager |1.0.0.23 |
|
||||
| 211|androidx.viewpager2:viewpager2 |1.0.0 |Xamarin.AndroidX.ViewPager2 |1.0.0.25 |
|
||||
| 212|androidx.wear:wear |1.3.0 |Xamarin.AndroidX.Wear |1.3.0.4 |
|
||||
| 213|androidx.wear:wear-input |1.1.0 |Xamarin.AndroidX.Wear.Input |1.0.0.13 |
|
||||
| 214|androidx.wear:wear-ongoing |1.0.0 |Xamarin.AndroidX.Wear.Ongoing |1.0.0.13 |
|
||||
| 215|androidx.wear:wear-phone-interactions |1.0.1 |Xamarin.AndroidX.Wear.PhoneInteractions |1.0.1.11 |
|
||||
| 216|androidx.wear:wear-remote-interactions |1.0.0 |Xamarin.AndroidX.Wear.RemoteInteractions |1.0.0.13 |
|
||||
| 217|androidx.wear.compose:compose-foundation |1.3.1 |Xamarin.AndroidX.Wear.Compose.Foundation |1.3.1 |
|
||||
| 218|androidx.wear.compose:compose-material |1.3.1 |Xamarin.AndroidX.Wear.Compose.Material |1.3.1 |
|
||||
| 219|androidx.wear.compose:compose-material-core |1.3.1 |Xamarin.AndroidX.Wear.Compose.Material.Core |1.3.1 |
|
||||
| 220|androidx.wear.compose:compose-navigation |1.3.1 |Xamarin.AndroidX.Wear.Compose.Navigation |1.3.1 |
|
||||
| 221|androidx.wear.protolayout:protolayout |1.1.0 |Xamarin.AndroidX.Wear.ProtoLayout |1.1.0.1 |
|
||||
| 222|androidx.wear.protolayout:protolayout-expression |1.1.0 |Xamarin.AndroidX.Wear.ProtoLayout.Expression |1.1.0.1 |
|
||||
| 223|androidx.wear.protolayout:protolayout-expression-pipeline |1.1.0 |Xamarin.AndroidX.Wear.ProtoLayout.Expression.Pipeline |1.1.0.1 |
|
||||
| 224|androidx.wear.protolayout:protolayout-proto |1.1.0 |Xamarin.AndroidX.Wear.ProtoLayout.Proto |1.1.0.1 |
|
||||
| 225|androidx.wear.tiles:tiles |1.3.0 |Xamarin.AndroidX.Wear.Tiles |1.3.0.1 |
|
||||
| 226|androidx.wear.tiles:tiles-material |1.3.0 |Xamarin.AndroidX.Wear.Tiles.Material |1.3.0.1 |
|
||||
| 227|androidx.wear.tiles:tiles-proto |1.3.0 |Xamarin.AndroidX.Wear.Tiles.Proto |1.3.0.1 |
|
||||
| 228|androidx.wear.tiles:tiles-renderer |1.1.0 |Xamarin.AndroidX.Wear.Tiles.Renderer |1.1.0.8 |
|
||||
| 229|androidx.wear.watchface:watchface |1.2.1 |Xamarin.AndroidX.Wear.WatchFace |1.2.1.1 |
|
||||
| 230|androidx.wear.watchface:watchface-client |1.2.1 |Xamarin.AndroidX.Wear.WatchFace.Client |1.2.1.1 |
|
||||
| 231|androidx.wear.watchface:watchface-client-guava |1.2.1 |Xamarin.AndroidX.Wear.WatchFace.ClientGuava |1.2.1.1 |
|
||||
| 232|androidx.wear.watchface:watchface-complications |1.2.1 |Xamarin.AndroidX.Wear.WatchFace.Complications |1.2.1.1 |
|
||||
| 233|androidx.wear.watchface:watchface-complications-data |1.2.1 |Xamarin.AndroidX.Wear.WatchFace.Complications.Data |1.2.1.1 |
|
||||
| 234|androidx.wear.watchface:watchface-complications-data-source |1.2.1 |Xamarin.AndroidX.Wear.WatchFace.Complications.Data.Source |1.2.1.1 |
|
||||
| 235|androidx.wear.watchface:watchface-complications-data-source-ktx |1.2.1 |Xamarin.AndroidX.Wear.WatchFace.Complications.Data.Source.Ktx |1.2.1.1 |
|
||||
| 236|androidx.wear.watchface:watchface-complications-rendering |1.2.1 |Xamarin.AndroidX.Wear.WatchFace.Complications.Rendering |1.2.1.1 |
|
||||
| 237|androidx.wear.watchface:watchface-data |1.2.1 |Xamarin.AndroidX.Wear.WatchFace.Data |1.2.1.1 |
|
||||
| 238|androidx.wear.watchface:watchface-guava |1.2.1 |Xamarin.AndroidX.Wear.WatchFace.Guava |1.2.1.1 |
|
||||
| 239|androidx.wear.watchface:watchface-style |1.2.1 |Xamarin.AndroidX.Wear.WatchFace.Style |1.2.1.1 |
|
||||
| 240|androidx.webkit:webkit |1.10.0 |Xamarin.AndroidX.WebKit |1.10.0.1 |
|
||||
| 241|androidx.window:window |1.2.0 |Xamarin.AndroidX.Window |1.2.0.2 |
|
||||
| 242|androidx.window:window-extensions |1.0.0-alpha01 |Xamarin.AndroidX.Window.WindowExtensions |1.0.0.18-alpha01 |
|
||||
| 243|androidx.window:window-java |1.2.0 |Xamarin.AndroidX.Window.WindowJava |1.2.0.2 |
|
||||
| 244|androidx.window:window-rxjava2 |1.2.0 |Xamarin.AndroidX.Window.WindowRxJava2 |1.2.0.2 |
|
||||
| 245|androidx.window:window-rxjava3 |1.2.0 |Xamarin.AndroidX.Window.WindowRxJava3 |1.2.0.2 |
|
||||
| 246|androidx.window.extensions.core:core |1.0.0 |Xamarin.AndroidX.Window.Extensions.Core.Core |1.0.0.5 |
|
||||
| 247|androidx.work:work-runtime |2.9.0 |Xamarin.AndroidX.Work.Runtime |2.9.0.1 |
|
||||
| 248|androidx.work:work-runtime-ktx |2.9.0 |Xamarin.AndroidX.Work.Work.Runtime.Ktx |2.9.0.1 |
|
||||
| 249|com.android.installreferrer:installreferrer |1.1.2 |Xamarin.Google.Android.InstallReferrer |1.1.2 |
|
||||
| 250|com.google.accompanist:accompanist-appcompat-theme |0.34.0 |Xamarin.Google.Accompanist.AppCompat.Theme |0.34.0.1 |
|
||||
| 251|com.google.accompanist:accompanist-drawablepainter |0.34.0 |Xamarin.Google.Accompanist.DrawablePainter |0.34.0.1 |
|
||||
| 252|com.google.accompanist:accompanist-flowlayout |0.34.0 |Xamarin.Google.Accompanist.FlowLayout |0.34.0.1 |
|
||||
| 253|com.google.accompanist:accompanist-pager |0.34.0 |Xamarin.Google.Accompanist.Pager |0.34.0.1 |
|
||||
| 254|com.google.accompanist:accompanist-pager-indicators |0.34.0 |Xamarin.Google.Accompanist.Pager.Indicators |0.34.0.1 |
|
||||
| 255|com.google.accompanist:accompanist-permissions |0.34.0 |Xamarin.Google.Accompanist.Permissions |0.34.0.1 |
|
||||
| 256|com.google.accompanist:accompanist-placeholder |0.34.0 |Xamarin.Google.Accompanist.Placeholder |0.34.0.1 |
|
||||
| 257|com.google.accompanist:accompanist-placeholder-material |0.34.0 |Xamarin.Google.Accompanist.Placeholder.Material |0.34.0.1 |
|
||||
| 258|com.google.accompanist:accompanist-swiperefresh |0.34.0 |Xamarin.Google.Accompanist.SwipeRefresh |0.34.0.1 |
|
||||
| 259|com.google.accompanist:accompanist-systemuicontroller |0.34.0 |Xamarin.Google.Accompanist.SystemUIController |0.34.0.1 |
|
||||
| 260|com.google.android.material:compose-theme-adapter |1.1.18 |Xamarin.Google.Android.Material.Compose.Theme.Adapter |1.1.18.9 |
|
||||
| 261|com.google.android.material:compose-theme-adapter-3 |1.0.18 |Xamarin.Google.Android.Material.Compose.Theme.Adapter3 |1.0.18.8 |
|
||||
| 262|com.google.android.material:material |1.11.0 |Xamarin.Google.Android.Material |1.11.0 |
|
||||
| 263|com.google.assistant.appactions:suggestions |1.0.0 |Xamarin.Google.Assistant.AppActions.Suggestions |1.0.0.9 |
|
||||
| 264|com.google.assistant.appactions:widgets |0.0.1 |Xamarin.Google.Assistant.AppActions.Widgets |0.0.1.10 |
|
||||
| 265|com.google.auto.value:auto-value-annotations |1.10.4 |Xamarin.Google.AutoValue.Annotations |1.10.4.3 |
|
||||
| 266|com.google.code.gson:gson |2.10.1 |GoogleGson |2.10.1.8 |
|
||||
| 267|com.google.crypto.tink:tink-android |1.13.0 |Xamarin.Google.Crypto.Tink.Android |1.13.0 |
|
||||
| 268|com.google.flogger:flogger |0.8 |Xamarin.Flogger |0.8.0.2 |
|
||||
| 269|com.google.flogger:flogger-system-backend |0.8 |Xamarin.Flogger.SystemBackend |0.8.0.2 |
|
||||
| 270|com.google.guava:failureaccess |1.0.2 |Xamarin.Google.Guava.FailureAccess |1.0.2.2 |
|
||||
| 271|com.google.guava:guava |33.1.0-android |Xamarin.Google.Guava |33.1.0 |
|
||||
| 272|com.google.guava:listenablefuture |1.0 |Xamarin.Google.Guava.ListenableFuture |1.0.0.18 |
|
||||
| 273|com.google.j2objc:j2objc-annotations |3.0.0 |Xamarin.Google.J2Objc.Annotations |3.0.0 |
|
||||
| 274|dev.chrisbanes.snapper:snapper |0.3.0 |Xamarin.Dev.ChrisBanes.Snapper |0.3.0.9 |
|
||||
| 275|io.github.aakira:napier |2.7.1 |Xamarin.AAkira.Napier |2.7.1.1 |
|
||||
| 276|io.reactivex.rxjava2:rxandroid |2.1.1 |Xamarin.Android.ReactiveX.RxAndroid |2.1.1.9 |
|
||||
| 277|io.reactivex.rxjava2:rxjava |2.2.21 |Xamarin.Android.ReactiveX.RxJava |2.2.21.16 |
|
||||
| 278|io.reactivex.rxjava2:rxkotlin |2.4.0 |Xamarin.Android.ReactiveX.RxKotlin |2.4.0.9 |
|
||||
| 279|io.reactivex.rxjava3:rxandroid |3.0.2 |Xamarin.Android.ReactiveX.RxJava3.RxAndroid |3.0.2.8 |
|
||||
| 280|io.reactivex.rxjava3:rxjava |3.1.8 |Xamarin.Android.ReactiveX.RxJava3.RxJava |3.1.8.3 |
|
||||
| 281|io.reactivex.rxjava3:rxkotlin |3.0.1 |Xamarin.Android.ReactiveX.RxJava3.RxKotlin |3.0.1.9 |
|
||||
| 282|org.checkerframework:checker-compat-qual |2.5.6 |Xamarin.CheckerFramework.CheckerCompatQual |2.5.6.2 |
|
||||
| 283|org.checkerframework:checker-qual |3.42.0 |Xamarin.CheckerFramework.CheckerQual |3.42.0.1 |
|
||||
| 284|org.jetbrains:annotations |24.1.0 |Xamarin.Jetbrains.Annotations |24.1.0.2 |
|
||||
| 285|org.jetbrains.kotlin:kotlin-android-extensions-runtime |1.9.23 |Xamarin.Kotlin.Android.Extensions.Runtime |1.9.23 |
|
||||
| 286|org.jetbrains.kotlin:kotlin-parcelize-runtime |1.9.23 |Xamarin.Kotlin.Parcelize.Runtime |1.9.23 |
|
||||
| 287|org.jetbrains.kotlin:kotlin-reflect |1.9.23 |Xamarin.Kotlin.Reflect |1.9.23 |
|
||||
| 288|org.jetbrains.kotlin:kotlin-stdlib |1.9.23 |Xamarin.Kotlin.StdLib |1.9.23 |
|
||||
| 289|org.jetbrains.kotlin:kotlin-stdlib-common |1.9.23 |Xamarin.Kotlin.StdLib.Common |1.9.23 |
|
||||
| 290|org.jetbrains.kotlin:kotlin-stdlib-jdk7 |1.9.23 |Xamarin.Kotlin.StdLib.Jdk7 |1.9.23 |
|
||||
| 291|org.jetbrains.kotlin:kotlin-stdlib-jdk8 |1.9.23 |Xamarin.Kotlin.StdLib.Jdk8 |1.9.23 |
|
||||
| 292|org.jetbrains.kotlinx:atomicfu |0.17.0 |Xamarin.KotlinX.AtomicFU |0.17.0 |
|
||||
| 293|org.jetbrains.kotlinx:atomicfu-jvm |0.17.0 |Xamarin.KotlinX.AtomicFU.Jvm |0.17.0 |
|
||||
| 294|org.jetbrains.kotlinx:kotlinx-coroutines-android |1.8.0 |Xamarin.KotlinX.Coroutines.Android |1.8.0.1 |
|
||||
| 295|org.jetbrains.kotlinx:kotlinx-coroutines-core |1.8.0 |Xamarin.KotlinX.Coroutines.Core |1.8.0.1 |
|
||||
| 296|org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm |1.8.0 |Xamarin.KotlinX.Coroutines.Core.Jvm |1.8.0.1 |
|
||||
| 297|org.jetbrains.kotlinx:kotlinx-coroutines-guava |1.8.0 |Xamarin.KotlinX.Coroutines.Guava |1.8.0.1 |
|
||||
| 298|org.jetbrains.kotlinx:kotlinx-coroutines-jdk8 |1.8.0 |Xamarin.KotlinX.Coroutines.Jdk8 |1.8.0.1 |
|
||||
| 299|org.jetbrains.kotlinx:kotlinx-coroutines-play-services |1.8.0 |Xamarin.KotlinX.Coroutines.Play.Services |1.8.0.1 |
|
||||
| 300|org.jetbrains.kotlinx:kotlinx-coroutines-reactive |1.8.0 |Xamarin.KotlinX.Coroutines.Reactive |1.8.0.1 |
|
||||
| 301|org.jetbrains.kotlinx:kotlinx-coroutines-rx2 |1.8.0 |Xamarin.KotlinX.Coroutines.Rx2 |1.8.0.1 |
|
||||
| 302|org.jetbrains.kotlinx:kotlinx-coroutines-rx3 |1.8.0 |Xamarin.KotlinX.Coroutines.Rx3 |1.8.0.1 |
|
||||
| 303|org.jetbrains.kotlinx:kotlinx-serialization-core |1.6.3 |Xamarin.KotlinX.Serialization.Core |1.6.3 |
|
||||
| 304|org.jetbrains.kotlinx:kotlinx-serialization-core-jvm |1.6.3 |Xamarin.KotlinX.Serialization.Core.Jvm |1.6.3 |
|
||||
| 305|org.jetbrains.kotlinx:kotlinx-serialization-protobuf |1.6.3 |Xamarin.KotlinX.Serialization.Protobuf |1.6.3 |
|
||||
| 306|org.jetbrains.kotlinx:kotlinx-serialization-protobuf-jvm |1.6.3 |Xamarin.KotlinX.Serialization.Protobuf.Jvm |1.6.3 |
|
||||
| 307|org.reactivestreams:reactive-streams |1.0.4 |Xamarin.Android.ReactiveStreams |1.0.4.10 |
|
|
@ -1,19 +1,19 @@
|
|||
BuildToolName,BuildToolVersion
|
||||
dotnet sdk, 7.0.403
|
||||
dotnet sdk, 7.0.408
|
||||
dotnet sdk, patch
|
||||
msbuild-sdks MSBuild.Sdk.Extras, 3.0.44
|
||||
msbuild-sdks Microsoft.Build.Traversal, 3.2.0
|
||||
msbuild-sdks Microsoft.Build.NoTargets, 3.7.0
|
||||
msbuild-sdks Microsoft.Build.Traversal, 4.1.0
|
||||
msbuild-sdks Microsoft.Build.NoTargets, 3.7.56
|
||||
msbuild-sdks Xamarin.Legacy.Sdk, 0.2.0-alpha4
|
||||
Mono JIT compiler, 6.12.0.188 (2020-02/ca8abcb6bc4 Thu Oct 13 14:26:22 EDT 2022)
|
||||
nuget, 6.3.1.1
|
||||
api-tools,1.3.5
|
||||
boots,1.1.0.712-preview2
|
||||
boots,1.1.0.36
|
||||
private-api-tools,1.0.3
|
||||
xamarin.androidbinderator.tool,0.5.7
|
||||
Gradle, 8.4
|
||||
Kotlin, 1.9.10
|
||||
Gradle, 8.7
|
||||
Kotlin, 1.9.22
|
||||
Groovy, 3.0.17
|
||||
Ant, Apache Ant(TM) version 1.10.13 compiled on January 4 2023
|
||||
JVM, 11.0.21 (Eclipse Adoptium 11.0.21+9)
|
||||
openjdk, 11.0.21 2023-10-17
|
||||
javac, 11.0.21
|
||||
JVM, 11.0.22 (Eclipse Adoptium 11.0.22+7)
|
||||
openjdk, 11.0.22 2024-01-16
|
||||
javac, 11.0.22
|
||||
|
|
|
|
@ -6,18 +6,18 @@
|
|||
{
|
||||
"sdk":
|
||||
{
|
||||
"version": "7.0.403",
|
||||
"version": "7.0.408",
|
||||
"rollForward": "patch"
|
||||
},
|
||||
"msbuild-sdks":
|
||||
{
|
||||
"MSBuild.Sdk.Extras": "3.0.44",
|
||||
"Microsoft.Build.Traversal": "3.2.0",
|
||||
"Microsoft.Build.NoTargets": "3.7.0",
|
||||
"Microsoft.Build.Traversal": "4.1.0",
|
||||
"Microsoft.Build.NoTargets": "3.7.56",
|
||||
"Xamarin.Legacy.Sdk": "0.2.0-alpha4"
|
||||
}
|
||||
}
|
||||
|
||||
```
|
||||
version7.0.403
|
||||
version7.0.408
|
||||
rollForwardpatch
|
||||
|
|
|
@ -584,7 +584,6 @@ ReactiveX.Subjects
|
|||
ReactiveX.Subscribers
|
||||
Xamarin.Android.InstallReferrer
|
||||
System.Runtime.CompilerServices
|
||||
System.Runtime.Versioning
|
||||
Xamarin.AAkira.Napier
|
||||
Xamarin.Android.InstallReferrer.Api
|
||||
Xamarin.Android.InstallReferrer.Commons
|
||||
|
|
|
@ -1,37 +0,0 @@
|
|||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio Version 16
|
||||
VisualStudioVersion = 16.0.28606.126
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BuildXamarinFormsApp", "BuildXamarinFormsApp\BuildXamarinFormsApp\BuildXamarinFormsApp.csproj", "{0762E7E2-F0CE-4390-915F-26B9B8A40B59}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Debug|iPhone = Debug|iPhone
|
||||
Debug|iPhoneSimulator = Debug|iPhoneSimulator
|
||||
Release|Any CPU = Release|Any CPU
|
||||
Release|iPhone = Release|iPhone
|
||||
Release|iPhoneSimulator = Release|iPhoneSimulator
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{0762E7E2-F0CE-4390-915F-26B9B8A40B59}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{0762E7E2-F0CE-4390-915F-26B9B8A40B59}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{0762E7E2-F0CE-4390-915F-26B9B8A40B59}.Debug|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{0762E7E2-F0CE-4390-915F-26B9B8A40B59}.Debug|iPhone.Build.0 = Debug|Any CPU
|
||||
{0762E7E2-F0CE-4390-915F-26B9B8A40B59}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{0762E7E2-F0CE-4390-915F-26B9B8A40B59}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{0762E7E2-F0CE-4390-915F-26B9B8A40B59}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{0762E7E2-F0CE-4390-915F-26B9B8A40B59}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{0762E7E2-F0CE-4390-915F-26B9B8A40B59}.Release|iPhone.ActiveCfg = Release|Any CPU
|
||||
{0762E7E2-F0CE-4390-915F-26B9B8A40B59}.Release|iPhone.Build.0 = Release|Any CPU
|
||||
{0762E7E2-F0CE-4390-915F-26B9B8A40B59}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{0762E7E2-F0CE-4390-915F-26B9B8A40B59}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {EE78FB73-5D36-494B-AB0F-A8F0D99923E6}
|
||||
EndGlobalSection
|
||||
EndGlobal
|
|
@ -1,20 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<Application xmlns="http://xamarin.com/schemas/2014/forms"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
|
||||
xmlns:d="http://xamarin.com/schemas/2014/forms/design"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
mc:Ignorable="d"
|
||||
x:Class="BuildXamarinFormsApp.App">
|
||||
|
||||
<Application.Resources>
|
||||
<ResourceDictionary>
|
||||
<!--Global Styles-->
|
||||
<Color x:Key="NavigationPrimary">#2196F3</Color>
|
||||
<Style TargetType="NavigationPage">
|
||||
<Setter Property="BarBackgroundColor" Value="{StaticResource NavigationPrimary}" />
|
||||
<Setter Property="BarTextColor" Value="White" />
|
||||
</Style>
|
||||
</ResourceDictionary>
|
||||
</Application.Resources>
|
||||
|
||||
</Application>
|
|
@ -1,32 +0,0 @@
|
|||
using System;
|
||||
using Xamarin.Forms;
|
||||
using Xamarin.Forms.Xaml;
|
||||
using BuildXamarinFormsApp.Services;
|
||||
using BuildXamarinFormsApp.Views;
|
||||
|
||||
namespace BuildXamarinFormsApp
|
||||
{
|
||||
public partial class App : Application
|
||||
{
|
||||
|
||||
public App()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
DependencyService.Register<MockDataStore>();
|
||||
MainPage = new MainPage();
|
||||
}
|
||||
|
||||
protected override void OnStart()
|
||||
{
|
||||
}
|
||||
|
||||
protected override void OnSleep()
|
||||
{
|
||||
}
|
||||
|
||||
protected override void OnResume()
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,3 +0,0 @@
|
|||
using Xamarin.Forms.Xaml;
|
||||
|
||||
[assembly: XamlCompilation(XamlCompilationOptions.Compile)]
|
|
@ -1,25 +0,0 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>netstandard2.0</TargetFramework>
|
||||
<ProduceReferenceAssembly>true</ProduceReferenceAssembly>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
||||
<DebugType>portable</DebugType>
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<LangVersion>8.0</LangVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<LangVersion>8.0</LangVersion>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<JavaMaximumHeapSize>1G</JavaMaximumHeapSize>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Xamarin.Forms" Version="5.0.0.2612" />
|
||||
<PackageReference Include="Xamarin.Essentials" Version="1.8.0" />
|
||||
</ItemGroup>
|
||||
</Project>
|
|
@ -1,18 +0,0 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace BuildXamarinFormsApp.Models
|
||||
{
|
||||
public enum MenuItemType
|
||||
{
|
||||
Browse,
|
||||
About
|
||||
}
|
||||
public class HomeMenuItem
|
||||
{
|
||||
public MenuItemType Id { get; set; }
|
||||
|
||||
public string Title { get; set; }
|
||||
}
|
||||
}
|
|
@ -1,11 +0,0 @@
|
|||
using System;
|
||||
|
||||
namespace BuildXamarinFormsApp.Models
|
||||
{
|
||||
public class Item
|
||||
{
|
||||
public string Id { get; set; }
|
||||
public string Text { get; set; }
|
||||
public string Description { get; set; }
|
||||
}
|
||||
}
|
|
@ -1,15 +0,0 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace BuildXamarinFormsApp.Services
|
||||
{
|
||||
public interface IDataStore<T>
|
||||
{
|
||||
Task<bool> AddItemAsync(T item);
|
||||
Task<bool> UpdateItemAsync(T item);
|
||||
Task<bool> DeleteItemAsync(string id);
|
||||
Task<T> GetItemAsync(string id);
|
||||
Task<IEnumerable<T>> GetItemsAsync(bool forceRefresh = false);
|
||||
}
|
||||
}
|
|
@ -1,60 +0,0 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using BuildXamarinFormsApp.Models;
|
||||
|
||||
namespace BuildXamarinFormsApp.Services
|
||||
{
|
||||
public class MockDataStore : IDataStore<Item>
|
||||
{
|
||||
readonly List<Item> items;
|
||||
|
||||
public MockDataStore()
|
||||
{
|
||||
items = new List<Item>()
|
||||
{
|
||||
new Item { Id = Guid.NewGuid().ToString(), Text = "First item", Description="This is an item description." },
|
||||
new Item { Id = Guid.NewGuid().ToString(), Text = "Second item", Description="This is an item description." },
|
||||
new Item { Id = Guid.NewGuid().ToString(), Text = "Third item", Description="This is an item description." },
|
||||
new Item { Id = Guid.NewGuid().ToString(), Text = "Fourth item", Description="This is an item description." },
|
||||
new Item { Id = Guid.NewGuid().ToString(), Text = "Fifth item", Description="This is an item description." },
|
||||
new Item { Id = Guid.NewGuid().ToString(), Text = "Sixth item", Description="This is an item description." }
|
||||
};
|
||||
}
|
||||
|
||||
public async Task<bool> AddItemAsync(Item item)
|
||||
{
|
||||
items.Add(item);
|
||||
|
||||
return await Task.FromResult(true);
|
||||
}
|
||||
|
||||
public async Task<bool> UpdateItemAsync(Item item)
|
||||
{
|
||||
var oldItem = items.Where((Item arg) => arg.Id == item.Id).FirstOrDefault();
|
||||
items.Remove(oldItem);
|
||||
items.Add(item);
|
||||
|
||||
return await Task.FromResult(true);
|
||||
}
|
||||
|
||||
public async Task<bool> DeleteItemAsync(string id)
|
||||
{
|
||||
var oldItem = items.Where((Item arg) => arg.Id == id).FirstOrDefault();
|
||||
items.Remove(oldItem);
|
||||
|
||||
return await Task.FromResult(true);
|
||||
}
|
||||
|
||||
public async Task<Item> GetItemAsync(string id)
|
||||
{
|
||||
return await Task.FromResult(items.FirstOrDefault(s => s.Id == id));
|
||||
}
|
||||
|
||||
public async Task<IEnumerable<Item>> GetItemsAsync(bool forceRefresh = false)
|
||||
{
|
||||
return await Task.FromResult(items);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,18 +0,0 @@
|
|||
using System;
|
||||
using System.Windows.Input;
|
||||
using Xamarin.Essentials;
|
||||
using Xamarin.Forms;
|
||||
|
||||
namespace BuildXamarinFormsApp.ViewModels
|
||||
{
|
||||
public class AboutViewModel : BaseViewModel
|
||||
{
|
||||
public AboutViewModel()
|
||||
{
|
||||
Title = "About";
|
||||
OpenWebCommand = new Command(async () => await Browser.OpenAsync("https://xamarin.com"));
|
||||
}
|
||||
|
||||
public ICommand OpenWebCommand { get; }
|
||||
}
|
||||
}
|
|
@ -1,56 +0,0 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Runtime.CompilerServices;
|
||||
|
||||
using Xamarin.Forms;
|
||||
|
||||
using BuildXamarinFormsApp.Models;
|
||||
using BuildXamarinFormsApp.Services;
|
||||
|
||||
namespace BuildXamarinFormsApp.ViewModels
|
||||
{
|
||||
public class BaseViewModel : INotifyPropertyChanged
|
||||
{
|
||||
public IDataStore<Item> DataStore => DependencyService.Get<IDataStore<Item>>();
|
||||
|
||||
bool isBusy = false;
|
||||
public bool IsBusy
|
||||
{
|
||||
get { return isBusy; }
|
||||
set { SetProperty(ref isBusy, value); }
|
||||
}
|
||||
|
||||
string title = string.Empty;
|
||||
public string Title
|
||||
{
|
||||
get { return title; }
|
||||
set { SetProperty(ref title, value); }
|
||||
}
|
||||
|
||||
protected bool SetProperty<T>(ref T backingStore, T value,
|
||||
[CallerMemberName]string propertyName = "",
|
||||
Action onChanged = null)
|
||||
{
|
||||
if (EqualityComparer<T>.Default.Equals(backingStore, value))
|
||||
return false;
|
||||
|
||||
backingStore = value;
|
||||
onChanged?.Invoke();
|
||||
OnPropertyChanged(propertyName);
|
||||
return true;
|
||||
}
|
||||
|
||||
#region INotifyPropertyChanged
|
||||
public event PropertyChangedEventHandler PropertyChanged;
|
||||
protected void OnPropertyChanged([CallerMemberName] string propertyName = "")
|
||||
{
|
||||
var changed = PropertyChanged;
|
||||
if (changed == null)
|
||||
return;
|
||||
|
||||
changed.Invoke(this, new PropertyChangedEventArgs(propertyName));
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
}
|
|
@ -1,16 +0,0 @@
|
|||
using System;
|
||||
|
||||
using BuildXamarinFormsApp.Models;
|
||||
|
||||
namespace BuildXamarinFormsApp.ViewModels
|
||||
{
|
||||
public class ItemDetailViewModel : BaseViewModel
|
||||
{
|
||||
public Item Item { get; set; }
|
||||
public ItemDetailViewModel(Item item = null)
|
||||
{
|
||||
Title = item?.Text;
|
||||
Item = item;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,55 +0,0 @@
|
|||
using System;
|
||||
using System.Collections.ObjectModel;
|
||||
using System.Diagnostics;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
using Xamarin.Forms;
|
||||
|
||||
using BuildXamarinFormsApp.Models;
|
||||
using BuildXamarinFormsApp.Views;
|
||||
|
||||
namespace BuildXamarinFormsApp.ViewModels
|
||||
{
|
||||
public class ItemsViewModel : BaseViewModel
|
||||
{
|
||||
public ObservableCollection<Item> Items { get; set; }
|
||||
public Command LoadItemsCommand { get; set; }
|
||||
|
||||
public ItemsViewModel()
|
||||
{
|
||||
Title = "Browse";
|
||||
Items = new ObservableCollection<Item>();
|
||||
LoadItemsCommand = new Command(async () => await ExecuteLoadItemsCommand());
|
||||
|
||||
MessagingCenter.Subscribe<NewItemPage, Item>(this, "AddItem", async (obj, item) =>
|
||||
{
|
||||
var newItem = item as Item;
|
||||
Items.Add(newItem);
|
||||
await DataStore.AddItemAsync(newItem);
|
||||
});
|
||||
}
|
||||
|
||||
async Task ExecuteLoadItemsCommand()
|
||||
{
|
||||
IsBusy = true;
|
||||
|
||||
try
|
||||
{
|
||||
Items.Clear();
|
||||
var items = await DataStore.GetItemsAsync(true);
|
||||
foreach (var item in items)
|
||||
{
|
||||
Items.Add(item);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Debug.WriteLine(ex);
|
||||
}
|
||||
finally
|
||||
{
|
||||
IsBusy = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,81 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
|
||||
xmlns:d="http://xamarin.com/schemas/2014/forms/design"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
mc:Ignorable="d"
|
||||
x:Class="BuildXamarinFormsApp.Views.AboutPage"
|
||||
xmlns:vm="clr-namespace:BuildXamarinFormsApp.ViewModels"
|
||||
Title="{Binding Title}">
|
||||
|
||||
<ContentPage.BindingContext>
|
||||
<vm:AboutViewModel />
|
||||
</ContentPage.BindingContext>
|
||||
|
||||
<ContentPage.Resources>
|
||||
<ResourceDictionary>
|
||||
<Color x:Key="Primary">#2196F3</Color>
|
||||
<Color x:Key="Accent">#96d1ff</Color>
|
||||
<Color x:Key="LightTextColor">#999999</Color>
|
||||
</ResourceDictionary>
|
||||
</ContentPage.Resources>
|
||||
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="*" />
|
||||
</Grid.RowDefinitions>
|
||||
<StackLayout BackgroundColor="{StaticResource Accent}" VerticalOptions="FillAndExpand" HorizontalOptions="Fill">
|
||||
<StackLayout Orientation="Horizontal" HorizontalOptions="Center" VerticalOptions="Center">
|
||||
<ContentView Padding="0,40,0,40" VerticalOptions="FillAndExpand">
|
||||
<Image Source="xamarin_logo.png" VerticalOptions="Center" HeightRequest="64" />
|
||||
</ContentView>
|
||||
</StackLayout>
|
||||
</StackLayout>
|
||||
<ScrollView Grid.Row="1">
|
||||
<StackLayout Orientation="Vertical" Padding="16,40,16,40" Spacing="10">
|
||||
<Label FontSize="22">
|
||||
<Label.FormattedText>
|
||||
<FormattedString>
|
||||
<FormattedString.Spans>
|
||||
<Span Text="AppName" FontAttributes="Bold" FontSize="22" />
|
||||
<Span Text=" " />
|
||||
<Span Text="1.0" ForegroundColor="{StaticResource LightTextColor}" />
|
||||
</FormattedString.Spans>
|
||||
</FormattedString>
|
||||
</Label.FormattedText>
|
||||
</Label>
|
||||
<Label>
|
||||
<Label.FormattedText>
|
||||
<FormattedString>
|
||||
<FormattedString.Spans>
|
||||
<Span Text="This app is written in C# and native APIs using the" />
|
||||
<Span Text=" " />
|
||||
<Span Text="Xamarin Platform" FontAttributes="Bold" />
|
||||
<Span Text="." />
|
||||
</FormattedString.Spans>
|
||||
</FormattedString>
|
||||
</Label.FormattedText>
|
||||
</Label>
|
||||
<Label>
|
||||
<Label.FormattedText>
|
||||
<FormattedString>
|
||||
<FormattedString.Spans>
|
||||
<Span Text="It shares code with its" />
|
||||
<Span Text=" " />
|
||||
<Span Text="iOS, Android, and Windows" FontAttributes="Bold" />
|
||||
<Span Text=" " />
|
||||
<Span Text="versions." />
|
||||
</FormattedString.Spans>
|
||||
</FormattedString>
|
||||
</Label.FormattedText>
|
||||
</Label>
|
||||
<Button Margin="0,10,0,0" Text="Learn more"
|
||||
Command="{Binding OpenWebCommand}"
|
||||
BackgroundColor="{StaticResource Primary}"
|
||||
TextColor="White" />
|
||||
</StackLayout>
|
||||
</ScrollView>
|
||||
</Grid>
|
||||
|
||||
</ContentPage>
|
|
@ -1,18 +0,0 @@
|
|||
using System;
|
||||
using System.ComponentModel;
|
||||
using Xamarin.Forms;
|
||||
using Xamarin.Forms.Xaml;
|
||||
|
||||
namespace BuildXamarinFormsApp.Views
|
||||
{
|
||||
// Learn more about making custom code visible in the Xamarin.Forms previewer
|
||||
// by visiting https://aka.ms/xamarinforms-previewer
|
||||
[DesignTimeVisible(false)]
|
||||
public partial class AboutPage : ContentPage
|
||||
{
|
||||
public AboutPage()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,17 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
|
||||
xmlns:d="http://xamarin.com/schemas/2014/forms/design"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
mc:Ignorable="d"
|
||||
x:Class="BuildXamarinFormsApp.Views.ItemDetailPage"
|
||||
Title="{Binding Title}">
|
||||
|
||||
<StackLayout Spacing="20" Padding="15">
|
||||
<Label Text="Text:" FontSize="Medium" />
|
||||
<Label Text="{Binding Item.Text}" d:Text="Item name" FontSize="Small"/>
|
||||
<Label Text="Description:" FontSize="Medium" />
|
||||
<Label Text="{Binding Item.Description}" d:Text="Item description" FontSize="Small"/>
|
||||
</StackLayout>
|
||||
|
||||
</ContentPage>
|
|
@ -1,39 +0,0 @@
|
|||
using System;
|
||||
using System.ComponentModel;
|
||||
using Xamarin.Forms;
|
||||
using Xamarin.Forms.Xaml;
|
||||
|
||||
using BuildXamarinFormsApp.Models;
|
||||
using BuildXamarinFormsApp.ViewModels;
|
||||
|
||||
namespace BuildXamarinFormsApp.Views
|
||||
{
|
||||
// Learn more about making custom code visible in the Xamarin.Forms previewer
|
||||
// by visiting https://aka.ms/xamarinforms-previewer
|
||||
[DesignTimeVisible(false)]
|
||||
public partial class ItemDetailPage : ContentPage
|
||||
{
|
||||
ItemDetailViewModel viewModel;
|
||||
|
||||
public ItemDetailPage(ItemDetailViewModel viewModel)
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
BindingContext = this.viewModel = viewModel;
|
||||
}
|
||||
|
||||
public ItemDetailPage()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
var item = new Item
|
||||
{
|
||||
Text = "Item 1",
|
||||
Description = "This is an item description."
|
||||
};
|
||||
|
||||
viewModel = new ItemDetailViewModel(item);
|
||||
BindingContext = viewModel;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,49 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
|
||||
xmlns:d="http://xamarin.com/schemas/2014/forms/design"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
mc:Ignorable="d"
|
||||
x:Class="BuildXamarinFormsApp.Views.ItemsPage"
|
||||
Title="{Binding Title}"
|
||||
x:Name="BrowseItemsPage">
|
||||
|
||||
<ContentPage.ToolbarItems>
|
||||
<ToolbarItem Text="Add" Clicked="AddItem_Clicked" />
|
||||
</ContentPage.ToolbarItems>
|
||||
|
||||
<RefreshView IsRefreshing="{Binding IsBusy, Mode=TwoWay}" Command="{Binding LoadItemsCommand}">
|
||||
<CollectionView x:Name="ItemsCollectionView"
|
||||
ItemsSource="{Binding Items}">
|
||||
<d:CollectionView.ItemsSource>
|
||||
<x:Array Type="{x:Type x:String}">
|
||||
<x:String>First Item</x:String>
|
||||
<x:String>Second Item</x:String>
|
||||
<x:String>Third Item</x:String>
|
||||
<x:String>Fourth Item</x:String>
|
||||
<x:String>Fifth Item</x:String>
|
||||
<x:String>Sixth Item</x:String>
|
||||
</x:Array>
|
||||
</d:CollectionView.ItemsSource>
|
||||
<CollectionView.ItemTemplate>
|
||||
<DataTemplate>
|
||||
<StackLayout Padding="10">
|
||||
<Label Text="{Binding Text}"
|
||||
d:Text="{Binding .}"
|
||||
LineBreakMode="NoWrap"
|
||||
Style="{DynamicResource ListItemTextStyle}"
|
||||
FontSize="16" />
|
||||
<Label Text="{Binding Description}"
|
||||
d:Text="Item descripton"
|
||||
LineBreakMode="NoWrap"
|
||||
Style="{DynamicResource ListItemDetailTextStyle}"
|
||||
FontSize="13" />
|
||||
<StackLayout.GestureRecognizers>
|
||||
<TapGestureRecognizer NumberOfTapsRequired="1" Tapped="OnItemSelected"></TapGestureRecognizer>
|
||||
</StackLayout.GestureRecognizers>
|
||||
</StackLayout>
|
||||
</DataTemplate>
|
||||
</CollectionView.ItemTemplate>
|
||||
</CollectionView>
|
||||
</RefreshView>
|
||||
</ContentPage>
|
|
@ -1,50 +0,0 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Xamarin.Forms;
|
||||
using Xamarin.Forms.Xaml;
|
||||
|
||||
using BuildXamarinFormsApp.Models;
|
||||
using BuildXamarinFormsApp.Views;
|
||||
using BuildXamarinFormsApp.ViewModels;
|
||||
|
||||
namespace BuildXamarinFormsApp.Views
|
||||
{
|
||||
// Learn more about making custom code visible in the Xamarin.Forms previewer
|
||||
// by visiting https://aka.ms/xamarinforms-previewer
|
||||
[DesignTimeVisible(false)]
|
||||
public partial class ItemsPage : ContentPage
|
||||
{
|
||||
ItemsViewModel viewModel;
|
||||
|
||||
public ItemsPage()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
BindingContext = viewModel = new ItemsViewModel();
|
||||
}
|
||||
|
||||
async void OnItemSelected(object sender, EventArgs args)
|
||||
{
|
||||
var layout = (BindableObject)sender;
|
||||
var item = (Item)layout.BindingContext;
|
||||
await Navigation.PushAsync(new ItemDetailPage(new ItemDetailViewModel(item)));
|
||||
}
|
||||
|
||||
async void AddItem_Clicked(object sender, EventArgs e)
|
||||
{
|
||||
await Navigation.PushModalAsync(new NavigationPage(new NewItemPage()));
|
||||
}
|
||||
|
||||
protected override void OnAppearing()
|
||||
{
|
||||
base.OnAppearing();
|
||||
|
||||
if (viewModel.Items.Count == 0)
|
||||
viewModel.IsBusy = true;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,27 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<MasterDetailPage xmlns="http://xamarin.com/schemas/2014/forms"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
|
||||
xmlns:d="http://xamarin.com/schemas/2014/forms/design"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
mc:Ignorable="d"
|
||||
xmlns:views="clr-namespace:BuildXamarinFormsApp.Views"
|
||||
x:Class="BuildXamarinFormsApp.Views.MainPage">
|
||||
|
||||
<MasterDetailPage.Master>
|
||||
<views:MenuPage />
|
||||
</MasterDetailPage.Master>
|
||||
|
||||
<MasterDetailPage.Detail>
|
||||
<NavigationPage>
|
||||
<NavigationPage.Icon>
|
||||
<OnPlatform x:TypeArguments="FileImageSource">
|
||||
<On Platform="iOS" Value="tab_feed.png"/>
|
||||
</OnPlatform>
|
||||
</NavigationPage.Icon>
|
||||
<x:Arguments>
|
||||
<views:ItemsPage />
|
||||
</x:Arguments>
|
||||
</NavigationPage>
|
||||
</MasterDetailPage.Detail>
|
||||
|
||||
</MasterDetailPage>
|
|
@ -1,55 +0,0 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Threading.Tasks;
|
||||
using Xamarin.Forms;
|
||||
using Xamarin.Forms.Xaml;
|
||||
|
||||
using BuildXamarinFormsApp.Models;
|
||||
|
||||
namespace BuildXamarinFormsApp.Views
|
||||
{
|
||||
// Learn more about making custom code visible in the Xamarin.Forms previewer
|
||||
// by visiting https://aka.ms/xamarinforms-previewer
|
||||
[DesignTimeVisible(false)]
|
||||
public partial class MainPage : MasterDetailPage
|
||||
{
|
||||
Dictionary<int, NavigationPage> MenuPages = new Dictionary<int, NavigationPage>();
|
||||
public MainPage()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
MasterBehavior = MasterBehavior.Popover;
|
||||
|
||||
MenuPages.Add((int)MenuItemType.Browse, (NavigationPage)Detail);
|
||||
}
|
||||
|
||||
public async Task NavigateFromMenu(int id)
|
||||
{
|
||||
if (!MenuPages.ContainsKey(id))
|
||||
{
|
||||
switch (id)
|
||||
{
|
||||
case (int)MenuItemType.Browse:
|
||||
MenuPages.Add(id, new NavigationPage(new ItemsPage()));
|
||||
break;
|
||||
case (int)MenuItemType.About:
|
||||
MenuPages.Add(id, new NavigationPage(new AboutPage()));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
var newPage = MenuPages[id];
|
||||
|
||||
if (newPage != null && Detail != newPage)
|
||||
{
|
||||
Detail = newPage;
|
||||
|
||||
if (Device.RuntimePlatform == Device.Android)
|
||||
await Task.Delay(100);
|
||||
|
||||
IsPresented = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,31 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
|
||||
xmlns:d="http://xamarin.com/schemas/2014/forms/design"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
mc:Ignorable="d"
|
||||
x:Class="BuildXamarinFormsApp.Views.MenuPage"
|
||||
Title="Menu">
|
||||
|
||||
<StackLayout VerticalOptions="FillAndExpand">
|
||||
<ListView x:Name="ListViewMenu"
|
||||
HasUnevenRows="True">
|
||||
<d:ListView.ItemsSource>
|
||||
<x:Array Type="{x:Type x:String}">
|
||||
<x:String>Item 1</x:String>
|
||||
<x:String>Item 2</x:String>
|
||||
</x:Array>
|
||||
</d:ListView.ItemsSource>
|
||||
<ListView.ItemTemplate>
|
||||
<DataTemplate>
|
||||
<ViewCell>
|
||||
<Grid Padding="10">
|
||||
<Label Text="{Binding Title}" d:Text="{Binding .}" FontSize="20"/>
|
||||
</Grid>
|
||||
</ViewCell>
|
||||
</DataTemplate>
|
||||
</ListView.ItemTemplate>
|
||||
</ListView>
|
||||
</StackLayout>
|
||||
|
||||
</ContentPage>
|
|
@ -1,40 +0,0 @@
|
|||
using BuildXamarinFormsApp.Models;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using Xamarin.Forms;
|
||||
using Xamarin.Forms.Xaml;
|
||||
|
||||
namespace BuildXamarinFormsApp.Views
|
||||
{
|
||||
// Learn more about making custom code visible in the Xamarin.Forms previewer
|
||||
// by visiting https://aka.ms/xamarinforms-previewer
|
||||
[DesignTimeVisible(false)]
|
||||
public partial class MenuPage : ContentPage
|
||||
{
|
||||
MainPage RootPage { get => Application.Current.MainPage as MainPage; }
|
||||
List<HomeMenuItem> menuItems;
|
||||
public MenuPage()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
menuItems = new List<HomeMenuItem>
|
||||
{
|
||||
new HomeMenuItem {Id = MenuItemType.Browse, Title="Browse" },
|
||||
new HomeMenuItem {Id = MenuItemType.About, Title="About" }
|
||||
};
|
||||
|
||||
ListViewMenu.ItemsSource = menuItems;
|
||||
|
||||
ListViewMenu.SelectedItem = menuItems[0];
|
||||
ListViewMenu.ItemSelected += async (sender, e) =>
|
||||
{
|
||||
if (e.SelectedItem == null)
|
||||
return;
|
||||
|
||||
var id = (int)((HomeMenuItem)e.SelectedItem).Id;
|
||||
await RootPage.NavigateFromMenu(id);
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,24 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
|
||||
xmlns:d="http://xamarin.com/schemas/2014/forms/design"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
mc:Ignorable="d"
|
||||
x:Class="BuildXamarinFormsApp.Views.NewItemPage"
|
||||
Title="New Item">
|
||||
|
||||
<ContentPage.ToolbarItems>
|
||||
<ToolbarItem Text="Cancel" Clicked="Cancel_Clicked" />
|
||||
<ToolbarItem Text="Save" Clicked="Save_Clicked" />
|
||||
</ContentPage.ToolbarItems>
|
||||
|
||||
<ContentPage.Content>
|
||||
<StackLayout Spacing="20" Padding="15">
|
||||
<Label Text="Text" FontSize="Medium" />
|
||||
<Entry Text="{Binding Item.Text}" d:Text="Item name" FontSize="Small" />
|
||||
<Label Text="Description" FontSize="Medium" />
|
||||
<Editor Text="{Binding Item.Description}" d:Text="Item description" FontSize="Small" Margin="0" />
|
||||
</StackLayout>
|
||||
</ContentPage.Content>
|
||||
|
||||
</ContentPage>
|
|
@ -1,42 +0,0 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using Xamarin.Forms;
|
||||
using Xamarin.Forms.Xaml;
|
||||
|
||||
using BuildXamarinFormsApp.Models;
|
||||
|
||||
namespace BuildXamarinFormsApp.Views
|
||||
{
|
||||
// Learn more about making custom code visible in the Xamarin.Forms previewer
|
||||
// by visiting https://aka.ms/xamarinforms-previewer
|
||||
[DesignTimeVisible(false)]
|
||||
public partial class NewItemPage : ContentPage
|
||||
{
|
||||
public Item Item { get; set; }
|
||||
|
||||
public NewItemPage()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
Item = new Item
|
||||
{
|
||||
Text = "Item name",
|
||||
Description = "This is an item description."
|
||||
};
|
||||
|
||||
BindingContext = this;
|
||||
}
|
||||
|
||||
async void Save_Clicked(object sender, EventArgs e)
|
||||
{
|
||||
MessagingCenter.Send(this, "AddItem", Item);
|
||||
await Navigation.PopModalAsync();
|
||||
}
|
||||
|
||||
async void Cancel_Clicked(object sender, EventArgs e)
|
||||
{
|
||||
await Navigation.PopModalAsync();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,7 +1,7 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net8.0-android</TargetFramework>
|
||||
<TargetFrameworks>net8.0-android</TargetFrameworks>
|
||||
|
||||
<!-- Some packages specify a minimum of 28 (eg: Xamarin.AndroidX.HeifWriter) -->
|
||||
<SupportedOSPlatformVersion>28</SupportedOSPlatformVersion>
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net8.0-android</TargetFramework>
|
||||
<TargetFrameworks>net8.0-android</TargetFrameworks>
|
||||
|
||||
<OutputType>Exe</OutputType>
|
||||
<RootNamespace>BuildAllMauiApp</RootNamespace>
|
||||
<UseMaui>true</UseMaui>
|
||||
|
|
|
@ -1,48 +0,0 @@
|
|||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio Version 16
|
||||
VisualStudioVersion = 16.0.30114.105
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BuildAllXamarinForms.XamarinAndroid", "BuildAllXamarinForms\BuildAllXamarinForms.XamarinAndroid\BuildAllXamarinForms.XamarinAndroid.csproj", "{FB3ACFB9-F1FB-4D2C-9417-88B6BF616BE9}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BuildAllXamarinForms", "BuildAllXamarinForms\BuildAllXamarinForms\BuildAllXamarinForms.csproj", "{68682700-D937-46C5-AC7D-57352521A46D}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Release|Any CPU = Release|Any CPU
|
||||
Debug|iPhoneSimulator = Debug|iPhoneSimulator
|
||||
Release|iPhoneSimulator = Release|iPhoneSimulator
|
||||
Debug|iPhone = Debug|iPhone
|
||||
Release|iPhone = Release|iPhone
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{FB3ACFB9-F1FB-4D2C-9417-88B6BF616BE9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{FB3ACFB9-F1FB-4D2C-9417-88B6BF616BE9}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{FB3ACFB9-F1FB-4D2C-9417-88B6BF616BE9}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{FB3ACFB9-F1FB-4D2C-9417-88B6BF616BE9}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{FB3ACFB9-F1FB-4D2C-9417-88B6BF616BE9}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{FB3ACFB9-F1FB-4D2C-9417-88B6BF616BE9}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{FB3ACFB9-F1FB-4D2C-9417-88B6BF616BE9}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{FB3ACFB9-F1FB-4D2C-9417-88B6BF616BE9}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{FB3ACFB9-F1FB-4D2C-9417-88B6BF616BE9}.Debug|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{FB3ACFB9-F1FB-4D2C-9417-88B6BF616BE9}.Debug|iPhone.Build.0 = Debug|Any CPU
|
||||
{FB3ACFB9-F1FB-4D2C-9417-88B6BF616BE9}.Release|iPhone.ActiveCfg = Release|Any CPU
|
||||
{FB3ACFB9-F1FB-4D2C-9417-88B6BF616BE9}.Release|iPhone.Build.0 = Release|Any CPU
|
||||
{68682700-D937-46C5-AC7D-57352521A46D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{68682700-D937-46C5-AC7D-57352521A46D}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{68682700-D937-46C5-AC7D-57352521A46D}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{68682700-D937-46C5-AC7D-57352521A46D}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{68682700-D937-46C5-AC7D-57352521A46D}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
|
||||
{68682700-D937-46C5-AC7D-57352521A46D}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
|
||||
{68682700-D937-46C5-AC7D-57352521A46D}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
|
||||
{68682700-D937-46C5-AC7D-57352521A46D}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
|
||||
{68682700-D937-46C5-AC7D-57352521A46D}.Debug|iPhone.ActiveCfg = Debug|Any CPU
|
||||
{68682700-D937-46C5-AC7D-57352521A46D}.Debug|iPhone.Build.0 = Debug|Any CPU
|
||||
{68682700-D937-46C5-AC7D-57352521A46D}.Release|iPhone.ActiveCfg = Release|Any CPU
|
||||
{68682700-D937-46C5-AC7D-57352521A46D}.Release|iPhone.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
EndGlobal
|
|
@ -1,20 +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 your package and will be accessible using Android's
|
||||
AssetManager, like this:
|
||||
|
||||
public class ReadAsset : Activity
|
||||
{
|
||||
protected override void OnCreate (Bundle bundle)
|
||||
{
|
||||
base.OnCreate (bundle);
|
||||
|
||||
InputStream input = Assets.Open ("my_asset.txt");
|
||||
}
|
||||
}
|
||||
|
||||
Additionally, some Android functions will automatically load asset files:
|
||||
|
||||
Typeface tf = Typeface.CreateFromAsset (Context.Assets, "fonts/samplefont.ttf");
|
||||
|
|
@ -1,30 +0,0 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net8.0-android</TargetFramework>
|
||||
<!--
|
||||
<TargetFramework>net8.0-android34</TargetFramework>
|
||||
-->
|
||||
<OutputType>Exe</OutputType>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup
|
||||
Condition="$(TargetFramework.EndsWith('-android')) == true"
|
||||
>
|
||||
<JavaMaximumHeapSize>2G</JavaMaximumHeapSize>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Xamarin.Forms" Version="5.0.0.2612" />
|
||||
<PackageReference Include="Xamarin.Essentials" Version="1.8.0" />
|
||||
<PackageReference Include="Xamarin.Google.Guava.ListenableFuture" Version="1.0.0.16" />
|
||||
<PackageReference Include="Xamarin.AndroidX.Browser" Version="1.6.0.2" />
|
||||
</ItemGroup>
|
||||
|
||||
<PropertyGroup>
|
||||
<JavaMaximumHeapSize>1G</JavaMaximumHeapSize>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\BuildAllXamarinForms\BuildAllXamarinForms.csproj" />
|
||||
</ItemGroup>
|
||||
</Project>
|
|
@ -1,28 +0,0 @@
|
|||
using System;
|
||||
|
||||
using Android.App;
|
||||
using Android.Content.PM;
|
||||
using Android.Runtime;
|
||||
using Android.OS;
|
||||
|
||||
namespace BuildAllXamarinForms.Droid
|
||||
{
|
||||
[Activity(Label = "BuildAllXamarinForms", Icon = "@mipmap/icon", Theme = "@style/MainTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation | ConfigChanges.UiMode | ConfigChanges.ScreenLayout | ConfigChanges.SmallestScreenSize )]
|
||||
public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
|
||||
{
|
||||
protected override void OnCreate(Bundle savedInstanceState)
|
||||
{
|
||||
base.OnCreate(savedInstanceState);
|
||||
|
||||
Xamarin.Essentials.Platform.Init(this, savedInstanceState);
|
||||
global::Xamarin.Forms.Forms.Init(this, savedInstanceState);
|
||||
LoadApplication(new App());
|
||||
}
|
||||
public override void OnRequestPermissionsResult(int requestCode, string[] permissions, [GeneratedEnum] Android.Content.PM.Permission[] grantResults)
|
||||
{
|
||||
Xamarin.Essentials.Platform.OnRequestPermissionsResult(requestCode, permissions, grantResults);
|
||||
|
||||
base.OnRequestPermissionsResult(requestCode, permissions, grantResults);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,6 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="1" android:versionName="1.0" package="com.companyname.buildallxamarinforms">
|
||||
<uses-sdk android:minSdkVersion="21" android:targetSdkVersion="31" />
|
||||
<application android:label="BuildAllXamarinForms.Android" android:theme="@style/MainTheme" android:largeHeap="true"></application>
|
||||
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
|
||||
</manifest>
|
|
@ -1,31 +0,0 @@
|
|||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
using Android.App;
|
||||
|
||||
// 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("BuildAllXamarinForms.Android")]
|
||||
//[assembly: AssemblyDescription("")]
|
||||
//[assembly: AssemblyConfiguration("")]
|
||||
//[assembly: AssemblyCompany("")]
|
||||
//[assembly: AssemblyProduct("BuildAllXamarinForms.Android")]
|
||||
//[assembly: AssemblyCopyright("Copyright © 2014")]
|
||||
//[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
|
||||
//[assembly: AssemblyVersion("1.0.0.0")]
|
||||
//[assembly: AssemblyFileVersion("1.0.0.0")]
|
||||
|
||||
// Add some common permissions, these can be removed if not needed
|
||||
[assembly: UsesPermission(Android.Manifest.Permission.Internet)]
|
||||
[assembly: UsesPermission(Android.Manifest.Permission.WriteExternalStorage)]
|
||||
|
|
@ -1,51 +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.xml),
|
||||
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-hdpi/
|
||||
icon.png
|
||||
|
||||
drawable-ldpi/
|
||||
icon.png
|
||||
|
||||
drawable-mdpi/
|
||||
icon.png
|
||||
|
||||
layout/
|
||||
main.xml
|
||||
|
||||
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
|
||||
"Resource" that contains the tokens for each one of the resources included. For example,
|
||||
for the above Resources layout, this is what the Resource class would expose:
|
||||
|
||||
public class Resource {
|
||||
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 Resource.layout.main
|
||||
to reference the layout/main.xml file, or Resource.strings.first_string to reference the first
|
||||
string in the dictionary file values/strings.xml.
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<background android:drawable="@color/launcher_background" />
|
||||
<foreground android:drawable="@mipmap/launcher_foreground" />
|
||||
</adaptive-icon>
|
|
@ -1,5 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<background android:drawable="@color/launcher_background" />
|
||||
<foreground android:drawable="@mipmap/launcher_foreground" />
|
||||
</adaptive-icon>
|
До Ширина: | Высота: | Размер: 4.6 KiB |
До Ширина: | Высота: | Размер: 11 KiB |
До Ширина: | Высота: | Размер: 2.7 KiB |
До Ширина: | Высота: | Размер: 6.3 KiB |
До Ширина: | Высота: | Размер: 6.9 KiB |
До Ширина: | Высота: | Размер: 18 KiB |
До Ширина: | Высота: | Размер: 12 KiB |
До Ширина: | Высота: | Размер: 33 KiB |
До Ширина: | Высота: | Размер: 19 KiB |
До Ширина: | Высота: | Размер: 51 KiB |
|
@ -1,8 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<color name="launcher_background">#FFFFFF</color>
|
||||
<color name="colorPrimary">#3F51B5</color>
|
||||
<color name="colorPrimaryDark">#303F9F</color>
|
||||
<color name="colorAccent">#FF4081</color>
|
||||
</resources>
|
||||
|
|
@ -1,18 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<resources>
|
||||
|
||||
<style name="MainTheme" parent="MainTheme.Base">
|
||||
<!-- As of Xamarin.Forms 4.6 the theme has moved into the Forms binary -->
|
||||
<!-- If you want to override anything you can do that here. -->
|
||||
<!-- Underneath are a couple of entries to get you started. -->
|
||||
|
||||
<!-- Set theme colors from https://aka.ms/material-colors -->
|
||||
<!-- colorPrimary is used for the default action bar background -->
|
||||
<!--<item name="colorPrimary">#2196F3</item>-->
|
||||
<!-- colorPrimaryDark is used for the status bar -->
|
||||
<!--<item name="colorPrimaryDark">#1976D2</item>-->
|
||||
<!-- colorAccent is used as the default value for colorControlActivated
|
||||
which is used to tint widgets -->
|
||||
<!--<item name="colorAccent">#FF4081</item>-->
|
||||
</style>
|
||||
</resources>
|
|
@ -1,32 +0,0 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
using Foundation;
|
||||
using UIKit;
|
||||
|
||||
namespace BuildAllXamarinForms.iOS
|
||||
{
|
||||
// The UIApplicationDelegate for the application. This class is responsible for launching the
|
||||
// User Interface of the application, as well as listening (and optionally responding) to
|
||||
// application events from iOS.
|
||||
[Register("AppDelegate")]
|
||||
public partial class AppDelegate : global::Xamarin.Forms.Platform.iOS.FormsApplicationDelegate
|
||||
{
|
||||
//
|
||||
// This method is invoked when the application has loaded and is ready to run. In this
|
||||
// method you should instantiate the window, load the UI into it and then make the window
|
||||
// visible.
|
||||
//
|
||||
// You have 17 seconds to return from this method, or iOS will terminate your application.
|
||||
//
|
||||
public override bool FinishedLaunching(UIApplication app, NSDictionary options)
|
||||
{
|
||||
global::Xamarin.Forms.Forms.Init();
|
||||
LoadApplication(new App());
|
||||
|
||||
return base.FinishedLaunching(app, options);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,117 +0,0 @@
|
|||
{
|
||||
"images": [
|
||||
{
|
||||
"scale": "2x",
|
||||
"size": "20x20",
|
||||
"idiom": "iphone",
|
||||
"filename": "Icon40.png"
|
||||
},
|
||||
{
|
||||
"scale": "3x",
|
||||
"size": "20x20",
|
||||
"idiom": "iphone",
|
||||
"filename": "Icon60.png"
|
||||
},
|
||||
{
|
||||
"scale": "2x",
|
||||
"size": "29x29",
|
||||
"idiom": "iphone",
|
||||
"filename": "Icon58.png"
|
||||
},
|
||||
{
|
||||
"scale": "3x",
|
||||
"size": "29x29",
|
||||
"idiom": "iphone",
|
||||
"filename": "Icon87.png"
|
||||
},
|
||||
{
|
||||
"scale": "2x",
|
||||
"size": "40x40",
|
||||
"idiom": "iphone",
|
||||
"filename": "Icon80.png"
|
||||
},
|
||||
{
|
||||
"scale": "3x",
|
||||
"size": "40x40",
|
||||
"idiom": "iphone",
|
||||
"filename": "Icon120.png"
|
||||
},
|
||||
{
|
||||
"scale": "2x",
|
||||
"size": "60x60",
|
||||
"idiom": "iphone",
|
||||
"filename": "Icon120.png"
|
||||
},
|
||||
{
|
||||
"scale": "3x",
|
||||
"size": "60x60",
|
||||
"idiom": "iphone",
|
||||
"filename": "Icon180.png"
|
||||
},
|
||||
{
|
||||
"scale": "1x",
|
||||
"size": "20x20",
|
||||
"idiom": "ipad",
|
||||
"filename": "Icon20.png"
|
||||
},
|
||||
{
|
||||
"scale": "2x",
|
||||
"size": "20x20",
|
||||
"idiom": "ipad",
|
||||
"filename": "Icon40.png"
|
||||
},
|
||||
{
|
||||
"scale": "1x",
|
||||
"size": "29x29",
|
||||
"idiom": "ipad",
|
||||
"filename": "Icon29.png"
|
||||
},
|
||||
{
|
||||
"scale": "2x",
|
||||
"size": "29x29",
|
||||
"idiom": "ipad",
|
||||
"filename": "Icon58.png"
|
||||
},
|
||||
{
|
||||
"scale": "1x",
|
||||
"size": "40x40",
|
||||
"idiom": "ipad",
|
||||
"filename": "Icon40.png"
|
||||
},
|
||||
{
|
||||
"scale": "2x",
|
||||
"size": "40x40",
|
||||
"idiom": "ipad",
|
||||
"filename": "Icon80.png"
|
||||
},
|
||||
{
|
||||
"scale": "1x",
|
||||
"size": "76x76",
|
||||
"idiom": "ipad",
|
||||
"filename": "Icon76.png"
|
||||
},
|
||||
{
|
||||
"scale": "2x",
|
||||
"size": "76x76",
|
||||
"idiom": "ipad",
|
||||
"filename": "Icon152.png"
|
||||
},
|
||||
{
|
||||
"scale": "2x",
|
||||
"size": "83.5x83.5",
|
||||
"idiom": "ipad",
|
||||
"filename": "Icon167.png"
|
||||
},
|
||||
{
|
||||
"scale": "1x",
|
||||
"size": "1024x1024",
|
||||
"idiom": "ios-marketing",
|
||||
"filename": "Icon1024.png"
|
||||
}
|
||||
],
|
||||
"properties": {},
|
||||
"info": {
|
||||
"version": 1,
|
||||
"author": "xcode"
|
||||
}
|
||||
}
|
До Ширина: | Высота: | Размер: 69 KiB |
До Ширина: | Высота: | Размер: 3.7 KiB |
До Ширина: | Высота: | Размер: 4.6 KiB |
До Ширина: | Высота: | Размер: 4.6 KiB |
До Ширина: | Высота: | Размер: 5.1 KiB |
До Ширина: | Высота: | Размер: 1.3 KiB |
До Ширина: | Высота: | Размер: 845 B |
До Ширина: | Высота: | Размер: 1.1 KiB |
До Ширина: | Высота: | Размер: 1.7 KiB |
До Ширина: | Высота: | Размер: 2.5 KiB |
До Ширина: | Высота: | Размер: 2.3 KiB |
До Ширина: | Высота: | Размер: 2.4 KiB |
До Ширина: | Высота: | Размер: 2.7 KiB |
|
@ -1,35 +0,0 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net8.0-ios</TargetFramework>
|
||||
<OutputType>Exe</OutputType>
|
||||
<Nullable>enable</Nullable>
|
||||
<ImplicitUsings>true</ImplicitUsings>
|
||||
<SupportedOSPlatformVersion>13.0</SupportedOSPlatformVersion>
|
||||
<RuntimeIdentifier>iossimulator-x64</RuntimeIdentifier>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<None Remove="Properties\" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Folder Include="Properties\" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Xamarin.Forms" Version="5.0.0.2612" />
|
||||
<PackageReference Include="Xamarin.Essentials" Version="1.8.0" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\BuildAllXamarinForms\BuildAllXamarinForms.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<BundleResource Condition="'$(_ResourcePrefix)' != ''" Update="Resources\Default-568h%402x.png">
|
||||
<Link>Resources\Default-568h%402x.png</Link>
|
||||
</BundleResource>
|
||||
<BundleResource Condition="'$(_ResourcePrefix)' != ''" Update="Resources\Default-Portrait%402x.png">
|
||||
<Link>Resources\Default-Portrait%402x.png</Link>
|
||||
</BundleResource>
|
||||
<BundleResource Condition="'$(_ResourcePrefix)' != ''" Update="Resources\Default%402x.png">
|
||||
<Link>Resources\Default%402x.png</Link>
|
||||
</BundleResource>
|
||||
</ItemGroup>
|
||||
</Project>
|
|
@ -1,7 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
</dict>
|
||||
</plist>
|
||||
|
|
@ -1,38 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>UIDeviceFamily</key>
|
||||
<array>
|
||||
<integer>1</integer>
|
||||
<integer>2</integer>
|
||||
</array>
|
||||
<key>UISupportedInterfaceOrientations</key>
|
||||
<array>
|
||||
<string>UIInterfaceOrientationPortrait</string>
|
||||
<string>UIInterfaceOrientationLandscapeLeft</string>
|
||||
<string>UIInterfaceOrientationLandscapeRight</string>
|
||||
</array>
|
||||
<key>UISupportedInterfaceOrientations~ipad</key>
|
||||
<array>
|
||||
<string>UIInterfaceOrientationPortrait</string>
|
||||
<string>UIInterfaceOrientationPortraitUpsideDown</string>
|
||||
<string>UIInterfaceOrientationLandscapeLeft</string>
|
||||
<string>UIInterfaceOrientationLandscapeRight</string>
|
||||
</array>
|
||||
<key>MinimumOSVersion</key>
|
||||
<string>13.0</string>
|
||||
<key>CFBundleDisplayName</key>
|
||||
<string>BuildAllXamarinForms</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>com.companyname.BuildAllXamarinForms</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1.0</string>
|
||||
<key>UILaunchStoryboardName</key>
|
||||
<string>LaunchScreen</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>BuildAllXamarinForms</string>
|
||||
<key>XSAppIconAssets</key>
|
||||
<string>Assets.xcassets/AppIcon.appiconset</string>
|
||||
</dict>
|
||||
</plist>
|
|
@ -1,21 +0,0 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
using Foundation;
|
||||
using UIKit;
|
||||
|
||||
namespace BuildAllXamarinForms.iOS
|
||||
{
|
||||
public 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, typeof(AppDelegate));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
До Ширина: | Высота: | Размер: 8.7 KiB |
До Ширина: | Высота: | Размер: 10 KiB |
До Ширина: | Высота: | Размер: 34 KiB |
До Ширина: | Высота: | Размер: 7.1 KiB |
До Ширина: | Высота: | Размер: 8.2 KiB |
|
@ -1,40 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="13142" systemVersion="13F34" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="X5k-f2-b5h">
|
||||
<dependencies>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="12042"/>
|
||||
</dependencies>
|
||||
<scenes>
|
||||
<!--View Controller-->
|
||||
<scene sceneID="gAE-YM-kbH">
|
||||
<objects>
|
||||
<viewController id="X5k-f2-b5h" sceneMemberID="viewController">
|
||||
<layoutGuides>
|
||||
<viewControllerLayoutGuide type="top" id="Y8P-hJ-Z43"/>
|
||||
<viewControllerLayoutGuide type="bottom" id="9ZL-r4-8FZ"/>
|
||||
</layoutGuides>
|
||||
<view key="view" contentMode="scaleToFill" id="yd7-JS-zBw">
|
||||
<rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" misplaced="YES" image="Icon-60.png" translatesAutoresizingMaskIntoConstraints="NO" id="23">
|
||||
<rect key="frame" x="270" y="270" width="60" height="60"/>
|
||||
<rect key="contentStretch" x="0.0" y="0.0" width="0.0" height="0.0"/>
|
||||
</imageView>
|
||||
</subviews>
|
||||
<color key="backgroundColor" red="0.20392156862745098" green="0.59607843137254901" blue="0.85882352941176465" alpha="1" colorSpace="calibratedRGB"/>
|
||||
<constraints>
|
||||
<constraint firstItem="23" firstAttribute="centerY" secondItem="yd7-JS-zBw" secondAttribute="centerY" priority="1" id="39"/>
|
||||
<constraint firstItem="23" firstAttribute="centerX" secondItem="yd7-JS-zBw" secondAttribute="centerX" priority="1" id="41"/>
|
||||
</constraints>
|
||||
</view>
|
||||
</viewController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="XAI-xm-WK6" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="349" y="339"/>
|
||||
</scene>
|
||||
</scenes>
|
||||
<resources>
|
||||
<image name="Icon-60.png" width="180" height="180"/>
|
||||
</resources>
|
||||
</document>
|
||||
|
|
@ -1,8 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<Application xmlns="http://xamarin.com/schemas/2014/forms"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
|
||||
x:Class="BuildAllXamarinForms.App">
|
||||
<Application.Resources>
|
||||
|
||||
</Application.Resources>
|
||||
</Application>
|
|
@ -1,29 +0,0 @@
|
|||
using System;
|
||||
using Xamarin.Forms;
|
||||
using Xamarin.Forms.Xaml;
|
||||
|
||||
namespace BuildAllXamarinForms
|
||||
{
|
||||
public partial class App : Application
|
||||
{
|
||||
public App ()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
MainPage = new MainPage();
|
||||
}
|
||||
|
||||
protected override void OnStart ()
|
||||
{
|
||||
}
|
||||
|
||||
protected override void OnSleep ()
|
||||
{
|
||||
}
|
||||
|
||||
protected override void OnResume ()
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
using Xamarin.Forms.Xaml;
|
||||
|
||||
[assembly: XamlCompilation(XamlCompilationOptions.Compile)]
|
|
@ -1,26 +0,0 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>netstandard2.0</TargetFramework>
|
||||
<ProduceReferenceAssembly>true</ProduceReferenceAssembly>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
||||
<DebugType>portable</DebugType>
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<LangVersion>8.0</LangVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<LangVersion>8.0</LangVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup>
|
||||
<JavaMaximumHeapSize>1G</JavaMaximumHeapSize>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Xamarin.Forms" Version="5.0.0.2612" />
|
||||
<PackageReference Include="Xamarin.Essentials" Version="1.8.0" />
|
||||
</ItemGroup>
|
||||
</Project>
|
|
@ -1,25 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
|
||||
x:Class="BuildAllXamarinForms.MainPage">
|
||||
|
||||
<StackLayout>
|
||||
<Frame BackgroundColor="#2196F3" Padding="24" CornerRadius="0">
|
||||
<Label Text="Welcome to Xamarin.Forms!" HorizontalTextAlignment="Center" TextColor="White" FontSize="36"/>
|
||||
</Frame>
|
||||
<Label Text="Start developing now" FontSize="Title" Padding="30,10,30,10"/>
|
||||
<Label Text="Make changes to your XAML file and save to see your UI update in the running app with XAML Hot Reload. Give it a try!" FontSize="16" Padding="30,0,30,0"/>
|
||||
<Label FontSize="16" Padding="30,24,30,0">
|
||||
<Label.FormattedText>
|
||||
<FormattedString>
|
||||
<FormattedString.Spans>
|
||||
<Span Text="Learn more at "/>
|
||||
<Span Text="https://aka.ms/xamarin-quickstart" FontAttributes="Bold"/>
|
||||
</FormattedString.Spans>
|
||||
</FormattedString>
|
||||
</Label.FormattedText>
|
||||
</Label>
|
||||
</StackLayout>
|
||||
|
||||
</ContentPage>
|
||||
|
|
@ -1,19 +0,0 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Xamarin.Forms;
|
||||
|
||||
namespace BuildAllXamarinForms
|
||||
{
|
||||
public partial class MainPage : ContentPage
|
||||
{
|
||||
public MainPage()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
@using System
|
||||
@using System.Linq
|
||||
<Project Sdk="Xamarin.Legacy.Sdk">
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<TargetFrameworks>$(_DefaultTargetFrameworks)</TargetFrameworks>
|
||||
<IsBindingProject>true</IsBindingProject>
|
||||
|
|