Android 在 Azure DevOps (VSTS) 构建代理上构建失败,出现错误 APT0000:检索项目的父项时出错
Android build failing on Azure DevOps(VSTS) build agent with Error APT0000: Error retrieving parent for item
我们有一个 Xamarin.Android 应用程序使用 Xamarin Forms 和共享代码 (.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 天。任何帮助将不胜感激。
以下是帮助我最终构建项目的 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)'
此管道与之前失败的管道之间的区别是:
- 在 运行 MSBuild 之前,我是 运行 dotnet restore 上一个管道中的解决方案,我不在这里做。
- 我之前正在构建解决方案,而在这里我正在构建 android csproj。 IMO,sln 应该构建,因为 android 的发布配置,我将其设置为仅使用 android 和共享项目构建。
- Clean in all steps 设置为 true,缺少它会导致另一个问题 TaskABI not found。
- 在之前的管道中,我是 运行 NuGetInstaller 而不是我现在正在做的事情,即 NuGetTollInstaller 然后只是 运行 nuget 恢复。
所以我仍然不能 100% 确定我做错了什么,但我最好的猜测是 nuget 恢复工作不正常,或者在接下来的步骤中清理 nuget。
如果有人想进一步调查,非常欢迎。如果我弄清楚了,我会 post 确定的答案,但现在这个 YAML 正在工作。
我们有一个 Xamarin.Android 应用程序使用 Xamarin Forms 和共享代码 (.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 天。任何帮助将不胜感激。
以下是帮助我最终构建项目的 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)'
此管道与之前失败的管道之间的区别是:
- 在 运行 MSBuild 之前,我是 运行 dotnet restore 上一个管道中的解决方案,我不在这里做。
- 我之前正在构建解决方案,而在这里我正在构建 android csproj。 IMO,sln 应该构建,因为 android 的发布配置,我将其设置为仅使用 android 和共享项目构建。
- Clean in all steps 设置为 true,缺少它会导致另一个问题 TaskABI not found。
- 在之前的管道中,我是 运行 NuGetInstaller 而不是我现在正在做的事情,即 NuGetTollInstaller 然后只是 运行 nuget 恢复。
所以我仍然不能 100% 确定我做错了什么,但我最好的猜测是 nuget 恢复工作不正常,或者在接下来的步骤中清理 nuget。 如果有人想进一步调查,非常欢迎。如果我弄清楚了,我会 post 确定的答案,但现在这个 YAML 正在工作。