Xamarin.android apk中包含的mscorlib.dll中缺少方法
我在Monodroid中有一个模糊的应用程序,我的问题是apk中包含的mscorlib程序集没有实现System.String.Intern()方法,我的应用程序也不工作 我的混淆器调用这个方法来混淆字符串,我得到一个MissingMethodException。此方法不存在于apk中包含的程序集中,但奇怪的是,它存在于myproject/obj/release/assemblies/mscorlib.dll中 这些文件完全不同。如果我将文件myproject/obj/release/assemblies/mscorlib.dll放在apk中,它可以工作,但这个解决方案是一个糟糕的解决方案,因为应用程序在其他点失败,因为dll的更改导致TypeLoadException 有人能告诉我为什么monodroid使用mscorlib简化文件和替代解决方案吗 谢谢 有人能告诉我为什么monodroid使用mscorlib简化文件和替代解决方案吗 较小的文件用于将应用程序大小减少。链接可能很脆弱,因为链接器不跟踪运行时行为。例如,使用Xamarin.android apk中包含的mscorlib.dll中缺少方法,xamarin.android,Xamarin.android,我在Monodroid中有一个模糊的应用程序,我的问题是apk中包含的mscorlib程序集没有实现System.String.Intern()方法,我的应用程序也不工作 我的混淆器调用这个方法来混淆字符串,我得到一个MissingMethodException。此方法不存在于apk中包含的程序集中,但奇怪的是,它存在于myproject/obj/release/assemblies/mscorlib.dll中 这些文件完全不同。如果我将文件myproject/obj/release/assem
Type.GetType(“Foo”)
将不会保留类型Foo
,因此如果没有其他引用,链接器可能会将其删除
obj\Release\assemblies\mscorlib.dll
是源程序集obj\Release\android/assets/mscorlib.dll
是链接的(较小的)程序集,包含在.apk
中
如果混淆器直接使用
String.Intern()
,这可能表明链接器中存在错误。但是,如果您的模糊处理程序正在使用反射(例如Type.GetMethod()
),那么这将是预期的行为。要修复它,请显式使用String.Intern()
,以便保留该方法。如何使用String.Intern()
?除非您通过反射调用它(因此链接器不会“看到”您的使用),否则它会被删除似乎很奇怪。我在Reflector中看到,apk中包含的程序集mscorlib.dll不使用String.Intern()方法。似乎每个.net模糊处理程序都使用此调用来模糊字符串。你能验证一下mono apk是否包含这种方法吗?谢谢你是对的。如果显式使用它,链接的程序集将包含此方法,并且它可以工作。非常有用。谢谢