问题描述
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” 不能修复此错误。
解决方法:
-
将
<AndroidEnableAssemblyCompression>false</AndroidEnableAssemblyCompression>
添加到csproj的发行版中。 (我已经确认这一方法可行。)但这可能会导致apk大小增加。 ( UPDATE:似乎不会增加apk大小) -
启用项目链接。 (很遗憾,对于某些项目,这很难实现)
-
以管理员身份运行Visual Studio。 (我已经确认可以在预览版安装中使用此功能,但不准备在常规安装中使用)
-
添加用户修改权限
C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\IDE\ReferenceAssemblies\Microsoft\Framework\MonoAndroid\
(这有点像(3),但不太极端。(我已经确认了这个作品))
在准备要在VS19中存档的android应用时,我遇到了这个问题,发现将链接设置为“仅SDKs程序集”对我来说可以解决该问题,希望对您有所帮助。