Baca dalam bahasa Inggris

Bagikan melalui


.NET untuk APT2264 kesalahan Android

Masalah

Alat aapt2 ini tidak dapat menyelesaikan salah satu file yang diteruskannya. Ini umumnya disebabkan oleh jalur yang lebih panjang dari panjang Jalur Maksimum yang diizinkan pada jendela.

Solusi

Cara terbaik untuk menghindari hal ini adalah dengan memastikan bahwa proyek Anda tidak terletak jauh di dalam struktur folder. Misalnya jika Anda membuat semua proyek Anda di folder seperti

C:\Users\shelly\Visual Studio 2022\Android\MyProjects\Com.SomeReallyLongCompanyName.MyBrillantApplication\MyBrilliantApplicaiton.Android\

Anda mungkin mengalami masalah dengan tidak hanya aapt2 tetapi juga kompilasi Sebelumnya. Menjaga nama proyek dan struktur folder Anda tetap pendek, ringkas akan membantu mengatasi masalah ini. Misalnya, alih-alih hal di atas yang dapat Anda gunakan

C:\Work\Android\MyBrilliantApp

Yang jauh lebih pendek dan jauh lebih kecil kemungkinannya untuk mengalami masalah jalur.

Namun ini tidak selalu mungkin. Terkadang proyek atau lingkungan memerlukan struktur folder yang mendalam. Mengaktifkan dukungan jalur panjang di Windows mungkin cukup untuk membuat proyek Anda berfungsi. Detail tentang cara melakukan ini dapat ditemukan di sini.

Jika dukungan jalur panjang tidak berfungsi mengubah lokasi $(BaseIntermediateOutputPath) dapat membantu menyelesaikan masalah ini. Agar ini berfungsi, pengaturan HARUS diubah sebelum build atau pemulihan APA PUN terjadi. Untuk melakukan ini, Anda dapat menggunakan dukungan MSBuild Directory.Build.props .

Membuat Directory.Build.props file dalam solusi atau direktori proyek Anda yang mendefiniskan $(BaseIntermediateOutputPath) ulang ke suatu tempat yang lebih dekat dengan akar drive dengan menyelesaikan masalah ini. Menambahkan file dengan konten berikut akan membuat obj direktori di lokasi lain yang Anda pilih.

<Project>
  <PropertyGroup>
      <BaseIntermediateOutputPath Condition=" '$(OS)' == 'Windows_NT' ">C:\Intermediate\$(ProjectName)</BaseIntermediateOutputPath>
      <BaseIntermediateOutputPath Condition=" '$(OS)' != 'Windows_NT' ">/tmp/Intermediate/$(ProjectName)</BaseIntermediateOutputPath>
  </PropertyGroup>
</Project>

Menggunakan teknik ini akan mengurangi panjang jalur yang dikirim ke berbagai alat seperti aapt2. Perhatikan bahwa ini umumnya hanya masalah Windows. Jadi tidak perlu mengambil alih $(BaseIntermediateOutputPath) lingkungan berbasis Mac atau Linux. Namun Anda mungkin ingin mengambil alih di mana saja agar konsisten.