Сбой сборки Android в агенте сборки Azure DevOps (VSTS) с ошибкой APT0000: ошибка при получении родительского элемента - PullRequest
0 голосов
/ 12 сентября 2018

У нас есть приложения Xamarin.Android, созданные с использованием форм Xamarin и общего кода (.NET Standard 2.0), и мы пытаемся создать его на нашем сервере сборки, где он постоянно завершается с ошибками:

Mobile.Android\Resources\values\styles.xml(2,0): Error APT0000: Error retrieving parent for item: No resource found that matches the given name 'Theme.AppCompat.Light.DarkActionBar'. 
Mobile.Android\Resources\values\styles.xml(2,0): Error APT0000: No resource found that matches the given name: attr 'colorAccent'. 
Mobile.Android\Resources\values\styles.xml(2,0): Error APT0000: No resource found that matches the given name: attr 'colorPrimary'. 
Mobile.Android\Resources\values\styles.xml(2,0): Error APT0000: No resource found that matches the given name: attr 'colorPrimaryDark'. 
Mobile.Android\Resources\values\styles.xml(2,0): Error APT0000: No resource found that matches the given name: attr 'windowActionBar'. 
Mobile.Android\Resources\values\styles.xml(2,0): Error APT0000: No resource found that matches the given name: attr 'windowActionModeOverlay'. 
Mobile.Android\Resources\values\styles.xml(2,0): Error APT0000: No resource found that matches the given name: attr 'windowNoTitle'. 
Mobile.Android\Resources\values\styles.xml(2,0): Error APT0000: Error retrieving parent for item: No resource found that matches the given name 'Theme.AppCompat.Light.Dialog'. 
Mobile.Android\Resources\values\styles.xml(2,0): Error APT0000: No resource found that matches the given name: attr 'colorAccent'. 
Mobile.Android\Resources\values\styles.xml(2,0): Error APT0000: Error retrieving parent for item: No resource found that matches the given name 'Theme.AppCompat.Light'. 
Mobile.Android\Resources\values\styles.xml(2,0): Error APT0000: Error retrieving parent for item: No resource found that matches the given name 'Theme.AppCompat.Light.NoActionBar'.

Ниже приведены заметные моменты:

  • Недавно мы перешли с Xamarin.iOS и Xamarin.Android UI на Xamarin.Forms UI. Агент сборки может успешно собрать предыдущие сборки.
  • Приложение успешно собирается на наших локальных разработчиках (пробовал на 2 разных) в режиме выпуска.
  • Также попытался создать код, просто загрузив приложение на Build Server и запустив его через VS, и оно успешно собралось.
  • Xamarin.Android.Support.v7 и Xamarin.Android.Support.v4 включены.

Решения, которые я до сих пор пробовал:

  • Убедиться, что библиотеки поддержки и целевая структура работают уровень. (API 25)
  • Убедиться в том, что общий код собирается до кода Android.
  • Обновлены Android SDK на сервере сборки. Конфигурация Android такая же, как на моей машине разработчика.
  • Пробовал с другой версией API
  • Очистить содержимое C: \ Users \ Admin \ AppData \ Local \ xamarin
  • Перестройка, Перезагрузка, Очистка bin и obj и другие обычные вещи

Бороться с этим уже 2 дня. Любая помощь будет высоко ценится.

1 Ответ

0 голосов
/ 17 сентября 2018

Ниже приведена конфигурация YAML, которая помогла мне окончательно построить проект.

resources:
- repo: self
  clean: true

queue:
  name: Default
  demands: 
  - MSBuild
  - Xamarin.Android
  - JDK
  - AndroidSDK

variables:
  BuildConfiguration: 'Release'

steps:
- task: NuGetToolInstaller@0
  displayName: 'Use NuGet 4.4.1'
  inputs:
    versionSpec: 4.4.1

- task: NuGetCommand@2
  displayName: 'NuGet restore'
  inputs:
    restoreSolution: '$(Parameters.restorePkgSolution)'

- task: XamarinAndroid@1
  displayName: 'Build Mobile.Android'
  inputs:
    projectFile: Mobile.Android/Mobile.Android.csproj
    outputDirectory: '$(build.binariesdirectory)/$(BuildConfiguration)'
    configuration: '$(BuildConfiguration)'

- task: AndroidSigning@1
  displayName: 'Signing and aligning APK file(s) $(build.binariesdirectory)/$(BuildConfiguration)/*.apk'
  inputs:
    files: '$(Parameters.appFiles)'
    keystoreFile: '<path>'
    keystorePass: <password>
    keystoreAlias: <alias>
    keyPass: <pass>

- task: PublishBuildArtifacts@1
  displayName: 'Publish Artifact: drop'
  inputs:
    PathtoPublish: '$(build.binariesdirectory)/$(BuildConfiguration)'

Разница между этим конвейером и предыдущим конвейером, который вышел из строя:

  • Я выполнялdotnet восстанавливает решение в предыдущем конвейере перед запуском MSBuild, чего я здесь не делаю.
  • Я создавал решение до того, как здесь я создаю android csproj.IMO, sln следует собирать, потому что в конфигурации выпуска android я настроил его на сборку только с android и общими проектами.
  • Параметр «Очистить на всех этапах» был установлен на true, отсутствие которого приводило к другомуПроблема TaskABI не найдена.
  • В предыдущем конвейере я запускал NuGetInstaller для того, что я сейчас делаю, а именно NuGetTollInstaller, а затем просто запускал восстановление nuget на нем.

Так что я все ещеЯ не уверен на 100%, что я делаю неправильно, но, скорее всего, я думаю, что восстановление nuget либо не работало должным образом, либо выполнялось очистка в следующих шагах: очистка nuget.Если кто-то хочет продолжить расследование, приветствуем.Я опубликую определенный ответ, если выясню это, но пока этот YAML работает.

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