首先,抱歉我的英文
今天,我遇到了一个不可能解决的问题...
我有两部分申请:
在发布中,如果链接器设置为无,则应用程序就像魅力一样,但是当我想将值设置为仅限SDK时(用于降低APK大小)。我收到了一个错误(见下文)
堆栈跟踪的一部分:
System.Runtime.Serialization.InvalidDataContractException: Error on deserializing read-only members in the class:
No set method for property 'Message' in type 'System.ServiceModel.ExceptionDetail'.
at (wrapper managed-to-native) System.Object:__icall_wrapper_mono_delegate_end_invoke (object,intptr)
at (wrapper delegate-end-invoke) <Module>:end_invoke_object__this___object[]&_IAsyncResult (object[]&,System.IAsyncResult)
PCL呼叫的AsyncCompletedEventArgs中出现错误
我认为,我需要创建一个“linkDescrption”文件:
<?xml version="1.0" encoding="utf-8" ?>
<linker>
<assembly fullname="System.ServiceModel">
<type fullname="System.ServiceModel.ExceptionDetail" preserve="fields">
<field name="Message" />
</type>
</assembly>
</linker>
但我不知道我需要在这个文件中添加什么..
系统信息:
提前致谢
答案 0 :(得分:0)
您已经接近解决方案了 - 实际上,我认为您的链接器配置文件应该可以正常工作。您必须将其构建操作设置为“LinkDescription”。
但是,您的方法非常精细。我可能会尝试阻止整个程序集的链接,看看APK的大小是否足够小以满足您的要求。您可以在Android项目的CSPROJ文件中使用<AndroidLinkSkip/>
element:
<PropertyGroup>
<AndroidLinkSkip>System.ServiceModel;System.Runtime.Serialization</AndroidLinkSkip>
</PropertyGroup>
请注意,在上面的示例中,我还包含System.Runtime.Serialization
,因为它也会导致您遇到问题。随意移除并尝试不用。
https://developer.xamarin.com/guides/android/under_the_hood/build_process/