다음을 통해 공유


Android용 .NET 오류 APT2264

문제

도구 aapt2 가 전달된 파일 중 하나를 확인할 수 없습니다. 이는 일반적으로 경로가 창에서 허용되는 최대 경로 길이보다 길기 때문에 발생합니다.

솔루션

이를 방지하는 가장 좋은 방법은 프로젝트가 폴더 구조의 깊은 곳에 있지 않도록 하는 것입니다. 예를 들어 다음과 같은 폴더에 모든 프로젝트를 만드는 경우

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

뿐만 아니라 aapt2 미리 미리 컴파일에 문제가 발생할 수 있습니다. 프로젝트 이름과 폴더 구조를 짧게 유지하면 간결하게 이러한 문제를 해결하는 데 도움이 됩니다. 예를 들어 위의 대신 사용할 수 있습니다.

C:\Work\Android\MyBrilliantApp

이는 훨씬 짧고 경로 문제가 발생할 가능성이 훨씬 적습니다.

그러나 이것이 항상 가능한 것은 아닙니다. 경우에 따라 프로젝트 또는 환경에 깊은 폴더 구조가 필요합니다. Windows 에서 긴 경로 지원을 사용하도록 설정하면 프로젝트를 작동하기에 충분할 수 있습니다 . 이 작업을 수행하는 방법에 대한 자세한 내용은 여기에서 확인할 수 있습니다.

긴 경로 지원이 작동하지 않는 경우 위치 변경이 $(BaseIntermediateOutputPath) 이러한 문제를 해결하는 데 도움이 될 수 있습니다. 이렇게 하려면 모든 빌드 또는 복원이 발생하기 전에 설정을 변경해야 합니다. 이렇게 하려면 MSBuild Directory.Build.props 지원을 사용할 수 있습니다.

Directory.Build.props 이러한 문제를 해결하여 드라이브의 루트에 가까운 곳에 다시 정의 $(BaseIntermediateOutputPath) 되는 솔루션 또는 프로젝트 디렉터리에 파일을 만듭니다. 다음 내용이 포함된 파일을 추가하면 디렉터리가 선택한 다른 위치에 생성 obj 됩니다.

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

이 기술을 사용하면 다음과 같은 aapt2다양한 도구로 전송되는 경로의 길이가 줄어듭니다. 이는 일반적으로 Windows 문제일 뿐입니다. 따라서 Mac 또는 Linux 기반 환경을 재정의 $(BaseIntermediateOutputPath) 할 필요가 없습니다. 그러나 모든 위치에서 일관성을 유지하도록 재정의하는 것이 좋습니다.