我正在尝试java绑定到Xamarin表单项目,并且jar包含具有$的类名,以及带有$的变量名。我收到“Unexpected Character $”错误。我试图通过编辑metadata.xml文件来解决它。看来我做错了,请检查以下条目,
对于包含$的类名。我正在使用,
<attr path="/api/package[@name='com.wed.therace']/class[@name='CarDetails$']"
name="obfuscated">false</attr>
表示包含$,
的变量<attr path="/api/package[@name='com.wed.therace']/class[@name='CarDetails$']/fie ld[@name='machineParts$']"
name="obfuscated">false</attr>
得到的
提前致谢,
答案 0 :(得分:0)
您尝试的示例会禁用某些类型或成员的模糊处理。但$
并不一定意味着代码已被混淆。以下是在这种情况下如何做的常见流程:
Error: obj/Debug/src/234.cs (30, 50)
之类的内容。查看此文件并查看第30行中发生的情况。在您的情况下,您会在其名称中看到一个包含$
的字段,这会导致编译错误。注意这个文件中有一个生成器注释行,以// Metadata.xml XPath ... path="/api/package[@name=...]"
开头,就像这样。您只需复制path="..."
部分即可将其用于manifest.xml中的配置。api.xml
(或obj/Debug
取决于您当前配置)的生成的obj/Release
文件。尝试查找您遇到问题的成员定义。您应该能够找到您的字段,方法或其他成员,其中包含static
,deprecated
,obfuscated
等所有属性。您可以通过元数据转换影响什么。现在,根据您的具体情况,请尝试以下方法之一:
remove-node
元数据元素删除它。如上所述,从生成的源中获取path
值。请记住,如果您不需要,可以删除错误成员或整个类型。<attr path="<copied_from_sources>" name="managedName">ValidNameHere</attr>
。有时您需要清理obj
文件夹才能应用更改。通常它的工作正常。