【问题标题】:Adding Custom Lint Rules添加自定义 Lint 规则
【发布时间】:2014-10-30 02:02:20
【问题描述】:

我正在关注此 (http://tools.android.com/tips/lint-custom-rules) 页面上的教程。 我被困在这一步:

lint --show MyId

我收到以下错误消息,有什么想法吗?

无法加载自定义规则 jar 文件 /Users/me/.android/lint/CustomLintRule.jar java.lang.NoSuchMethodError: com.android.tools.lint.detector.api.Issue.create(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/android/tools/lint/detector/api/Category;ILcom/ android/tools/lint/detector/api/Severity;Ljava/lang/Class;Ljava/util/EnumSet;)Lcom/android/tools/lint/detector/api/Issue; 在 googleio.demo.MyDetector.(MyDetector.java:16) googleio.demo.MyIssueRegistry.getIssues(MyIssueRegistry.java:15) 在 com.android.tools.lint.client.api.JarFileIssueRegistry.(JarFileIssueRegistry.java:93) 在 com.android.tools.lint.client.api.JarFileIssueRegistry.get(JarFileIssueRegistry.java:70) 在 com.android.tools.lint.client.api.LintClient.addCustomLintRules(LintClient.java:911) 在 com.android.tools.lint.Main.getGlobalRegistry(Main.java:642) 在 com.android.tools.lint.Main.run(Main.java:204) 在 com.android.tools.lint.Main.main(Main.java:113) id 或类别无效 “我的身份证”。

【问题讨论】:

  • 看起来您正在针对 API 的一个版本进行编译并针对另一个版本运行。请参阅创建问题部分中有关使用工具 22 的说明。
  • 当我通过 lint --version 在终端检查时,我使用 lint-api-23.0.2.jar 和我的 lint 版本 23.0.2 编译了 jar。仍然出现同样的错误。
  • 你能发布你得到的代码吗?我猜您正在调用 #create 的 7 个参数版本,因为它找不到那个版本 - 但 Tools 22+ 版本需要 8 个参数,这意味着您在构建时的类路径可能有一些错误。跨度>
  • 实际上我在tools.android.com/tips/lint-custom-rules 上使用完全相同的项目。所以我的代码是,public static final Issue ISSUE = Issue.create("MyId", "我对问题的简要总结", "我对检测器查找内容的总结", "我对问题的详细解释", Category. CORRECTNESS, 6, Severity.WARNING, new Implementation(MyDetector.class, Scope.RESOURCE_FILE_SCOPE));

标签: java android lint


【解决方案1】:

我也一样。

  1. 我使用的是 mac 和 AndroidStudio 0.8.6。
  2. 我在 Eclipse 中使用 lint-api.jar 导出了“customrule.jar” “/Applications/Android Studio.app/sdk/tools/lib”。
  3. 规则的 Eclise 项目使用 lint-api.jar 编译得很好。
  4. 但是,当我运行“lint --show MyId”时,我得到了同样的错误。

所以我下载了 adt-bundle 并尝试在其中使用“lint-api.jar”并且错误消失了。

我认为 AndroidStudio 中包含的“lint-api.jar”有问题...

【讨论】:

  • 嗯,我会尽快尝试的。
  • 而且,这个提示是解决问题的方法吗?
  • 使用最新的lint-api.jar 例如来自android-sdk\tools\lib 也为我解决了这个问题。此特定异常是由前段时间 API 更改引起的。它在“创建问题”部分下的tools.android.com/tips/lint-custom-rules 上进行了描述。
  • 使用来自 adt-bundle-mac-x86_64-20140702 的 lint-api.jar,仍然得到同样的错误。
猜你喜欢
  • 2014-03-28
  • 1970-01-01
  • 2021-03-17
  • 2013-05-20
  • 2019-09-25
  • 2022-01-14
  • 1970-01-01
  • 2011-10-12
  • 2016-02-22
相关资源
最近更新 更多