* MVP SingleProject support for all supported platforms * Convert MobileSandbox to be a single project * WASM fixes * Fix SDK CI version * Use .NET 8 in build project as well * Add EnableUnsafeBinaryFormatterSerialization * Add macos workload, remove wasm-experimental * And ios * Specify TFM for single-project projects in dirs.proj * Return deleted line * Set PrivateAssets=all on MobileSandbox * Add ios target only on non-linux in MobileSandbox * Update after merges * Update browser sub-project from the templates * Don't build MobileSandbox on CI * Couple of improvements * Add android hack to run without manifest * Add tvOS support and rearrange some properties * Delete unusable Packages.targets file + related * Add global Condition for AvaloniaSingleProject.targetspull/15112/head
@ -0,0 +1,19 @@ |
|||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> |
|||
<Import Project="$(MSBuildThisFileDirectory)\..\packages\Avalonia\AvaloniaSingleProject.targets"/> |
|||
|
|||
<ItemGroup Condition=" '$(AvaloniaSingleProject)' == 'true' "> |
|||
<ProjectReference Include="$(MSBuildThisFileDirectory)\..\src\Skia\Avalonia.Skia\Avalonia.Skia.csproj" /> |
|||
<ProjectReference Include="$(MSBuildThisFileDirectory)\..\src\Windows\Avalonia.Win32\Avalonia.Win32.csproj" Condition="'$(_AvaloniaWindowsTarget)' == 'true'" /> |
|||
<ProjectReference Include="$(MSBuildThisFileDirectory)\..\src\Avalonia.Native\Avalonia.Native.csproj" Condition="'$(_AvaloniaMacOSTarget)' == 'true'" /> |
|||
<ProjectReference Include="$(MSBuildThisFileDirectory)\..\src\Avalonia.X11\Avalonia.X11.csproj" Condition="'$(_AvaloniaLinuxTarget)' == 'true'" /> |
|||
<ProjectReference Include="$(MSBuildThisFileDirectory)\..\src\Android\Avalonia.Android\Avalonia.Android.csproj" Condition="'$(_AvaloniaAndroidTarget)' == 'true'" /> |
|||
<ProjectReference Include="$(MSBuildThisFileDirectory)\..\src\iOS\Avalonia.iOS\Avalonia.iOS.csproj" Condition="'$(_AvaloniaIOSTarget)' == 'true'" /> |
|||
<ProjectReference Include="$(MSBuildThisFileDirectory)\..\src\Browser\Avalonia.Browser\Avalonia.Browser.csproj" Condition="'$(_AvaloniaBrowserTarget)' == 'true'" /> |
|||
<ProjectReference Include="$(MSBuildThisFileDirectory)\..\src\Tizen\Avalonia.Tizen\Avalonia.Tizen.csproj" Condition="'$(_AvaloniaTizenTarget)' == 'true'" /> |
|||
<ProjectReference Include="$(MSBuildThisFileDirectory)\..\src\Tizen\Avalonia.Tizen\Avalonia.Tizen.csproj" Condition="'$(_AvaloniaTizenTarget)' == 'true'" /> |
|||
<ProjectReference Include="$(MSBuildThisFileDirectory)\..\src\Avalonia.Desktop\Avalonia.Desktop.csproj" Condition="'$(_AvaloniaDesktopTarget)' == 'true'" /> |
|||
</ItemGroup> |
|||
|
|||
<Import Project="$(MSBuildThisFileDirectory)\..\src\Browser\Avalonia.Browser\build\Avalonia.Browser.props" Condition="'$(_AvaloniaBrowserTarget)' == 'true'" /> |
|||
<Import Project="$(MSBuildThisFileDirectory)\..\src\Browser\Avalonia.Browser\build\Avalonia.Browser.targets" Condition="'$(_AvaloniaBrowserTarget)' == 'true'" /> |
|||
</Project> |
|||
@ -1,4 +1,5 @@ |
|||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> |
|||
<Import Project="$(MSBuildThisFileDirectory)\AvaloniaBuildTasks.targets"/> |
|||
<Import Project="$(MSBuildThisFileDirectory)\AvaloniaPrivateApis.targets" /> |
|||
<Import Project="$(MSBuildThisFileDirectory)\AvaloniaSingleProject.targets" Condition="'$(AvaloniaSingleProject)' == 'true'"/> |
|||
</Project> |
|||
|
|||
@ -0,0 +1,277 @@ |
|||
<Project> |
|||
|
|||
<PropertyGroup> |
|||
<!-- For projects that want to treat "netx.0-windows" as a "netx.0" --> |
|||
<AvaloniaSingleProjectTreatWindowsAsShared Condition="'$(AvaloniaSingleProjectTreatWindowsAsShared)' == ''">false</AvaloniaSingleProjectTreatWindowsAsShared> |
|||
<!-- "net8.0" target without specific platform should be treated as a desktop target by default for executable projects. --> |
|||
<AvaloniaSingleProjectTreatSharedAsDesktop Condition="'$(AvaloniaSingleProjectTreatSharedAsDesktop)' == '' AND ('$(OutputType)' == 'Exe' OR '$(OutputType)' == 'WinExe')">true</AvaloniaSingleProjectTreatSharedAsDesktop> |
|||
</PropertyGroup> |
|||
|
|||
<!-- Include targets into AvaloniaSingleProjectTargets --> |
|||
<PropertyGroup Condition="'$(AvaloniaSingleProject)' == 'true'"> |
|||
<_AvaloniaWindowsTarget Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'windows'">true</_AvaloniaWindowsTarget> |
|||
<_AvaloniaMacOSTarget Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'macos'">true</_AvaloniaMacOSTarget> |
|||
<_AvaloniaAndroidTarget Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'android'">true</_AvaloniaAndroidTarget> |
|||
<_AvaloniaIOSTarget Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'ios'">true</_AvaloniaIOSTarget> |
|||
<_AvaloniaTvOSTarget Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'tvos'">true</_AvaloniaTvOSTarget> |
|||
<_AvaloniaBrowserTarget Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'browser'">true</_AvaloniaBrowserTarget> |
|||
<_AvaloniaTizenTarget Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'tizen'">true</_AvaloniaTizenTarget> |
|||
<!-- This target isn't yet supported by .NET --> |
|||
<_AvaloniaLinuxTarget Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'linux'" >true</_AvaloniaLinuxTarget> |
|||
</PropertyGroup> |
|||
|
|||
<!-- See AvaloniaSingleProjectTreatWindowsAsShared and AvaloniaSingleProjectTreatSharedAsDesktop props comments --> |
|||
<PropertyGroup Condition="'$(AvaloniaSingleProject)' == 'true' |
|||
AND (('$(AvaloniaSingleProjectTreatSharedAsDesktop)' == 'true' AND $([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == '') |
|||
OR ('$(AvaloniaSingleProjectTreatWindowsAsShared)' == 'true' AND $([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'windows'))"> |
|||
<_AvaloniaDesktopTarget>true</_AvaloniaDesktopTarget> |
|||
<_AvaloniaWindowsTarget>true</_AvaloniaWindowsTarget> |
|||
<_AvaloniaMacOSTarget>true</_AvaloniaMacOSTarget> |
|||
<_AvaloniaLinuxTarget>true</_AvaloniaLinuxTarget> |
|||
</PropertyGroup> |
|||
|
|||
<PropertyGroup Condition=" '$(_AvaloniaWindowsTarget)' == 'true' "> |
|||
<OutputType Condition="'$(OutputType)' == 'Exe'">WinExe</OutputType> |
|||
<BuiltInComInteropSupport>true</BuiltInComInteropSupport> |
|||
<EnableWindowsTargeting>true</EnableWindowsTargeting> |
|||
</PropertyGroup> |
|||
|
|||
<PropertyGroup Condition=" '$(_AvaloniaBrowserTarget)' == 'true' "> |
|||
<RuntimeIdentifier Condition="'$(RuntimeIdentifier)' == ''">browser-wasm</RuntimeIdentifier> |
|||
</PropertyGroup> |
|||
|
|||
<PropertyGroup Condition=" '$(AvaloniaSingleProject)' == 'true' "> |
|||
<PlatformsProjectFolder Condition=" '$(PlatformsProjectFolder)' == '' ">Platforms\</PlatformsProjectFolder> |
|||
<PlatformsProjectFolder>$([MSBuild]::EnsureTrailingSlash('$(PlatformsProjectFolder)'))</PlatformsProjectFolder> |
|||
<!-- Required - Enable Launch Profiles for .NET 6 iOS/Android --> |
|||
<_KeepLaunchProfiles>true</_KeepLaunchProfiles> |
|||
<!-- Android --> |
|||
<EnableDefaultAndroidItems>false</EnableDefaultAndroidItems> |
|||
<AndroidProjectFolder Condition=" '$(AndroidProjectFolder)' == '' ">$(PlatformsProjectFolder)Android\</AndroidProjectFolder> |
|||
<AndroidProjectFolder>$([MSBuild]::EnsureTrailingSlash('$(AndroidProjectFolder)'))</AndroidProjectFolder> |
|||
<!-- iOS/tvOS --> |
|||
<EnableDefaultiOSItems>false</EnableDefaultiOSItems> |
|||
<EnableDefaulttvOSItems>false</EnableDefaulttvOSItems> |
|||
<iOSProjectFolder Condition=" '$(iOSProjectFolder)' == '' AND '$(_AvaloniaIOSTarget)' == 'true'">$(PlatformsProjectFolder)iOS\</iOSProjectFolder> |
|||
<iOSProjectFolder Condition=" '$(iOSProjectFolder)' == '' AND '$(_AvaloniaTvOSTarget)' == 'true'">$(PlatformsProjectFolder)tvOS\</iOSProjectFolder> |
|||
<iOSProjectFolder>$([MSBuild]::EnsureTrailingSlash('$(iOSProjectFolder)'))</iOSProjectFolder> |
|||
<!-- MacCatalyst --> |
|||
<EnableDefaultMacCatalystItems>false</EnableDefaultMacCatalystItems> |
|||
<MacCatalystProjectFolder Condition=" '$(MacCatalystProjectFolder)' == '' ">$(PlatformsProjectFolder)MacCatalyst\</MacCatalystProjectFolder> |
|||
<MacCatalystProjectFolder>$([MSBuild]::EnsureTrailingSlash('$(MacCatalystProjectFolder)'))</MacCatalystProjectFolder> |
|||
<!-- macOS --> |
|||
<EnableDefaultmacOSItems>false</EnableDefaultmacOSItems> |
|||
<macOSProjectFolder Condition=" '$(macOSProjectFolder)' == '' ">$(PlatformsProjectFolder)macOS\</macOSProjectFolder> |
|||
<macOSProjectFolder>$([MSBuild]::EnsureTrailingSlash('$(macOSProjectFolder)'))</macOSProjectFolder> |
|||
<!-- Windows --> |
|||
<EnableDefaultWindowsItems>false</EnableDefaultWindowsItems> |
|||
<WindowsProjectFolder Condition=" '$(WindowsProjectFolder)' == '' ">$(PlatformsProjectFolder)Windows\</WindowsProjectFolder> |
|||
<WindowsProjectFolder>$([MSBuild]::EnsureTrailingSlash('$(WindowsProjectFolder)'))</WindowsProjectFolder> |
|||
<!-- Linux --> |
|||
<LinuxProjectFolder Condition=" '$(LinuxProjectFolder)' == '' ">$(PlatformsProjectFolder)Linux\</LinuxProjectFolder> |
|||
<LinuxProjectFolder>$([MSBuild]::EnsureTrailingSlash('$(LinuxProjectFolder)'))</LinuxProjectFolder> |
|||
<!-- Browser --> |
|||
<BrowserProjectFolder Condition=" '$(BrowserProjectFolder)' == '' ">$(PlatformsProjectFolder)Browser\</BrowserProjectFolder> |
|||
<BrowserProjectFolder>$([MSBuild]::EnsureTrailingSlash('$(BrowserProjectFolder)'))</BrowserProjectFolder> |
|||
<!-- Tizen --> |
|||
<EnableDefaultTizenItems>false</EnableDefaultTizenItems> |
|||
<TizenProjectFolder Condition=" '$(TizenProjectFolder)' == '' ">$(PlatformsProjectFolder)Tizen\</TizenProjectFolder> |
|||
<TizenProjectFolder>$([MSBuild]::EnsureTrailingSlash('$(TizenProjectFolder)'))</TizenProjectFolder> |
|||
<!-- Desktop (NET8.0 without specific target) --> |
|||
<DesktopProjectFolder Condition=" '$(DesktopProjectFolder)' == '' ">$(PlatformsProjectFolder)Desktop\</DesktopProjectFolder> |
|||
<DesktopProjectFolder>$([MSBuild]::EnsureTrailingSlash('$(DesktopProjectFolder)'))</DesktopProjectFolder> |
|||
</PropertyGroup> |
|||
|
|||
<ItemGroup Condition=" '$(AvaloniaSingleProject)' == 'true' "> |
|||
<!-- Compatability with VS tooling --> |
|||
<MauiPlatformSpecificFolder Include="$(AndroidProjectFolder)" TargetPlatformIdentifier="android" /> |
|||
<MauiPlatformSpecificFolder Include="$(iOSProjectFolder)" TargetPlatformIdentifier="ios" /> |
|||
<MauiPlatformSpecificFolder Include="$(tvOSProjectFolder)" TargetPlatformIdentifier="tvos" /> |
|||
<MauiPlatformSpecificFolder Include="$(macOSProjectFolder)" TargetPlatformIdentifier="macos" /> |
|||
<MauiPlatformSpecificFolder Include="$(WindowsProjectFolder)" TargetPlatformIdentifier="windows" /> |
|||
<MauiPlatformSpecificFolder Include="$(LinuxProjectFolder)" TargetPlatformIdentifier="linux" /> |
|||
<MauiPlatformSpecificFolder Include="$(BrowserProjectFolder)" TargetPlatformIdentifier="browser" /> |
|||
<MauiPlatformSpecificFolder Include="$(TizenProjectFolder)" TargetPlatformIdentifier="tizen" /> |
|||
<MauiPlatformSpecificFolder Include="$(DesktopProjectFolder)" TargetPlatformIdentifier="" /> |
|||
</ItemGroup> |
|||
|
|||
<PropertyGroup Condition=" '$(_AvaloniaAndroidTarget)' == 'true' "> |
|||
<AndroidManifest Condition=" Exists('$(AndroidProjectFolder)AndroidManifest.xml') ">$(AndroidProjectFolder)AndroidManifest.xml</AndroidManifest> |
|||
<MonoAndroidResourcePrefix>$(AndroidProjectFolder)Resources</MonoAndroidResourcePrefix> |
|||
<MonoAndroidAssetsPrefix>$(AndroidProjectFolder)Assets</MonoAndroidAssetsPrefix> |
|||
</PropertyGroup> |
|||
|
|||
<PropertyGroup Condition=" '$(_AvaloniaIOSTarget)' == 'true' OR '$(_AvaloniaTvOSTarget)' == 'true'"> |
|||
<IPhoneResourcePrefix>$(iOSProjectFolder)Resources</IPhoneResourcePrefix> |
|||
<CodesignEntitlements Condition=" Exists('$(iOSProjectFolder)Entitlements.plist') ">$(iOSProjectFolder)Entitlements.plist</CodesignEntitlements> |
|||
<_SingleProjectiOSExcludes>$(iOSProjectFolder)/**/.*/**</_SingleProjectiOSExcludes> |
|||
</PropertyGroup> |
|||
|
|||
<PropertyGroup Condition="'$(DesktopProjectFolder)' == 'true'"> |
|||
<ApplicationManifest Condition=" Exists('$(DesktopProjectFolder)app.manifest') ">$(DesktopProjectFolder)app.manifest</ApplicationManifest> |
|||
<PackageManifest Condition=" Exists('$(DesktopProjectFolder)Package.appxmanifest') ">$(DesktopProjectFolder)Package.appxmanifest</PackageManifest> |
|||
<CodesignEntitlements Condition=" Exists('$(DesktopProjectFolder)Entitlements.plist') ">$(DesktopProjectFolder)Entitlements.plist</CodesignEntitlements> |
|||
</PropertyGroup> |
|||
|
|||
<PropertyGroup Condition="'$(_AvaloniaMacOSTarget)' == 'true' "> |
|||
<CodesignEntitlements Condition=" Exists('$(macOSProjectFolder)Entitlements.plist') ">$(macOSProjectFolder)Entitlements.plist</CodesignEntitlements> |
|||
</PropertyGroup> |
|||
|
|||
<PropertyGroup Condition="'$(_AvaloniaWindowsTarget)' == 'true'"> |
|||
<ApplicationManifest Condition=" Exists('$(WindowsProjectFolder)app.manifest') ">$(WindowsProjectFolder)app.manifest</ApplicationManifest> |
|||
<PackageManifest Condition=" Exists('$(WindowsProjectFolder)Package.appxmanifest') ">$(WindowsProjectFolder)Package.appxmanifest</PackageManifest> |
|||
</PropertyGroup> |
|||
|
|||
<PropertyGroup Condition=" '$(_AvaloniaTizenTarget)' == 'true' "> |
|||
<TizenManifestFile Condition=" Exists('$(TizenProjectFolder)tizen-manifest.xml') ">$(TizenProjectFolder)tizen-manifest.xml</TizenManifestFile> |
|||
<TizenResourcePrefix>$(TizenProjectFolder)res</TizenResourcePrefix> |
|||
<TizenSharedPrefix>$(TizenProjectFolder)shared</TizenSharedPrefix> |
|||
</PropertyGroup> |
|||
|
|||
<PropertyGroup Condition=" '$(_AvaloniaBrowserTarget)' == 'true' "> |
|||
<WasmMainJSPath Condition=" Exists('$(BrowserProjectFolder)/wwwroot/main.js') ">$(BrowserProjectFolder)/wwwroot/main.js</WasmMainJSPath> |
|||
<WasmMainHtmlPath Condition=" Exists('$(BrowserProjectFolder)/wwwroot/index.html') ">$(BrowserProjectFolder)wwwroot/index.html</WasmMainHtmlPath> |
|||
</PropertyGroup> |
|||
|
|||
<ItemGroup Condition=" '$(AvaloniaSingleProject)' == 'true' "> |
|||
<!-- Add metadata indicating that the platform-specific files are not part of every build configuration. --> |
|||
<Compile Update="$(PlatformsProjectFolder)**/*$(DefaultLanguageSourceExtension)"> |
|||
<ExcludeFromCurrentConfiguration>true</ExcludeFromCurrentConfiguration> |
|||
</Compile> |
|||
|
|||
<!-- Add metadata for the files that are actually part of the current build configuration. --> |
|||
<Compile Condition=" '$(_AvaloniaAndroidTarget)' == 'true' " Update="$(AndroidProjectFolder)**/*$(DefaultLanguageSourceExtension)"> |
|||
<ExcludeFromCurrentConfiguration>false</ExcludeFromCurrentConfiguration> |
|||
</Compile> |
|||
<Compile Condition=" '$(_AvaloniaIOSTarget)' == 'true' OR '$(_AvaloniaTvOSTarget)' == 'true'" Update="$(iOSProjectFolder)**/*$(DefaultLanguageSourceExtension)"> |
|||
<ExcludeFromCurrentConfiguration>false</ExcludeFromCurrentConfiguration> |
|||
</Compile> |
|||
<Compile Condition=" '$(_AvaloniaTvOSTarget)' == 'true' " Update="$(tvOSProjectFolder)**/*$(DefaultLanguageSourceExtension)"> |
|||
<ExcludeFromCurrentConfiguration>false</ExcludeFromCurrentConfiguration> |
|||
</Compile> |
|||
<Compile Condition=" '$(_AvaloniaDesktopTarget)' == 'true' " Update="$(DesktopProjectFolder)**/*$(DefaultLanguageSourceExtension)"> |
|||
<ExcludeFromCurrentConfiguration>false</ExcludeFromCurrentConfiguration> |
|||
</Compile> |
|||
<Compile Condition=" '$(_AvaloniaMacOSTarget)' == 'true' " Update="$(macOSProjectFolder)**/*$(DefaultLanguageSourceExtension)"> |
|||
<ExcludeFromCurrentConfiguration>false</ExcludeFromCurrentConfiguration> |
|||
</Compile> |
|||
<Compile Condition=" '$(_AvaloniaWindowsTarget)' == 'true' " Update="$(WindowsProjectFolder)**/*$(DefaultLanguageSourceExtension)"> |
|||
<ExcludeFromCurrentConfiguration>false</ExcludeFromCurrentConfiguration> |
|||
</Compile> |
|||
<Compile Condition=" '$(_AvaloniaLinuxTarget)' == 'true' " Update="$(LinuxProjectFolder)**/*$(DefaultLanguageSourceExtension)"> |
|||
<ExcludeFromCurrentConfiguration>false</ExcludeFromCurrentConfiguration> |
|||
</Compile> |
|||
<Compile Condition=" '$(_AvaloniaBrowserTarget)' == 'true' " Update="$(BrowserProjectFolder)**/*$(DefaultLanguageSourceExtension)"> |
|||
<ExcludeFromCurrentConfiguration>false</ExcludeFromCurrentConfiguration> |
|||
</Compile> |
|||
<Compile Condition=" '$(_AvaloniaTizenTarget)' == 'true' " Update="$(TizenProjectFolder)**/*$(DefaultLanguageSourceExtension)"> |
|||
<ExcludeFromCurrentConfiguration>false</ExcludeFromCurrentConfiguration> |
|||
</Compile> |
|||
</ItemGroup> |
|||
|
|||
<Target Name="_AvaloniaRemovePlatformCompileItems" BeforeTargets="GenerateMSBuildEditorConfigFileShouldRun" Condition=" '$(EnableDefaultItems)' == 'true' and '$(AvaloniaSingleProject)' == 'true' "> |
|||
<ItemGroup> |
|||
<Compile Condition=" '%(Compile.ExcludeFromCurrentConfiguration)' == 'true' " Remove="$(PlatformsProjectFolder)**/*$(DefaultLanguageSourceExtension)" /> |
|||
</ItemGroup> |
|||
</Target> |
|||
|
|||
<!-- IDE capabilities --> |
|||
<ItemGroup Condition=" '$(AvaloniaSingleProject)' == 'true' "> |
|||
<ProjectCapability Include="Msix" /> |
|||
<ProjectCapability Include="MauiSingleProject" /> |
|||
<ProjectCapability Include="LaunchProfiles" /> |
|||
<!-- If VS is older than Dev17 --> |
|||
<ProjectCapability Include="XamarinStaticLaunchProfiles" Condition=" '$(VisualStudioVersion)' != '' and '$(VisualStudioVersion)' < '17.0' " /> |
|||
<!-- Otherwise define LaunchProfilesGroupByPlatformFilters by default --> |
|||
<ProjectCapability Include="LaunchProfilesGroupByPlatformFilters" Condition=" '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' >= '17.0' " /> |
|||
<ProjectCapability Include="SingleTargetBuildForStartupProjects" Condition=" '$(EnableSingleTargetBuildForStartupProjects)' != 'false' " /> |
|||
</ItemGroup> |
|||
|
|||
<!-- Android --> |
|||
<ItemGroup Condition="'$(EnableDefaultItems)' == 'true' and '$(_AvaloniaAndroidTarget)' == 'true' and '$(MonoAndroidResourcePrefix)' != '' "> |
|||
<AndroidResource Include="$(MonoAndroidResourcePrefix)/*/*.xml" /> |
|||
<AndroidResource Include="$(MonoAndroidResourcePrefix)/*/*.axml" /> |
|||
<AndroidResource Include="$(MonoAndroidResourcePrefix)/*/*.png" /> |
|||
<AndroidResource Include="$(MonoAndroidResourcePrefix)/*/*.jpg" /> |
|||
<AndroidResource Include="$(MonoAndroidResourcePrefix)/*/*.gif" /> |
|||
<AndroidResource Include="$(MonoAndroidResourcePrefix)/font/*.ttf" /> |
|||
<AndroidResource Include="$(MonoAndroidResourcePrefix)/font/*.otf" /> |
|||
<AndroidResource Include="$(MonoAndroidResourcePrefix)/font/*.ttc" /> |
|||
<AndroidResource Include="$(MonoAndroidResourcePrefix)/raw/*" Exclude="$(MonoAndroidResourcePrefix)/raw/.*" /> |
|||
<AndroidAsset Include="$(MonoAndroidAssetsPrefix)/**/*" Exclude="$(MonoAndroidAssetsPrefix)/**/.*/**" /> |
|||
<!-- <AndroidResource Condition="Exists('$(ApplicationIcon)')" Include="$(ApplicationIcon)">--> |
|||
<!-- <Link>$(MonoAndroidResourcePrefix)\drawable\Icon.png</Link>--> |
|||
<!-- </AndroidResource>--> |
|||
</ItemGroup> |
|||
|
|||
<!-- iOS --> |
|||
<ItemGroup Condition=" '$(EnableDefaulItems)' == 'true' and ('$(_AvaloniaIOSTarget)' == 'true' OR '$(_AvaloniaTvOSTarget)' == 'true') and '$(iOSProjectFolder)' != ''"> |
|||
<None |
|||
Include="$(iOSProjectFolder)Info.plist" |
|||
Condition="Exists('$(iOSProjectFolder)Info.plist')" |
|||
Exclude="$(_SingleProjectiOSExcludes)" |
|||
LogicalName="Info.plist" |
|||
IsDefaultItem="true" |
|||
/> |
|||
<BundleResource |
|||
Include="$(iOSProjectFolder)Resources\**" |
|||
Exclude="$(_SingleProjectiOSExcludes)" |
|||
IsDefaultItem="true" |
|||
/> |
|||
<ImageAsset |
|||
Include="$(iOSProjectFolder)**/*.xcassets/**/*.*" |
|||
Exclude="$(_SingleProjectiOSExcludes)" |
|||
Link="%(RecursiveDir)%(FileName)%(Extension)" |
|||
Visible="false" |
|||
IsDefaultItem="true" |
|||
/> |
|||
<SceneKitAsset |
|||
Include="$(iOSProjectFolder)**/*.scnassets/*" |
|||
Exclude="$(_SingleProjectiOSExcludes)" |
|||
Link="%(RecursiveDir)%(FileName)%(Extension)" |
|||
IsDefaultItem="true" |
|||
/> |
|||
<InterfaceDefinition |
|||
Include="$(iOSProjectFolder)**/*.storyboard;$(iOSProjectFolder)**/*.xib" |
|||
Exclude="$(_SingleProjectiOSExcludes)" |
|||
Link="%(RecursiveDir)%(FileName)%(Extension)" |
|||
IsDefaultItem="true" |
|||
/> |
|||
</ItemGroup> |
|||
|
|||
<!-- Windows --> |
|||
<ItemGroup Condition=" '$(EnableDefaultItems)' == 'true' and '$(_AvaloniaWindowsTarget)' == 'true' "> |
|||
<Manifest |
|||
Include="$(ApplicationManifest)" |
|||
Condition="Exists('$(ApplicationManifest)')" /> |
|||
<AppxManifest |
|||
Include="$(PackageManifest)" |
|||
Condition="Exists('$(PackageManifest)')" /> |
|||
</ItemGroup> |
|||
|
|||
<!-- Browser --> |
|||
<ItemGroup Condition=" '$(EnableDefaultItems)' == 'true' and '$(_AvaloniaBrowserTarget)' == 'true' and '$(BrowserProjectFolder)' != '' "> |
|||
<WasmExtraFilesToDeploy Include="$(BrowserProjectFolder)/wwwroot/**/*.*" /> |
|||
</ItemGroup> |
|||
|
|||
<!-- Tizen --> |
|||
<ItemGroup Condition=" '$(EnableDefaultItems)' == 'true' and '$(_AvaloniaTizenTarget)' == 'true' and '$(TizenProjectFolder)' != '' "> |
|||
<TizenResource |
|||
Include="$(TizenResourcePrefix)\**\*" |
|||
Exclude="$(DefaultItemExcludes);$(DefaultExcludesInProjectFolder);@(TizenTpkUserExcludeFiles)" /> |
|||
<TizenSharedResource |
|||
Include="$(TizenSharedPrefix)\**\*" |
|||
Exclude="$(DefaultItemExcludes);$(DefaultExcludesInProjectFolder);@(TizenTpkUserExcludeFiles)" /> |
|||
</ItemGroup> |
|||
|
|||
<!-- Android workaround to allow projects without AndroidManifest.xml, as it used to be supported --> |
|||
<Target Name="BeforeGetAndroidPackageName" |
|||
BeforeTargets="_GetAndroidPackageName"> |
|||
<PropertyGroup> |
|||
<_AndroidManifestAbsTemp Condition=" '$(AndroidManifest)' != '' ">$(ProjectDir)$(AndroidManifest)</_AndroidManifestAbsTemp> |
|||
</PropertyGroup> |
|||
<PropertyGroup Condition=" '$(_AndroidManifestAbsTemp)' != '' and !Exists ('$(_AndroidManifestAbsTemp)') "> |
|||
<AndroidManifest></AndroidManifest> |
|||
</PropertyGroup> |
|||
</Target> |
|||
</Project> |
|||
@ -1,14 +0,0 @@ |
|||
using System; |
|||
using Android.App; |
|||
using Android.Content.PM; |
|||
using Android.OS; |
|||
using Avalonia; |
|||
using Avalonia.Android; |
|||
|
|||
namespace MobileSandbox.Android |
|||
{ |
|||
[Activity(Label = "MobileSandbox.Android", Theme = "@style/MyTheme.NoActionBar", Icon = "@drawable/icon", MainLauncher = true, ConfigurationChanges = ConfigChanges.Orientation | ConfigChanges.ScreenSize)] |
|||
public class MainActivity : AvaloniaMainActivity<App> |
|||
{ |
|||
} |
|||
} |
|||
@ -1,36 +0,0 @@ |
|||
<Project Sdk="Microsoft.NET.Sdk"> |
|||
<PropertyGroup> |
|||
<TargetFramework>$(AvsCurrentAndroidTargetFramework)</TargetFramework> |
|||
<SupportedOSPlatformVersion>21</SupportedOSPlatformVersion> |
|||
<OutputType>Exe</OutputType> |
|||
<Nullable>enable</Nullable> |
|||
<ApplicationId>com.Avalonia.MobileSandbox</ApplicationId> |
|||
<ApplicationVersion>1</ApplicationVersion> |
|||
<ApplicationDisplayVersion>1.0</ApplicationDisplayVersion> |
|||
<AndroidPackageFormat>apk</AndroidPackageFormat> |
|||
</PropertyGroup> |
|||
<ItemGroup> |
|||
<AndroidResource Include="..\..\build\Assets\Icon.png"> |
|||
<Link>Resources\drawable\Icon.png</Link> |
|||
</AndroidResource> |
|||
</ItemGroup> |
|||
|
|||
<PropertyGroup Condition="'$(AndroidEnableProfiler)'=='True'"> |
|||
<IsEmulator Condition="'$(IsEmulator)' == ''">True</IsEmulator> |
|||
<DebugSymbols>True</DebugSymbols> |
|||
</PropertyGroup> |
|||
|
|||
<ItemGroup> |
|||
<AndroidEnvironment Condition="'$(IsEmulator)'=='True'" Include="environment.emulator.txt" /> |
|||
<AndroidEnvironment Condition="'$(IsEmulator)'!='True'" Include="environment.device.txt" /> |
|||
</ItemGroup> |
|||
|
|||
<ItemGroup> |
|||
<PackageReference Include="Xamarin.AndroidX.Core.SplashScreen" Version="1.0.1.4" /> |
|||
</ItemGroup> |
|||
|
|||
<ItemGroup> |
|||
<ProjectReference Include="..\..\src\Android\Avalonia.Android\Avalonia.Android.csproj" /> |
|||
<ProjectReference Include="..\MobileSandbox\MobileSandbox.csproj" /> |
|||
</ItemGroup> |
|||
</Project> |
|||
@ -1,44 +0,0 @@ |
|||
Images, layout descriptions, binary blobs and string dictionaries can be included |
|||
in your application as resource files. Various Android APIs are designed to |
|||
operate on the resource IDs instead of dealing with images, strings or binary blobs |
|||
directly. |
|||
|
|||
For example, a sample Android app that contains a user interface layout (main.axml), |
|||
an internationalization string table (strings.xml) and some icons (drawable-XXX/icon.png) |
|||
would keep its resources in the "Resources" directory of the application: |
|||
|
|||
Resources/ |
|||
drawable/ |
|||
icon.png |
|||
|
|||
layout/ |
|||
main.axml |
|||
|
|||
values/ |
|||
strings.xml |
|||
|
|||
In order to get the build system to recognize Android resources, set the build action to |
|||
"AndroidResource". The native Android APIs do not operate directly with filenames, but |
|||
instead operate on resource IDs. When you compile an Android application that uses resources, |
|||
the build system will package the resources for distribution and generate a class called "R" |
|||
(this is an Android convention) that contains the tokens for each one of the resources |
|||
included. For example, for the above Resources layout, this is what the R class would expose: |
|||
|
|||
public class R { |
|||
public class drawable { |
|||
public const int icon = 0x123; |
|||
} |
|||
|
|||
public class layout { |
|||
public const int main = 0x456; |
|||
} |
|||
|
|||
public class strings { |
|||
public const int first_string = 0xabc; |
|||
public const int second_string = 0xbcd; |
|||
} |
|||
} |
|||
|
|||
You would then use R.drawable.icon to reference the drawable/icon.png file, or R.layout.main |
|||
to reference the layout/main.axml file, or R.strings.first_string to reference the first |
|||
string in the dictionary file values/strings.xml. |
|||
@ -1,66 +0,0 @@ |
|||
<animated-vector |
|||
xmlns:android="http://schemas.android.com/apk/res/android" |
|||
xmlns:aapt="http://schemas.android.com/aapt"> |
|||
<aapt:attr name="android:drawable"> |
|||
<vector |
|||
android:name="vector" |
|||
android:width="128dp" |
|||
android:height="128dp" |
|||
android:viewportWidth="128" |
|||
android:viewportHeight="128"> |
|||
<group |
|||
android:name="wrapper" |
|||
android:translateX="21" |
|||
android:translateY="21"> |
|||
<group android:name="group"> |
|||
<path |
|||
android:name="path" |
|||
android:pathData="M 74.853 85.823 L 75.368 85.823 C 80.735 85.823 85.144 81.803 85.761 76.602 L 85.836 41.76 C 85.225 18.593 66.254 0 42.939 0 C 19.24 0 0.028 19.212 0.028 42.912 C 0.028 66.357 18.831 85.418 42.18 85.823 L 74.853 85.823 Z" |
|||
android:strokeWidth="1"/> |
|||
<path |
|||
android:name="path_1" |
|||
android:pathData="M 43.059 14.614 C 29.551 14.614 18.256 24.082 15.445 36.743 C 18.136 37.498 20.109 39.968 20.109 42.899 C 20.109 45.831 18.136 48.301 15.445 49.055 C 18.256 61.716 29.551 71.184 43.059 71.184 C 47.975 71.184 52.599 69.93 56.628 67.723 L 56.628 70.993 L 71.344 70.993 L 71.344 44.072 C 71.357 43.714 71.344 43.26 71.344 42.899 C 71.344 27.278 58.68 14.614 43.059 14.614 Z M 29.51 42.899 C 29.51 35.416 35.576 29.35 43.059 29.35 C 50.541 29.35 56.607 35.416 56.607 42.899 C 56.607 50.382 50.541 56.448 43.059 56.448 C 35.576 56.448 29.51 50.382 29.51 42.899 Z" |
|||
android:strokeWidth="1" |
|||
android:fillType="evenOdd"/> |
|||
<path |
|||
android:name="path_2" |
|||
android:pathData="M 18.105 42.88 C 18.105 45.38 16.078 47.407 13.579 47.407 C 11.079 47.407 9.052 45.38 9.052 42.88 C 9.052 40.381 11.079 38.354 13.579 38.354 C 16.078 38.354 18.105 40.381 18.105 42.88 Z" |
|||
android:strokeWidth="1"/> |
|||
</group> |
|||
</group> |
|||
</vector> |
|||
</aapt:attr> |
|||
<target android:name="path"> |
|||
<aapt:attr name="android:animation"> |
|||
<objectAnimator |
|||
android:propertyName="fillColor" |
|||
android:duration="1000" |
|||
android:valueFrom="#00ffffff" |
|||
android:valueTo="#161c2d" |
|||
android:valueType="colorType" |
|||
android:interpolator="@android:interpolator/fast_out_slow_in"/> |
|||
</aapt:attr> |
|||
</target> |
|||
<target android:name="path_1"> |
|||
<aapt:attr name="android:animation"> |
|||
<objectAnimator |
|||
android:propertyName="fillColor" |
|||
android:duration="1000" |
|||
android:valueFrom="#00ffffff" |
|||
android:valueTo="#f9f9fb" |
|||
android:valueType="colorType" |
|||
android:interpolator="@android:interpolator/fast_out_slow_in"/> |
|||
</aapt:attr> |
|||
</target> |
|||
<target android:name="path_2"> |
|||
<aapt:attr name="android:animation"> |
|||
<objectAnimator |
|||
android:propertyName="fillColor" |
|||
android:duration="1000" |
|||
android:valueFrom="#00ffffff" |
|||
android:valueTo="#f9f9fb" |
|||
android:valueType="colorType" |
|||
android:interpolator="@android:interpolator/fast_out_slow_in"/> |
|||
</aapt:attr> |
|||
</target> |
|||
</animated-vector> |
|||
@ -1,71 +0,0 @@ |
|||
<animated-vector |
|||
xmlns:android="http://schemas.android.com/apk/res/android" |
|||
xmlns:aapt="http://schemas.android.com/aapt"> |
|||
<aapt:attr name="android:drawable"> |
|||
<vector |
|||
android:name="vector" |
|||
android:width="128dp" |
|||
android:height="128dp" |
|||
android:viewportWidth="128" |
|||
android:viewportHeight="128"> |
|||
<group |
|||
android:name="wrapper" |
|||
android:translateX="21" |
|||
android:translateY="21"> |
|||
<group android:name="group"> |
|||
<path |
|||
android:name="path" |
|||
android:pathData="M 74.853 85.823 L 75.368 85.823 C 80.735 85.823 85.144 81.803 85.761 76.602 L 85.836 41.76 C 85.225 18.593 66.254 0 42.939 0 C 19.24 0 0.028 19.212 0.028 42.912 C 0.028 66.357 18.831 85.418 42.18 85.823 L 74.853 85.823 Z" |
|||
android:fillColor="#00ffffff" |
|||
android:strokeWidth="1"/> |
|||
<path |
|||
android:name="path_1" |
|||
android:pathData="M 43.059 14.614 C 29.551 14.614 18.256 24.082 15.445 36.743 C 18.136 37.498 20.109 39.968 20.109 42.899 C 20.109 45.831 18.136 48.301 15.445 49.055 C 18.256 61.716 29.551 71.184 43.059 71.184 C 47.975 71.184 52.599 69.93 56.628 67.723 L 56.628 70.993 L 71.344 70.993 L 71.344 44.072 C 71.357 43.714 71.344 43.26 71.344 42.899 C 71.344 27.278 58.68 14.614 43.059 14.614 Z M 29.51 42.899 C 29.51 35.416 35.576 29.35 43.059 29.35 C 50.541 29.35 56.607 35.416 56.607 42.899 C 56.607 50.382 50.541 56.448 43.059 56.448 C 35.576 56.448 29.51 50.382 29.51 42.899 Z" |
|||
android:fillColor="#00ffffff" |
|||
android:strokeWidth="1" |
|||
android:fillType="evenOdd"/> |
|||
<path |
|||
android:name="path_2" |
|||
android:pathData="M 18.105 42.88 C 18.105 45.38 16.078 47.407 13.579 47.407 C 11.079 47.407 9.052 45.38 9.052 42.88 C 9.052 40.381 11.079 38.354 13.579 38.354 C 16.078 38.354 18.105 40.381 18.105 42.88 Z" |
|||
android:fillColor="#00ffffff" |
|||
android:strokeWidth="1"/> |
|||
</group> |
|||
</group> |
|||
</vector> |
|||
</aapt:attr> |
|||
<target android:name="path_2"> |
|||
<aapt:attr name="android:animation"> |
|||
<objectAnimator |
|||
android:propertyName="fillColor" |
|||
android:startOffset="100" |
|||
android:duration="900" |
|||
android:valueFrom="#00ffffff" |
|||
android:valueTo="#161c2d" |
|||
android:valueType="colorType" |
|||
android:interpolator="@android:interpolator/fast_out_slow_in"/> |
|||
</aapt:attr> |
|||
</target> |
|||
<target android:name="path"> |
|||
<aapt:attr name="android:animation"> |
|||
<objectAnimator |
|||
android:propertyName="fillColor" |
|||
android:duration="500" |
|||
android:valueFrom="#00ffffff" |
|||
android:valueTo="#f9f9fb" |
|||
android:valueType="colorType" |
|||
android:interpolator="@android:interpolator/fast_out_slow_in"/> |
|||
</aapt:attr> |
|||
</target> |
|||
<target android:name="path_1"> |
|||
<aapt:attr name="android:animation"> |
|||
<objectAnimator |
|||
android:propertyName="fillColor" |
|||
android:startOffset="100" |
|||
android:duration="900" |
|||
android:valueFrom="#00ffffff" |
|||
android:valueTo="#161c2d" |
|||
android:valueType="colorType" |
|||
android:interpolator="@android:interpolator/fast_out_slow_in"/> |
|||
</aapt:attr> |
|||
</target> |
|||
</animated-vector> |
|||
@ -1,13 +0,0 @@ |
|||
<?xml version="1.0" encoding="utf-8"?> |
|||
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> |
|||
|
|||
<item> |
|||
<color android:color="@color/splash_background"/> |
|||
</item> |
|||
|
|||
<item android:drawable="@drawable/icon" |
|||
android:width="120dp" |
|||
android:height="120dp" |
|||
android:gravity="center" /> |
|||
|
|||
</layer-list> |
|||
@ -1,4 +0,0 @@ |
|||
<?xml version="1.0" encoding="utf-8"?> |
|||
<resources> |
|||
<color name="splash_background">#212121</color> |
|||
</resources> |
|||
@ -1,16 +0,0 @@ |
|||
<?xml version="1.0" encoding="utf-8" ?> |
|||
<resources> |
|||
|
|||
<style name="MyTheme"> |
|||
</style> |
|||
|
|||
<style name="MyTheme.NoActionBar" parent="@style/Theme.AppCompat.NoActionBar"> |
|||
<item name="android:windowActionBar">false</item> |
|||
<item name="android:windowBackground">@null</item> |
|||
<item name="android:windowNoTitle">true</item> |
|||
<item name="android:windowSplashScreenBackground">@color/splash_background</item> |
|||
<item name="android:windowSplashScreenAnimatedIcon">@drawable/avalonia_anim</item> |
|||
<item name="android:windowSplashScreenAnimationDuration">1000</item> |
|||
|
|||
</style> |
|||
</resources> |
|||
@ -1,4 +0,0 @@ |
|||
<?xml version="1.0" encoding="utf-8"?> |
|||
<resources> |
|||
<color name="splash_background">#FFFFFF</color> |
|||
</resources> |
|||
@ -1,12 +0,0 @@ |
|||
<?xml version="1.0" encoding="utf-8" ?> |
|||
<resources> |
|||
|
|||
<style name="MyTheme"> |
|||
</style> |
|||
|
|||
<style name="MyTheme.NoActionBar" parent="@style/Theme.AppCompat.NoActionBar"> |
|||
<item name="android:windowActionBar">false</item> |
|||
<item name="android:windowBackground">@drawable/splash_screen</item> |
|||
<item name="android:windowNoTitle">true</item> |
|||
</style> |
|||
</resources> |
|||
@ -1 +0,0 @@ |
|||
DOTNET_DiagnosticPorts=127.0.0.1:9000,suspend |
|||
@ -1 +0,0 @@ |
|||
DOTNET_DiagnosticPorts=10.0.2.2:9001,suspend |
|||
@ -1,27 +0,0 @@ |
|||
<Project Sdk="Microsoft.NET.Sdk"> |
|||
<PropertyGroup> |
|||
<TargetFramework>$(AvsCurrentBrowserTargetFramework)</TargetFramework> |
|||
<RuntimeIdentifier>browser-wasm</RuntimeIdentifier> |
|||
<WasmMainJSPath>main.js</WasmMainJSPath> |
|||
<OutputType>Exe</OutputType> |
|||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks> |
|||
<WasmBuildNative>true</WasmBuildNative> |
|||
<WasmRuntimeAssetsLocation>./</WasmRuntimeAssetsLocation> |
|||
</PropertyGroup> |
|||
|
|||
<ItemGroup> |
|||
<ProjectReference Include="..\..\src\Browser\Avalonia.Browser\Avalonia.Browser.csproj" /> |
|||
<ProjectReference Include="..\MobileSandbox\MobileSandbox.csproj" /> |
|||
</ItemGroup> |
|||
|
|||
<ItemGroup> |
|||
<WasmExtraFilesToDeploy Include="index.html" /> |
|||
<WasmExtraFilesToDeploy Include="main.js" /> |
|||
<WasmExtraFilesToDeploy Include="favicon.ico" /> |
|||
<WasmExtraFilesToDeploy Include="Logo.svg" /> |
|||
<WasmExtraFilesToDeploy Include="app.css" /> |
|||
</ItemGroup> |
|||
|
|||
<Import Project="..\..\src\Browser\Avalonia.Browser\build\Avalonia.Browser.props" /> |
|||
<Import Project="..\..\src\Browser\Avalonia.Browser\build\Avalonia.Browser.targets" /> |
|||
</Project> |
|||
@ -1,12 +0,0 @@ |
|||
{ |
|||
"profiles": { |
|||
"MobileSandbox.Browser": { |
|||
"commandName": "Project", |
|||
"launchBrowser": true, |
|||
"environmentVariables": { |
|||
"ASPNETCORE_ENVIRONMENT": "Development" |
|||
}, |
|||
"applicationUrl": "https://localhost:65312;http://localhost:65313;" |
|||
} |
|||
} |
|||
} |
|||
@ -1,31 +0,0 @@ |
|||
<!DOCTYPE html> |
|||
<!-- Licensed to the .NET Foundation under one or more agreements. --> |
|||
<!-- The .NET Foundation licenses this file to you under the MIT license. --> |
|||
<html> |
|||
|
|||
<head> |
|||
<title>Mobile Sandbox</title> |
|||
<meta charset="UTF-8"> |
|||
<meta name="viewport" content="width=device-width, initial-scale=1.0"> |
|||
<link rel="modulepreload" href="./main.js" /> |
|||
<link rel="modulepreload" href="./dotnet.js" /> |
|||
<link rel="modulepreload" href="./avalonia.js" /> |
|||
<link rel="stylesheet" href="./app.css" /> |
|||
</head> |
|||
|
|||
<body style="margin: 0px"> |
|||
<div id="out"> |
|||
<div id="avalonia-splash"> |
|||
<div class="center"> |
|||
<h2>Powered by</h2> |
|||
<a class="navbar-brand" href="https://www.avaloniaui.net/" target="_blank"> |
|||
<img src="Logo.svg" alt="Avalonia Logo" width="30" height="24" /> |
|||
Avalonia |
|||
</a> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
<script type='module' src="./main.js"></script> |
|||
</body> |
|||
|
|||
</html> |
|||
@ -1,25 +0,0 @@ |
|||
<Project Sdk="Microsoft.NET.Sdk"> |
|||
|
|||
<PropertyGroup> |
|||
<OutputType>WinExe</OutputType> |
|||
<TargetFramework>$(AvsCurrentTargetFramework)</TargetFramework> |
|||
<TargetLatestRuntimePatch>true</TargetLatestRuntimePatch> |
|||
</PropertyGroup> |
|||
|
|||
<ItemGroup> |
|||
<ProjectReference Include="..\..\src\Avalonia.Diagnostics\Avalonia.Diagnostics.csproj" /> |
|||
<ProjectReference Include="..\..\src\Avalonia.Dialogs\Avalonia.Dialogs.csproj" /> |
|||
<ProjectReference Include="..\MobileSandbox\MobileSandbox.csproj" /> |
|||
<!-- For native controls test --> |
|||
<PackageReference Include="MonoMac.NetStandard" Version="0.0.4" /> |
|||
</ItemGroup> |
|||
|
|||
<PropertyGroup> |
|||
<!-- For Microsoft.CodeAnalysis --> |
|||
<SatelliteResourceLanguages>en</SatelliteResourceLanguages> |
|||
<ApplicationManifest>app.manifest</ApplicationManifest> |
|||
</PropertyGroup> |
|||
|
|||
<Import Project="..\..\build\SampleApp.props" /> |
|||
<Import Project="..\..\build\ReferenceCoreLibraries.props" /> |
|||
</Project> |
|||
@ -1,12 +0,0 @@ |
|||
<Project Sdk="Microsoft.NET.Sdk"> |
|||
<PropertyGroup> |
|||
<OutputType>Exe</OutputType> |
|||
<ProvisioningType>manual</ProvisioningType> |
|||
<TargetFramework>$(AvsCurrentIOSTargetFramework)</TargetFramework> |
|||
<SupportedOSPlatformVersion>13.0</SupportedOSPlatformVersion> |
|||
</PropertyGroup> |
|||
<ItemGroup> |
|||
<ProjectReference Include="..\..\src\iOS\Avalonia.iOS\Avalonia.iOS.csproj" /> |
|||
<ProjectReference Include="..\MobileSandbox\MobileSandbox.csproj" /> |
|||
</ItemGroup> |
|||
</Project> |
|||
@ -1,8 +1,7 @@ |
|||
<Application xmlns="https://github.com/avaloniaui" |
|||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" |
|||
Name="Mobile Sandbox" |
|||
x:Class="MobileSandbox.App" |
|||
RequestedThemeVariant="Dark"> |
|||
x:Class="MobileSandbox.App"> |
|||
<Application.Styles> |
|||
<FluentTheme /> |
|||
</Application.Styles> |
|||
@ -0,0 +1,27 @@ |
|||
using Avalonia; |
|||
using Avalonia.Controls.ApplicationLifetimes; |
|||
using Avalonia.Markup.Xaml; |
|||
|
|||
namespace MobileSandbox; |
|||
|
|||
public class App : Application |
|||
{ |
|||
public override void Initialize() |
|||
{ |
|||
AvaloniaXamlLoader.Load(this); |
|||
} |
|||
|
|||
public override void OnFrameworkInitializationCompleted() |
|||
{ |
|||
if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktopLifetime) |
|||
{ |
|||
desktopLifetime.MainWindow = new MainWindow(); |
|||
} |
|||
else if (ApplicationLifetime is ISingleViewApplicationLifetime singleViewLifetime) |
|||
{ |
|||
singleViewLifetime.MainView = new MainView(); |
|||
} |
|||
|
|||
base.OnFrameworkInitializationCompleted(); |
|||
} |
|||
} |
|||
@ -1,28 +0,0 @@ |
|||
using Avalonia; |
|||
using Avalonia.Controls.ApplicationLifetimes; |
|||
using Avalonia.Markup.Xaml; |
|||
|
|||
namespace MobileSandbox |
|||
{ |
|||
public class App : Application |
|||
{ |
|||
public override void Initialize() |
|||
{ |
|||
AvaloniaXamlLoader.Load(this); |
|||
} |
|||
|
|||
public override void OnFrameworkInitializationCompleted() |
|||
{ |
|||
if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktopLifetime) |
|||
{ |
|||
desktopLifetime.MainWindow = new MainWindow(); |
|||
} |
|||
else if (ApplicationLifetime is ISingleViewApplicationLifetime singleViewLifetime) |
|||
{ |
|||
singleViewLifetime.MainView = new MainView(); |
|||
} |
|||
|
|||
base.OnFrameworkInitializationCompleted(); |
|||
} |
|||
} |
|||
} |
|||
|
Before Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 172 KiB |
@ -0,0 +1,19 @@ |
|||
using System; |
|||
using System.Windows.Input; |
|||
using Avalonia.Controls; |
|||
using Avalonia.Markup.Xaml; |
|||
|
|||
namespace MobileSandbox; |
|||
|
|||
public partial class MainView : UserControl |
|||
{ |
|||
public MainView() |
|||
{ |
|||
InitializeComponent(); |
|||
} |
|||
|
|||
public void ButtonCommand() |
|||
{ |
|||
Console.WriteLine("Button pressed"); |
|||
} |
|||
} |
|||
@ -1,22 +0,0 @@ |
|||
using System; |
|||
using System.Windows.Input; |
|||
using Avalonia.Controls; |
|||
using Avalonia.Markup.Xaml; |
|||
|
|||
namespace MobileSandbox |
|||
{ |
|||
public class MainView : UserControl |
|||
{ |
|||
public MainView() |
|||
{ |
|||
AvaloniaXamlLoader.Load(this); |
|||
|
|||
DataContext = this; |
|||
} |
|||
|
|||
public void ButtonCommand() |
|||
{ |
|||
Console.WriteLine("Button pressed"); |
|||
} |
|||
} |
|||
} |
|||
@ -1,7 +1,6 @@ |
|||
<Window xmlns="https://github.com/avaloniaui" |
|||
xmlns:local="clr-namespace:MobileSandbox" |
|||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" |
|||
x:Name="MainWindow" |
|||
CanResize="False" |
|||
Width="720" Height="1280" |
|||
Title="Mobile Sandbox" |
|||
@ -0,0 +1,12 @@ |
|||
using Avalonia.Controls; |
|||
using Avalonia.Markup.Xaml; |
|||
|
|||
namespace MobileSandbox; |
|||
|
|||
public partial class MainWindow : Window |
|||
{ |
|||
public MainWindow() |
|||
{ |
|||
InitializeComponent(); |
|||
} |
|||
} |
|||
@ -1,21 +0,0 @@ |
|||
using Avalonia.Controls; |
|||
using Avalonia.Markup.Xaml; |
|||
|
|||
namespace MobileSandbox |
|||
{ |
|||
public class MainWindow : Window |
|||
{ |
|||
public MainWindow() |
|||
{ |
|||
this.InitializeComponent(); |
|||
|
|||
//Renderer.DrawFps = true;
|
|||
//Renderer.DrawDirtyRects = Renderer.DrawFps = true;
|
|||
} |
|||
|
|||
private void InitializeComponent() |
|||
{ |
|||
AvaloniaXamlLoader.Load(this); |
|||
} |
|||
} |
|||
} |
|||
@ -1,5 +1,5 @@ |
|||
<?xml version="1.0" encoding="utf-8"?> |
|||
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:installLocation="auto"> |
|||
<application android:label="MobileSandbox.Android" android:icon="@drawable/Icon"></application> |
|||
<application android:label="MobileSandbox.Android"></application> |
|||
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> |
|||
</manifest> |
|||
@ -0,0 +1,13 @@ |
|||
using System; |
|||
using Android.App; |
|||
using Android.Content.PM; |
|||
using Android.OS; |
|||
using Avalonia; |
|||
using Avalonia.Android; |
|||
|
|||
namespace MobileSandbox; |
|||
|
|||
[Activity(Label = "MobileSandbox.Android", Theme = "@style/Theme.AppCompat.NoActionBar", MainLauncher = true, ConfigurationChanges = ConfigChanges.Orientation | ConfigChanges.ScreenSize)] |
|||
public class MainActivity : AvaloniaMainActivity<App> |
|||
{ |
|||
} |
|||
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 172 KiB After Width: | Height: | Size: 172 KiB |
@ -0,0 +1,30 @@ |
|||
<!DOCTYPE html> |
|||
<html> |
|||
|
|||
<head> |
|||
<title>MobileSandbox.Browser</title> |
|||
<meta charset="UTF-8"> |
|||
<meta name="viewport" content="width=device-width, initial-scale=1.0"> |
|||
<base href="/" /> |
|||
<link rel="modulepreload" href="./main.js" /> |
|||
<link rel="modulepreload" href="./_framework/dotnet.js" /> |
|||
<link rel="modulepreload" href="./_framework/avalonia.js" /> |
|||
<link rel="stylesheet" href="./app.css" /> |
|||
</head> |
|||
|
|||
<body style="margin: 0px; overflow: hidden"> |
|||
<div id="out"> |
|||
<div id="avalonia-splash"> |
|||
<div class="center"> |
|||
<h2 class="purple"> |
|||
Powered by |
|||
<a class="highlight" href="https://www.avaloniaui.net/" target="_blank">Avalonia UI</a> |
|||
</h2> |
|||
</div> |
|||
<img class="icon" src="Logo.svg" alt="Avalonia Logo" /> |
|||
</div> |
|||
</div> |
|||
<script type='module' src="./main.js"></script> |
|||
</body> |
|||
|
|||
</html> |
|||
@ -0,0 +1,20 @@ |
|||
using System; |
|||
using Avalonia; |
|||
using Avalonia.Tizen; |
|||
using ElmSharp; |
|||
using SkiaSharp; |
|||
using Tizen.Applications; |
|||
|
|||
namespace MobileSandbox; |
|||
|
|||
class Program : NuiTizenApplication<App> |
|||
{ |
|||
protected override AppBuilder CustomizeAppBuilder(AppBuilder builder) => |
|||
base.CustomizeAppBuilder(builder); |
|||
|
|||
static void Main(string[] args) |
|||
{ |
|||
var app = new Program(); |
|||
app.Run(args); |
|||
} |
|||
} |
|||
|
After Width: | Height: | Size: 16 KiB |
@ -0,0 +1,23 @@ |
|||
<?xml version="1.0" encoding="utf-8"?> |
|||
<manifest package="com.avalonia.control-catalog" version="1.0.0" api-version="8.0" xmlns="http://tizen.org/ns/packages"> |
|||
<profile name="common" /> |
|||
<ui-application appid="com.avalonia.mobilesandbox" exec="MobileSandbox.dll" multiple="false" nodisplay="false" taskmanage="true" type="dotnet" hw-acceleration="on" launch_mode="single"> |
|||
<label>Avalonia</label> |
|||
<icon>Avalonia.png</icon> |
|||
<metadata key="http://tizen.org/metadata/prefer_dotnet_aot" value="true" /> |
|||
<splash-screens /> |
|||
</ui-application> |
|||
<shortcut-list /> |
|||
<privileges> |
|||
<privilege>http://tizen.org/privilege/appdir.shareddata</privilege> |
|||
<privilege>http://tizen.org/privilege/appmanager.launch</privilege> |
|||
<privilege>http://tizen.org/privilege/externalstorage</privilege> |
|||
<privilege>http://tizen.org/privilege/externalstorage.appdata</privilege> |
|||
<privilege>http://tizen.org/privilege/internet</privilege> |
|||
<privilege>http://tizen.org/privilege/network.get</privilege> |
|||
</privileges> |
|||
<dependencies /> |
|||
<provides-appdefined-privileges /> |
|||
<feature>http://tizen.org/feature/opengles.surfaceless_context</feature> |
|||
<feature>http://tizen.org/feature/opengles.version.2_0</feature> |
|||
</manifest> |
|||
@ -1,19 +0,0 @@ |
|||
<UserControl xmlns="https://github.com/avaloniaui" |
|||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" |
|||
x:Class="MobileSandbox.Views.CustomNotificationView"> |
|||
<Border Padding="12" MinHeight="20" Background="DodgerBlue"> |
|||
<Grid ColumnDefinitions="Auto,*"> |
|||
<Panel Margin="0,0,12,0" Width="25" Height="25" VerticalAlignment="Top"> |
|||
<TextBlock Text="" FontFamily="Segoe UI Symbol" FontSize="20" TextAlignment="Center" VerticalAlignment="Center"/> |
|||
</Panel> |
|||
<DockPanel Grid.Column="1"> |
|||
<TextBlock DockPanel.Dock="Top" Text="{ReflectionBinding Title}" FontWeight="Medium" /> |
|||
<StackPanel Spacing="20" DockPanel.Dock="Bottom" Margin="0,8,0,0" Orientation="Horizontal"> |
|||
<Button Content="No" DockPanel.Dock="Right" NotificationCard.CloseOnClick="True" Command="{ReflectionBinding NoCommand}" Margin="0,0,8,0" /> |
|||
<Button Content="Yes" DockPanel.Dock="Right" NotificationCard.CloseOnClick="True" Command="{ReflectionBinding YesCommand}" /> |
|||
</StackPanel> |
|||
<TextBlock Text="{ReflectionBinding Message}" TextWrapping="Wrap" Opacity=".8" Margin="0,8,0,0"/> |
|||
</DockPanel> |
|||
</Grid> |
|||
</Border> |
|||
</UserControl> |
|||
@ -1,18 +0,0 @@ |
|||
using Avalonia.Controls; |
|||
using Avalonia.Markup.Xaml; |
|||
|
|||
namespace MobileSandbox.Views |
|||
{ |
|||
public class CustomNotificationView : UserControl |
|||
{ |
|||
public CustomNotificationView() |
|||
{ |
|||
this.InitializeComponent(); |
|||
} |
|||
|
|||
private void InitializeComponent() |
|||
{ |
|||
AvaloniaXamlLoader.Load(this); |
|||
} |
|||
} |
|||
} |
|||