Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Questão
A ferramenta aapt2 não consegue resolver um dos arquivos que foi passado.
Isso geralmente é causado pelo caminho ser maior do que o comprimento máximo do caminho permitido nas janelas.
Solução
A melhor maneira de evitar isso é garantir que seu projeto não esteja localizado profundamente na estrutura de pastas. Por exemplo, se você criar todos os seus projetos em pastas como
C:\Users\shelly\Visual Studio 2022\Android\MyProjects\Com.SomeReallyLongCompanyName.MyBrillantApplication\MyBrilliantApplicaiton.Android\
você pode muito bem encontrar problemas não apenas com aapt2, mas também com a compilação antecipada. Manter curtos e concisos seus nomes de projeto e estruturas de pastas ajudará a contornar esses problemas. Por exemplo, em vez do acima, você pode usar
C:\Work\Android\MyBrilliantApp
O que é muito mais curto e tem muito menos probabilidade de encontrar problemas de rota.
No entanto, isso nem sempre é possível. Às vezes, um projeto ou um ambiente requer estruturas de pastas profundas. Habilitar o suporte de caminho longo no Windows pode ser suficiente para fazer seu projeto funcionar. Detalhes sobre como fazer isso podem ser encontrados aqui.
Se o suporte a caminhos longos não funcionar, alterar o local do $(BaseIntermediateOutputPath) pode ajudar a resolver esses problemas. Para que isso funcione, a configuração DEVE ser alterada antes que qualquer build ou restauração ocorra. Para fazer isso, você pode usar o suporte do MSBuild Directory.Build.props .
Criar um arquivo Directory.Build.props em sua solução ou diretório de projeto que redefina o $(BaseIntermediateOutputPath) para um local mais próximo da raiz da unidade ajudará a resolver esses problemas. Adicionar um arquivo com o conteúdo a seguir criará o obj diretório em um local diferente de sua escolha.
<Project>
<PropertyGroup>
<BaseIntermediateOutputPath Condition=" '$(OS)' == 'Windows_NT' ">C:\Intermediate\$(ProjectName)</BaseIntermediateOutputPath>
<BaseIntermediateOutputPath Condition=" '$(OS)' != 'Windows_NT' ">/tmp/Intermediate/$(ProjectName)</BaseIntermediateOutputPath>
</PropertyGroup>
</Project>
Usar essa técnica reduzirá os comprimentos dos caminhos enviados para as várias ferramentas, como aapt2.
Observe que isso geralmente é apenas um problema do Windows. Portanto, não é necessário substituir o $(BaseIntermediateOutputPath) em ambientes baseados em Mac ou Linux. No entanto, talvez você queira fazer substituições em todos os lugares para manter a consistência.