Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Problematyka
Narzędzie aapt2 nie może rozpoznać jednego z przekazanych plików.
Jest to zwykle spowodowane tym, że ścieżka jest dłuższa niż dozwolona maksymalna długość ścieżki w oknach.
Rozwiązanie
Najlepszym sposobem, aby tego uniknąć, jest upewnienie się, że projekt nie znajduje się głęboko w strukturze folderów. Jeśli na przykład tworzysz wszystkie projekty w folderach, takich jak
C:\Users\shelly\Visual Studio 2022\Android\MyProjects\Com.SomeReallyLongCompanyName.MyBrillantApplication\MyBrilliantApplicaiton.Android\
Możesz napotkać problemy nie tylko z aapt2, ale także z kompilacją Ahead of Time. Utrzymywanie krótkich nazw projektów i struktur folderów, zwięzłe pomoże obejść te problemy. Na przykład zamiast powyższych można użyć
C:\Work\Android\MyBrilliantApp
Jest to znacznie krótsze i znacznie mniej prawdopodobne, aby napotkać problemy ze ścieżką.
Jednak nie zawsze jest to możliwe. Czasami projekt lub środowisko wymaga głębokich struktur folderów. Włączenie obsługi długich ścieżek w systemie Windows może wystarczyć, aby Twój projekt działał. Szczegółowe informacje na temat tego, jak to zrobić, można znaleźć tutaj.
Jeśli obsługa długiej ścieżki nie działa, zmiana lokalizacji obiektu $(BaseIntermediateOutputPath) może pomóc rozwiązać te problemy. Aby to zadziałało, należy zmienić ustawienie przed wystąpieniem dowolnej kompilacji lub przywracania. W tym celu możesz skorzystać z obsługi programu MSBuild Directory.Build.props .
Utworzenie pliku w katalogu rozwiązania lub projektu, który redefiniuje $(BaseIntermediateOutputPath) bliżej korzenia dysku, pomoże rozwiązać te problemy. Dodanie pliku z następującą zawartością spowoduje utworzenie katalogu obj w innej, wybranej lokalizacji.
<Project>
<PropertyGroup>
<BaseIntermediateOutputPath Condition=" '$(OS)' == 'Windows_NT' ">C:\Intermediate\$(ProjectName)</BaseIntermediateOutputPath>
<BaseIntermediateOutputPath Condition=" '$(OS)' != 'Windows_NT' ">/tmp/Intermediate/$(ProjectName)</BaseIntermediateOutputPath>
</PropertyGroup>
</Project>
Użycie tej techniki spowoduje zmniejszenie długości ścieżek wysyłanych do różnych narzędzi, takich jak aapt2.
Należy pamiętać, że jest to zazwyczaj tylko problem z systemem Windows. Nie ma więc potrzeby nadpisywania $(BaseIntermediateOutputPath) w systemach operacyjnych Mac lub Linux. Jednak możesz przesłonić wszędzie, aby być spójne.