gpt4 book ai didi

android - Xamarin.Android 应用程序上的 Vague Dotfuscator 错误

转载 作者:行者123 更新时间:2023-11-29 18:39:45 25 4
gpt4 key购买 nike

在我的 Xamarin.Android 应用的发布版本上运行 Dotfuscator 时,出现以下错误: enter image description here

如果我禁用 Dotfuscator,则一切正常。奇怪的是它在以前版本的应用程序上运行良好。在这个新版本的应用程序中,我只添加了一些 Android ContentProvider 和一个 NuGet 包。没有其他的。有什么想法吗?


更新

因此,正如 Joe Sewel 所解释的那样,从技术上讲,问题不在于 Dotfuscator,而在于 Xamarin.Android。来自 Xamarin 的系统在生成 Java 类时,会根据从 .NET 中间语言文件中提取的字符串填充它们的名称,而无需首先检查这些字符串是否真的可以用作 Java 类名。

在我的案例中,问题是因为我的项目中有两个 太多混淆的 C# 类。 Dotfuscator 正在将我的一个类重命名为 do(在经过正常的重命名周期之后:abacad,等等)。显然,do不能作为Java类名使用,因为它是Java的保留关键字,导致后来的Xamarin工具出现语法错误。删除或让 Dotfuscator 忽略我项目中的任何两个类,导致 Dotfuscator 在其循环中无法到达 do 名称,问题已解决。因此,在 Xamarin.Android 中修复此错误之前,您的项目中会出现混淆太多类的情况。

最佳答案

似乎正在发生的事情是 Dotfuscator 正在将一个类型重命名为 do - 这对于非库 .NET Framework 项目来说是安全的,因为 .NET 中间语言不保留这个单词。然后,Xamarin.Android 的“胶水”代码基于混淆的 .NET 程序集的类型名称创建 Java 代码,并且由于 do 是 Java 中的保留字,这会导致 Java 编译器错误。

要解决此问题,您可以使用 Dotfuscator Community 用户界面来 exclude正在重命名的类型。您可以使用重命名映射文件(例如,DotfuscatorReports\Release\Renaming.xml)查看原始源代码名称和混淆名称之间的映射,包括内置 decoding tool .

我在 Dotfuscator 团队工作,并以该身份回答问题。我也filed an issue with Xamarin ,链接到这个问题,关于这些错误。

关于android - Xamarin.Android 应用程序上的 Vague Dotfuscator 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53291247/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com