Errore .NET per Android APT2264
Lo strumento aapt2
non è in grado di risolvere uno dei file passati.
Questo è in genere causato dalla lunghezza del percorso maggiore rispetto alla lunghezza massima consentita nelle finestre.
Il modo migliore per evitare questo problema consiste nel garantire che il progetto non si trovi in profondità nella struttura di cartelle. Ad esempio, se si creano tutti i progetti in cartelle, ad esempio
C:\Users\shelly\Visual Studio 2022\Android\MyProjects\Com.SomeReallyLongCompanyName.MyBrillantApplication\MyBrilliantApplicaiton.Android\
si possono riscontrare problemi con non solo aapt2
ma anche la compilazione In anticipo. Mantenere brevi i nomi dei progetti e le strutture di cartelle, conciso consentirà di risolvere questi problemi. Ad esempio, anziché quello precedente, è possibile usare
C:\Work\Android\MyBrilliantApp
Che è molto più breve e molto meno probabile che si verifichino problemi di percorso.
Tuttavia, questo non è sempre possibile. A volte un progetto o un ambiente richiede strutture di cartelle profonde. L'abilitazione del supporto di percorsi lunghi in Windows potrebbe essere sufficiente per far funzionare il progetto. Per informazioni dettagliate su come eseguire questa operazione, vedere qui.
Se il supporto di percorsi lunghi non funziona modificando la posizione di $(BaseIntermediateOutputPath)
può aiutare a risolvere questi problemi. Affinché questa operazione funzioni, è necessario modificare l'impostazione prima che si verifichi qualsiasi compilazione o ripristino. A tale scopo, è possibile usare il supporto di MSBuild Directory.Build.props
.
Creazione di un Directory.Build.props
file nella directory della soluzione o del progetto che ridefinisce in $(BaseIntermediateOutputPath)
un punto più vicino alla radice dell'unità con la risoluzione di questi problemi. L'aggiunta di un file con il contenuto seguente creerà la obj
directory in un percorso diverso di propria scelta.
<Project>
<PropertyGroup>
<BaseIntermediateOutputPath Condition=" '$(OS)' == 'Windows_NT' ">C:\Intermediate\$(ProjectName)</BaseIntermediateOutputPath>
<BaseIntermediateOutputPath Condition=" '$(OS)' != 'Windows_NT' ">/tmp/Intermediate/$(ProjectName)</BaseIntermediateOutputPath>
</PropertyGroup>
</Project>
L'uso di questa tecnica ridurrà le lunghezze dei percorsi inviati ai vari strumenti, ad esempio aapt2
.
Si noti che in genere si tratta solo di un problema di Windows. Non è quindi necessario eseguire l'override di in $(BaseIntermediateOutputPath)
ambienti basati su Mac o Linux. Tuttavia, è possibile eseguire l'override ovunque sia coerente.