gpt4 book ai didi

java - 意外字符 $ - Java 绑定(bind)错误

转载 作者:太空狗 更新时间:2023-10-29 14:46:12 24 4
gpt4 key购买 nike

我正在尝试将 java 绑定(bind)到 Xamarin 表单项目,并且 jar 包含带有 $ 的类名以及带有 $ 的变量名。我收到“意外字符 $”错误。我试图通过编辑 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>

正确的做法是什么?我从 https://developer.xamarin.com/guides/android/advanced_topics/binding-a-java-library/customizing-bindings/java-bindings-metadata 得到这个

提前致谢

最佳答案

您尝试的示例禁用了某些类型或成员的混淆。但是$不一定意味着代码已被混淆。以下是您在此类情况下的常见操作流程:

  1. 导航到错误源以查看生成的输出 C# 代码。在您的错误消息中,您很可能会看到类似 Error: obj/Debug/src/234.cs (30, 50) 的内容.查看此文件并查看第 30 行中发生了什么。在您的情况下,您将看到一个包含 $ 的字段。在其名称中导致编译错误。请注意,此文件中有一个以 // Metadata.xml XPath ... path="/api/package[@name=...]" 开头的生成器注释行, 像这样。您可以只复制 path="..."部分将其用于 manifest.xml 中的配置。
  2. 查看生成的 api.xml文件位于 obj/Debug (或 obj/Release 取决于您当前的配置)。尝试查找您遇到问题的成员定义。您应该能够在那里找到您的字段、方法或其他成员及其所有属性,如 static , deprecated , obfuscated等等。这就是您可以通过元数据转换产生的影响。

现在根据您的情况尝试以下操作之一:

  1. 如果您的代码中不需要此类型或成员,只需使用remove-node 将其删除即可。元数据元素。获取 path如上所述生成的源的值。请记住,如果不需要,您可以删除错误成员或整个类型。
  2. 如果您确实需要此成员,请在元数据中定义重命名转换,如下所示:<attr path="<copied_from_sources>" name="managedName">ValidNameHere</attr> .

有时您需要清理 obj文件夹以应用更改。不过通常它工作正常。

关于java - 意外字符 $ - Java 绑定(bind)错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39975237/

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