Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Проблема
Средство aapt2 не может обработать один из переданных файлов.
Обычно это вызвано тем, что путь превышает максимальную длину пути, разрешенную в окнах.
Решение
Лучший способ избежать этого заключается в том, чтобы убедиться, что проект не находится глубоко в структуре папок. Например, если вы создаете все проекты в таких папках, как
C:\Users\shelly\Visual Studio 2022\Android\MyProjects\Com.SomeReallyLongCompanyName.MyBrillantApplication\MyBrilliantApplicaiton.Android\
Вы можете столкнуться не только с проблемами aapt2, но и с компиляцией Ahead of Time. Поддержание краткости и ясности в именах ваших проектов и структур папок поможет обойти эти проблемы. Например, вместо приведенного выше можно использовать
C:\Work\Android\MyBrilliantApp
Это намного короче и имеет гораздо меньшую вероятность столкнуться с проблемами пути.
Однако это не всегда возможно. Иногда для проекта или среды требуются глубокие структуры папок. Включение поддержки длинных путей в Windows может быть достаточно, чтобы ваш проект заработал. Подробные сведения о том, как это сделать, можно найти здесь.
Если поддержка длинного $(BaseIntermediateOutputPath) пути не работает, изменение расположения может помочь решить эти проблемы. Чтобы этот параметр начал работать, его необходимо изменить перед выполнением создания или восстановления ЛЮБОЙ сборки. Для этого можно использовать поддержку MSBuild Directory.Build.props .
Создайте файл Directory.Build.props в каталоге вашего решения или проекта, который переопределяет $(BaseIntermediateOutputPath) на более близкий к корню диска, чтобы решить эти проблемы. Добавление файла со следующим содержимым создаст каталог obj в другом месте, выбранном вами.
<Project>
<PropertyGroup>
<BaseIntermediateOutputPath Condition=" '$(OS)' == 'Windows_NT' ">C:\Intermediate\$(ProjectName)</BaseIntermediateOutputPath>
<BaseIntermediateOutputPath Condition=" '$(OS)' != 'Windows_NT' ">/tmp/Intermediate/$(ProjectName)</BaseIntermediateOutputPath>
</PropertyGroup>
</Project>
Использование этой техники уменьшит длины путей, отправляемых различным инструментам, таким как aapt2.
Обратите внимание, что это, как правило, только проблема с Windows. Поэтому нет необходимости переопределять $(BaseIntermediateOutputPath) в средах, работающих в системах Mac или Linux. Однако может потребоваться переопределить везде, чтобы обеспечить согласованность.