Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Проблема
Средство aapt2 не может разрешить один из переданных файлов.
Обычно это вызвано тем, что путь превышает максимальную длину пути, разрешенную в окнах.
Решение
Лучший способ избежать этого заключается в том, чтобы убедиться, что проект не находится глубоко в структуре папок. Например, если вы создаете все проекты в таких папках, как
C:\Users\shelly\Visual Studio 2022\Android\MyProjects\Com.SomeReallyLongCompanyName.MyBrillantApplication\MyBrilliantApplicaiton.Android\
Вы можете столкнуться с проблемами не только aapt2 , но и с заранеей компиляцией. Краткое сохранение имен проектов и структур папок поможет обойти эти проблемы. Например, вместо приведенного выше можно использовать
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. Однако может потребоваться переопределить везде, чтобы быть согласованным.