Xamarin 빌드 에러 XA5209, APT0000
2대의 Visual Studio 2017에서 Xamarin 빌드를 하는데 한 대의 경우에만 유독 다음과 같은 빌드 오류가 발생합니다.
An error occurred trying to install required android components on Project 'MyFirstApp.Android'.
Project 'MyFirstApp.Android' requires the following components installed on your machine:
Xamarin.Android.Support.v7.AppCompat
JavaLibraryReference: https://dl-ssl.google.com/android/repository/android_m2repository_r29.zip-m2repository/com/android/support/appcompat-v7/23.3.0/appcompat-v7-23.3.0.aar-23.3.0.0
AndroidResources: https://dl-ssl.google.com/android/repository/android_m2repository_r29.zip-m2repository/com/android/support/appcompat-v7/23.3.0/appcompat-v7-23.3.0.aar-23.3.0.0
Xamarin.Android.Support.Design
JavaLibraryReference: https://dl-ssl.google.com/android/repository/android_m2repository_r29.zip-m2repository/com/android/support/design/23.3.0/design-23.3.0.aar-23.3.0.0
AndroidResources: https://dl-ssl.google.com/android/repository/android_m2repository_r29.zip-m2repository/com/android/support/design/23.3.0/design-23.3.0.aar-23.3.0.0
Xamarin.Android.Support.v7.MediaRouter
JavaLibraryReference: https://dl-ssl.google.com/android/repository/android_m2repository_r29.zip-m2repository/com/android/support/mediarouter-v7/23.3.0/mediarouter-v7-23.3.0.aar-23.3.0.0
JavaLibraryReference: https://dl-ssl.google.com/android/repository/android_m2repository_r29.zip-m2repository/com/android/support/mediarouter-v7/23.3.0/mediarouter-v7-23.3.0.aar-23.3.0.0
AndroidResources: https://dl-ssl.google.com/android/repository/android_m2repository_r29.zip-m2repository/com/android/support/mediarouter-v7/23.3.0/mediarouter-v7-23.3.0.aar-23.3.0.0
Please double-click here to install it.
Intallation Errors: XA5209 Unzipping failed. Please download 'https://dl-ssl.google.com/android/repository/android_m2repository_r29.zip:m2repository/com/android/support/appcompat-v7/23.3.0/appcompat-v7-23.3.0.aar' and extract it to the 'C:\Users\kevin\AppData\Local\Xamarin\Xamarin.Android.Support.v7.AppCompat\23.3.0.0\embedded' directory
XA5209 Reason: The process cannot access the file 'C:\Users\kevin\AppData\Local\Xamarin\Xamarin.Android.Support.v7.AppCompat\23.3.0.0\embedded\res\drawable-mdpi-v4' because it is being used by another process.
XA5207 Please install package: 'Xamarin.Android.Support.v7.AppCompat' available in SDK installer. Java library file 'C:\Program Files (x86)\Android\android-sdk\extras\android\classes.jar' doesn't exist.
XA5207 Please install package: 'Xamarin.Android.Support.Design' available in SDK installer. Java library file 'C:\Program Files (x86)\Android\android-sdk\extras\android\classes.jar' doesn't exist.
XA5207 Please install package: 'Xamarin.Android.Support.v7.MediaRouter' available in SDK installer. Java library file 'C:\Program Files (x86)\Android\android-sdk\extras\android\classes.jar' doesn't exist.
XA5207 Please install package: 'Xamarin.Android.Support.v7.MediaRouter' available in SDK installer. Java library file 'C:\Program Files (x86)\Android\android-sdk\extras\android\libs/internal_impl-23.3.0.jar' doesn't exist.
오류 메시지를 자세히 보면,
Intallation Errors: XA5209 Unzipping failed. Please download 'https://dl-ssl.google.com/android/repository/android_m2repository_r29.zip:m2repository/com/android/support/appcompat-v7/23.3.0/appcompat-v7-23.3.0.aar' and extract it to the 'C:\Users\kevin\AppData\Local\Xamarin\Xamarin.Android.Support.v7.AppCompat\23.3.0.0\embedded' directory
"
https://dl-ssl.google.com/android/repository/android_m2repository_r29.zip" 파일을 다운로드해 압축을 푼 후, 다시 그 폴더로부터 "/m2repository/com/android/support/appcompat-v7/23.3.0/appcompat-v7-23.3.0.aar"에 해당하는 파일의 (확장자를 .zip으로 변환하고) 압축을 "%LOCALAPPDATA%\Xamarin\Xamarin.Android.Support.v7.AppCompat\23.3.0.0\embedded" 폴더에 풀어 놓으면 됩니다. 이후, 남아 있는 항목들에 대해서도 유사하게 해결하면 되는데 매우 번거롭습니다. (아래에 이에 대한 우회 해결책이 있습니다.)
그런데, 이렇게 해서 XA5209 관련 오류들은 해결했지만 여전히 다음과 같은 식의 빌드 오류가 발생합니다.
2>D:\temp\MyFirstApp\MyFirstApp\MyFirstApp.Android\obj\Debug\resourcecache\E722C8F606153F6E3A17720075336AE1\res\values\values.xml(4): error APT0000: Attribute "drawerArrowStyle" has already been defined
2>D:\temp\MyFirstApp\MyFirstApp\MyFirstApp.Android\obj\Debug\resourcecache\E722C8F606153F6E3A17720075336AE1\res\values\values.xml(5): error APT0000: Attribute "height" has already been defined
...[생략]...
2>D:\temp\MyFirstApp\MyFirstApp\MyFirstApp.Android\obj\Debug\resourcecache\E722C8F606153F6E3A17720075336AE1\res\values\values.xml(6): error APT0000: Attribute "isLightTheme" has already been defined
2>D:\temp\MyFirstApp\MyFirstApp\MyFirstApp.Android\obj\Debug\resourcecache\E722C8F606153F6E3A17720075336AE1\res\values\values.xml(100): error APT0000: Attribute "theme" has already been defined
2>D:\temp\MyFirstApp\MyFirstApp\MyFirstApp.Android\obj\Debug\resourcecache\E722C8F606153F6E3A17720075336AE1\res\values\values.xml(101): error APT0000: Attribute "backgroundTint" has already been defined
2>D:\temp\MyFirstApp\MyFirstApp\MyFirstApp.Android\obj\Debug\resourcecache\E722C8F606153F6E3A17720075336AE1\res\values\values.xml(101): error APT0000: Attribute "backgroundTintMode" has already been defined
검색해 보면 %LOCALAPPDATA%\Xamarin 폴더를 삭제하고 다시 빌드하라고 하는데... 별로 소용이 없었습니다.
제가 했던 해결책은, 그냥 빌드 잘 되는 Visual Studio 2017의 PC에 있는 "%LOCALAPPDATA%\Xamarin" 폴더의 내용을 모두 복사해 오는 것이었습니다. 이러면 일일이 XA5209 오류에 따른 .zip 파일도 다운로드 받을 필요 없고 values.xml의 APT0000 빌드 오류도 없어집니다. (만약 잘 운영되는 "%LOCALAPPDATA%\Xamarin" 폴더를 구할 수 없다면... values.xml의 APT0000 빌드 오류는 여러분들의 글 소재로 맡기겠습니다.)
[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]