As of Visual Studio 2017 15.5.1, How Does One Create a Xamarin.Forms Project to Target Minimum Android KitKat (API 19) with PCL now obsolete?

丶灬走出姿态 提交于 2020-01-01 10:05:32

问题


I want to know how to create a Xamarin.Forms Project that targets minimum version of Android Kitkat (API 19), without using the Shared Project option.

.Net Standard Library is not an option since the minimum supported Android version is Nougat. A large percentage of my target users (more than 40%) still uses phones with an Android version lower than Nougat.

In Visual Studio 15.5.1 or greater, no PCL option is provided under the Code Sharing Strategy Section in creating a new Xamarin.Forms project when using the Cross-Platform App template.

It was noted that PCL is now deprecated on Xamarin's Forum and also on the Visual Studio Developer Community

Key Supporting Questions:

  1. With the latest Vs 2017, is PCL even still possible with Xamarin.Forms? And How?
  2. If Yes, What are the steps to create a PCL-Based Xamarin.Forms Project and are there any open-soured templates to bootstrap this?
  3. If No, Does this mean I can only support Android KitKat with Xamarin.Forms using the Shared-Project Code Sharing strategy/template?

回答1:


  • Forms supports Android 4.0.3 (API 15) and higher, you are confusing the "Target Framework" (compileSdkVersion) for the "Target Android Version" ( targetSdkVersion) vs the "Minimum Android Version" (minSdkVersion).

    • Your Xamarin.Form project has to use the target framework of Nougat/7.0 (MonoAndroid7.0) or above but can target the minimum of 4.0.3/IceCreamSandwich version.

      • Note: The latest version of Forms required a target framework of 8.0
    • Xamarin has a great guide that explains how those things relate from Android to Xamarin.Android

      • Understanding Android API Levels
  • Microsoft completely removed the template option to create PCL-based libraries

    • PCL projects still build fine

    • NetStandard is the only future, PCLs are dead, etc, etc...

    • IMHO this was breaking change as a lot of my clients are not ready to convert to NetStd and there are still NetStd bugs floating around (edge cases mostly)

    • Still need to create a PCL library, grab an existing project and copy, strip and rename it... or create the .csproj yourself (see basic .csproj).

A Basic Profile111 PCL .csproj:

<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <ProjectGuid>{C38DBA87-39CB-4FD5-B409-6D19E6ED54C8}</ProjectGuid>
    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
    <UseMSBuildEngine>true</UseMSBuildEngine>
    <OutputType>Library</OutputType>
    <RootNamespace>PCLTemplate</RootNamespace>
    <AssemblyName>PCLTemplate</AssemblyName>
    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
    <TargetFrameworkProfile>Profile111</TargetFrameworkProfile>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <DebugSymbols>true</DebugSymbols>
    <DebugType>full</DebugType>
    <Optimize>false</Optimize>
    <OutputPath>bin\Debug</OutputPath>
    <DefineConstants>DEBUG;</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    <Optimize>true</Optimize>
    <OutputPath>bin\Release</OutputPath>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <ItemGroup>
    <Compile Include="MyClass.cs" />
    <Compile Include="Properties\AssemblyInfo.cs" />
  </ItemGroup>
  <Import Project="$(MSBuildExtensionsPath32)\Microsoft\Portable\$(TargetFrameworkVersion)\Microsoft.Portable.CSharp.targets" />
</Project>


来源:https://stackoverflow.com/questions/47956779/as-of-visual-studio-2017-15-5-1-how-does-one-create-a-xamarin-forms-project-to

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!