Код, написанный в кроссплатформенной библиотеке с __ANDROID__, не выполняется в приложении форм Xamarin

Я использую многоцелевую библиотеку в своем приложении форм Xamarin. В библиотеке появился код, написанный с символом условного компилятора __ANDROID__. Когда я запускаю приложение на Android, оно не выполняет код, написанный с помощью символа.

Проект многоцелевой библиотеки использует MSBuild.Sdk.Extras.

<Project Sdk="MSBuild.Sdk.Extras" ToolsVersion="16.0">

  <PropertyGroup>
    <TargetFrameworks>netstandard2.0;MonoAndroid90</TargetFrameworks>
  </PropertyGroup>

Я также попробовал это, определив условный символ в свойствах проекта Xamarin.Android -> Сборка -> Общие -> Символы условной компиляции. Но он по-прежнему не запускает этот конкретный код.

#if __ANDROID__
        // do some andoid specific work
#endif

Он должен запускать этот блок кода при запуске приложения на Android.


person Zohaib    schedule 04.10.2019    source источник


Ответы (2)


Похоже, вы определили символ __ANDROID__ не в том проекте. Если вы определите это, например. Project.Android это определено только в этом проекте, а не в других. Существует возможность определить условные символы на уровне решения, и вы можете прочитать об этом здесь

person byczu    schedule 04.10.2019

Вероятно, вы забыли добавить в поле «символы условной компиляции» в разделе сборки проекта Android этот символ: ANDROID

Я не знаю, почему на iOS при создании проекта символ вставляется автоматически, а в проекте Android он не вставляется.

раздел сборки Android Здесь символы не предустановлены.

раздел сборки iOS

Здесь символы предустановлены.

Дополнительную информацию можно найти здесь, в разделе Условная компиляция: документы Microsoft Xamarin

person SteeBono    schedule 04.10.2019