Код, написанный в кросс-платформенной библиотеке с __ANDROID__, не выполняется в приложении форм Xamarin - PullRequest
0 голосов
/ 04 октября 2019

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

В проекте библиотеки мульти-таргетинга используется MSBuild.Sdk.Extras.

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

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

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

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

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

Ответы [ 2 ]

0 голосов
/ 04 октября 2019

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

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

android build section Здесь символы не заданы заранее.

ios build section

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

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

0 голосов
/ 04 октября 2019

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...