Erreur .NET pour Android APT2264
L’outil aapt2
ne peut pas résoudre l’un des fichiers qu’il a passés.
Cela est généralement dû au fait que le chemin d’accès est plus long que la longueur maximale autorisée sur les fenêtres.
La meilleure façon d’éviter cela consiste à s’assurer que votre projet n’est pas situé dans la structure des dossiers. Par exemple, si vous créez tous vos projets dans des dossiers tels que
C:\Users\shelly\Visual Studio 2022\Android\MyProjects\Com.SomeReallyLongCompanyName.MyBrillantApplication\MyBrilliantApplicaiton.Android\
vous pouvez rencontrer des problèmes avec non seulement aapt2
mais aussi la compilation à l’avance. Le fait de garder les noms de votre projet et les structures de dossiers courts et concis vous aidera à contourner ces problèmes. Par exemple, au lieu du fichier ci-dessus, vous pouvez utiliser
C:\Work\Android\MyBrilliantApp
Ce qui est beaucoup plus court et beaucoup moins susceptible de rencontrer des problèmes de chemin d’accès.
Toutefois, cela n’est pas toujours possible. Parfois, un projet ou un environnement nécessite des structures de dossiers approfondies. L’activation de la prise en charge des chemins longs dans Windows peut être suffisante pour que votre projet fonctionne. Vous trouverez plus d’informations sur la procédure à suivre ici.
Si la prise en charge du chemin d’accès long ne fonctionne pas en modifiant l’emplacement du chemin d’accès $(BaseIntermediateOutputPath)
peut aider à résoudre ces problèmes. Pour que cela fonctionne, le paramètre DOIT être modifié avant la génération ou la restauration. Pour ce faire, vous pouvez utiliser la prise en charge de MSBuild Directory.Build.props
.
Création d’un Directory.Build.props
fichier dans votre solution ou répertoire de projet qui redéfinit la $(BaseIntermediateOutputPath)
valeur quelque part plus proche de la racine du lecteur avec résoudre ces problèmes. L’ajout d’un fichier avec le contenu suivant crée le obj
répertoire dans un autre emplacement de votre choix.
<Project>
<PropertyGroup>
<BaseIntermediateOutputPath Condition=" '$(OS)' == 'Windows_NT' ">C:\Intermediate\$(ProjectName)</BaseIntermediateOutputPath>
<BaseIntermediateOutputPath Condition=" '$(OS)' != 'Windows_NT' ">/tmp/Intermediate/$(ProjectName)</BaseIntermediateOutputPath>
</PropertyGroup>
</Project>
L’utilisation de cette technique réduit les longueurs des chemins envoyés aux différents outils comme aapt2
.
Notez qu’il s’agit généralement uniquement d’un problème Windows. Il n’est donc pas nécessaire de remplacer les $(BaseIntermediateOutputPath)
environnements Mac ou Linux. Toutefois, vous souhaiterez peut-être remplacer partout pour être cohérent.