归档Xamarin Android应用程序出现错误XABLD7019

问题描述

VS 2019版本16.7.1,Xamarin形式v4.8.0.1269

以前工作过,但是现在归档Android App失败(iOS OK)。我已经更新了Android SDK。

错误是(记录设置为诊断):

XABLD7019: System.UnauthorizedAccessException: Access to the path 'C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\ReferenceAssemblies\Microsoft\Framework\MonoAndroid\v1.0\Java.Interop.dll.lz4' is denied.
   at System.IO.__Error.WinIOError(Int32 errorCode,String maybeFullPath)
   at System.IO.FileStream.Init(String path,FileMode mode,FileAccess access,Int32 rights,Boolean useRights,FileShare share,Int32 bufferSize,FileOptions options,Security_ATTRIBUTES secAttrs,String msgPath,Boolean bFromProxy,Boolean useLongPath,Boolean checkHost)
   at System.IO.FileStream..ctor(String path,FileShare share)
   at Xamarin.Android.Tasks.AssemblyCompression.Compress(AssemblyData data)
   at Xamarin.Android.Tasks.BuildApk.<AddAssemblies>g__CompressAssembly|138_1(ITaskItem assembly,<>c__displayClass138_0& )
   at Xamarin.Android.Tasks.BuildApk.AddAssemblies(ZipArchiveEx apk,Boolean debug,Boolean compress,IDictionary`2 compressedAssembliesInfo)
   at Xamarin.Android.Tasks.BuildApk.ExecuteWithAbi(String[] supportedAbis,String apkInputPath,String apkOutputPath,IDictionary`2 compressedAssembliesInfo)
   at Xamarin.Android.Tasks.BuildApk.RunTask()
   at Xamarin.Android.Tasks.AndroidTask.Execute()

文件夹中有一个名为“ Java.Interop.dll”的文件,但没有一个名为“ Java.Interop.dll.lz4”的文件

有人对导致这种情况的原因有任何想法吗?

解决方法

更新:升级到Visual Studio 16.7.5可以解决此问题。

更新为Visual Studio“ 16.8.0 Preview 1” 不能修复此错误。

解决方法:

  1. <AndroidEnableAssemblyCompression>false</AndroidEnableAssemblyCompression>添加到csproj的发行版中。 (我已经确认这一方法可行。)但这可能会导致apk大小增加。 ( UPDATE:似乎不会增加apk大小

  2. 启用项目链接。 (很遗憾,对于某些项目,这很难实现

  3. 以管理员身份运行Visual Studio。 (我已经确认可以在预览版安装中使用此功能,但不准备在常规安装中使用

  4. 添加用户修改权限 C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\IDE\ReferenceAssemblies\Microsoft\Framework\MonoAndroid\ (这有点像(3),但不太极端。(我已经确认了这个作品))

enter image description here

,

在准备要在VS19中存档的android应用时,我遇到了这个问题,发现将链接设置为“仅SDKs程序集”对我来说可以解决该问题,希望对您有所帮助。