准备工作

打开 Visual Studio Installer 安装移动开发套件 Mobile development with .NET。
002.001 C# 也能开发 Android 应用 - 图1

以前 VS 带的安卓模拟器和 Hyper-V 有冲突,从 VS 15.7 版本开始冲突解决了。

安装好套件后打开 VS 的 Tools - Android SDK Manager 确认 SDK Platform 和 27.2.9 版本的 Emulator 安装成功。
002.001 C# 也能开发 Android 应用 - 图2

002.001 C# 也能开发 Android 应用 - 图3
PS:如果有 update,更新即可。

体验 Android 模拟器

Android SDK 更新完毕后,可以在 Tools - Android SDK Manager - Android Device Manager 直接体验 Android 模拟器(一瞥 8.1)。
002.001 C# 也能开发 Android 应用 - 图4

开发一个简单的加法 App

开发安卓应用可以通过创建移动端跨平台项目,也可以通过创建单纯的安卓项目。考虑到 IOS 和 UWP 项目较难调试和发布我就只创建了 Android XAML App(Xamarin.Forms) 项目。

下面开发一个简单的加法应用。

前端 XAML:

  1. <?xml version="1.0" encoding="utf-8" ?>
  2. <ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
  3. xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
  4. xmlns:local="clr-namespace:HelloAndroid.Client"
  5. x:Class="HelloAndroid.Client.MainPage">
  6. <Grid>
  7. <Grid.RowDefinitions>
  8. <RowDefinition Height="Auto"/>
  9. <RowDefinition Height="Auto"/>
  10. <RowDefinition Height="Auto"/>
  11. <RowDefinition Height="Auto"/>
  12. </Grid.RowDefinitions>
  13. <Editor x:Name="Txt1" Grid.Row="0"/>
  14. <Editor x:Name="Txt2" Grid.Row="1"/>
  15. <Editor x:Name="Txt3" Grid.Row="2"/>
  16. <Grid Grid.Row="3">
  17. <Grid.ColumnDefinitions>
  18. <ColumnDefinition Width="*"/>
  19. <ColumnDefinition Width="*"/>
  20. <ColumnDefinition Width="*"/>
  21. <ColumnDefinition Width="*"/>
  22. </Grid.ColumnDefinitions>
  23. <Button x:Name="BtnAdd" Grid.Column="0" Text="Add" Clicked="DoAdd"/>
  24. <Button x:Name="BtnSub" Grid.Column="1" Text="Sub"/>
  25. <Button x:Name="BtnMul" Grid.Column="2" Text="Mul"/>
  26. <Button x:Name="BtnDiv" Grid.Column="3" Text="Div"/>
  27. </Grid>
  28. </Grid>
  29. </ContentPage>

后端 C#:

  1. using System;
  2. using Xamarin.Forms;
  3. namespace HelloAndroid.Client
  4. {
  5. public partial class MainPage : ContentPage
  6. {
  7. public MainPage()
  8. {
  9. InitializeComponent();
  10. }
  11. private void DoAdd(object sender, EventArgs e)
  12. {
  13. double.TryParse(Txt1.Text, out double x);
  14. double.TryParse(Txt2.Text, out double y);
  15. Txt3.Text = (x + y).ToString();
  16. }
  17. }
  18. }

注:最好先 Build 项目,再进行调试。
002.001 C# 也能开发 Android 应用 - 图5

打包成 APK

参考 SOFMSDN

  1. In your toolbar change the project from debug mode to release mode

  2. Right-click on your Project and Select Archive(存档)…

  3. Click on the generated archive and below on the Right side you will find two options Open folder and Distribute. (Select Distribute)

  4. Then on the Pop-up that appears Select AD-HOC

  5. Click on the Green plus icon to add signing identity where you need to provide the identity of the signing person or company

  6. After creating the signing identity click on that identity to select it and then click on save as to save your APK.

  7. A pop-up will appear asking password for the signing identity which you will produce in step 5.

打包成 APK,安装到手机上的效果:
002.001 C# 也能开发 Android 应用 - 图6

其它问题

Android 设计器不工作

再 XAML 切换到设计器时提示:System.ComponentModel.Composition.ImportCardinalityMismatchException: No exports were found that match the constraint: ...

解决方法:

  1. 保证 SDK 都更新到了最新版

  2. 清除 C:\Users\UserName\AppData\Local\Microsoft\VisualStudio\15.0*\ComponentModelCache 缓存的文件