Xamarin.forms Xamarin表单Android发布版本启用链接时未生成

Xamarin.forms Xamarin表单Android发布版本启用链接时未生成,xamarin.forms,xamarin.android,msbuild,Xamarin.forms,Xamarin.android,Msbuild,我有一个Xamarin表单解决方案,它可以成功地为所有项目构建,同时以调试模式为目标 当我切换到目标版本时,我可以成功构建iOS项目,但无法构建Android项目 我已经能够将范围缩小到“链接”是启用还是禁用。当链接设置为“无”时,我可以在发布版中生成。只要我尝试一个链接设置为“仅sdk程序集”的发布版本,该版本就会频繁出现,即没有错误,只是挂起,要求我在任务管理器中终止MSBUILD 这已经在不同机器上的许多版本的VisualStudio上进行了尝试。 Xamarin表单版本:4.4 目标An

我有一个Xamarin表单解决方案,它可以成功地为所有项目构建,同时以调试模式为目标

当我切换到目标版本时,我可以成功构建iOS项目,但无法构建Android项目

我已经能够将范围缩小到“链接”是启用还是禁用。当链接设置为“无”时,我可以在发布版中生成。只要我尝试一个链接设置为“仅sdk程序集”的发布版本,该版本就会频繁出现,即没有错误,只是挂起,要求我在任务管理器中终止MSBUILD

这已经在不同机器上的许多版本的VisualStudio上进行了尝试。 Xamarin表单版本:4.4 目标Android版本:9.0

我怎样才能在启用链接的情况下使其成为内置版本


谢谢

通常你会看到链接错误,但我在使用firebase为Android构建发布模式时遇到了类似的问题。如果链接仅针对Sdk程序集,则应检入Android项目属性。若这一个是确定的,尝试在调试模式下设置链接程序集,并运行应用程序。如果在输出窗口中出现链接错误,请记下它们。现在,您的下一步是为proguard设置其他配置文件。将proguard.cfg文件添加到Android项目中,并确保将构建操作设置为proguard配置。配置proguard以保留出现链接错误的类

修复常见链接错误的proguard配置示例:

-keep class com.google.android.gms.** { *; }
-dontwarn com.google.android.gms.**
-keep class org.apache.http.** { *; }
-keep class org.apache.** { *; }
-dontwarn org.apache.**
-dontwarn org.apache.http.**
-dontwarn org.apache.commons.**
-keep class android.support.v7.widget.** { *; }
-dontwarn android.support.v7.widget.**
-keep class android.support.v4.widget.Space { *; }
-dontwarn android.support.v4.widget.Space
-dontwarn com.google.android.gms.**
-keep class com.google.android.gms.** { *; }

通常你会看到链接错误,但我在用firebase为Android构建发布模式时遇到了类似的问题。如果链接仅针对Sdk程序集,则应检入Android项目属性。若这一个是确定的,尝试在调试模式下设置链接程序集,并运行应用程序。如果在输出窗口中出现链接错误,请记下它们。现在,您的下一步是为proguard设置其他配置文件。将proguard.cfg文件添加到Android项目中,并确保将构建操作设置为proguard配置。配置proguard以保留出现链接错误的类

修复常见链接错误的proguard配置示例:

-keep class com.google.android.gms.** { *; }
-dontwarn com.google.android.gms.**
-keep class org.apache.http.** { *; }
-keep class org.apache.** { *; }
-dontwarn org.apache.**
-dontwarn org.apache.http.**
-dontwarn org.apache.commons.**
-keep class android.support.v7.widget.** { *; }
-dontwarn android.support.v7.widget.**
-keep class android.support.v4.widget.Space { *; }
-dontwarn android.support.v4.widget.Space
-dontwarn com.google.android.gms.**
-keep class com.google.android.gms.** { *; }

这似乎是一个类似的问题:

解决方案是在项目文件中删除对可为null的引用类型(enable)的显式支持

您可以在自己的项目文件中删除此支持,但如果引用的第三方库中有此支持,您可能会运气不佳。将这些库更新到它们的最新版本,如果仍然没有帮助,唯一的选择就是禁用链接


问题是在最新的VisualStudio中,与android链接器不兼容,并且在某些情况下支持上述可空引用。这将在即将发布的VisualStudio中修复,并已在预览版中提供。如果您可以选择使用VS 2019的预览版,那么这也会起作用。

这似乎与以下问题类似:

解决方案是在项目文件中删除对可为null的引用类型(enable)的显式支持

您可以在自己的项目文件中删除此支持,但如果引用的第三方库中有此支持,您可能会运气不佳。将这些库更新到它们的最新版本,如果仍然没有帮助,唯一的选择就是禁用链接


问题是在最新的VisualStudio中,与android链接器不兼容,并且在某些情况下支持上述可空引用。这将在即将发布的VisualStudio中修复,并已在预览版中提供。如果您可以选择使用VS 2019的预览版,那么这也会起作用。

>当我切换到目标版本时,我可以成功构建iOS项目,但无法构建Android项目。android有什么错误?一点错误都没有。只是冻结,不能再次使用visual studio,直到我在任务管理器中杀死MSBUILD奇怪的是,没有任何错误,不能建议您使用任何技巧。即使一切看起来都很好>当我切换到目标版本时,我可以成功构建iOS项目,但无法构建Android项目。android有什么错误?一点错误都没有。只是冻结,不能再次使用visual studio,直到我在任务管理器中杀死MSBUILD奇怪的是,没有任何错误,不能建议您使用任何技巧。甚至一切看起来都很好,这就是问题所在。VLC nuget包导致链接器出现问题。在将其更新为最新版本的VLC nuget软件包后,问题得到了解决。VLC nuget包导致链接器出现问题。在将其更新为VLC nuget包的最新版本后,问题得到了解决