【问题标题】:How to ignore @JavascriptInterface annotation with builds under API 17 -Android如何在 API 17 -Android 下使用构建忽略 @JavascriptInterface 注释
【发布时间】:2013-10-01 14:33:21
【问题描述】:

@JavascriptInterface 注释适用于 api 17 及更高版本。对于我的项目,无法找到注释,因为我的目标 api 设置为 13:

在我的清单中,min sdk 是 11:

 <uses-sdk
    android:minSdkVersion="11"
    android:targetSdkVersion="18" />

为什么我必须进入项目构建目标(例如,Eclipse 中的项目 > 属性 > Android)并将其更改为 API 17+ 作为解决方案。现在,当我真正想做的只是忽略 API 17 以下任何内容的注释时,我必须针对该 SDK 进行构建。无论如何我可以做到吗?我不喜欢针对 api 17 构建然后发现我的代码无法在以前的版本上运行的想法。我的目标是确保我的应用程序可以在 api 13 到 18 上运行。如果 commonsWare 在附近,也许他可以建议我缺少的东西......

【问题讨论】:

  • JavaScript 桥接是 API 50.56.33.56/blog/?p=314。
  • @domen 从技术上讲,这似乎是所有高于 2.3 版本的安全问题,在没有 @JavascriptInterface 的情况下完成 - 除了 4.2+,当使用 @JavascriptInterface 指令编译时。见stackoverflow.com/questions/6415882/…

标签: javascript android api build annotations


【解决方案1】:

对于我的项目,无法找到注释,因为我的目标 api 设置为 13:

然后解决这个问题,或者将您的android:targetSdkVersion 设置得足够低以至于您不需要@JavascriptInterface

为什么我必须进入项目构建目标(例如,Eclipse 中的 Project > Properties > Android)并将其更改为 API 17+ 作为解决方案。

因为@JavascriptInterface 在 API 级别 17 之前不存在,就像DisplayManager 在 API 级别 17 之前不存在一样。

现在我必须针对该 SDK 进行构建,而我真正想做的只是忽略 API 17 以下任何内容的注释。

由于您的构建目标除了对您可用的类、方法、注释等之外没有任何影响,因此我看不出有什么问题。

我不喜欢针对 api 17 构建然后发现我的代码无法在以前的版本上运行的想法。

一年多来,Lint 一直在报告 API 级别违规。只要确保您的android:minSdkVersion 设置正确。

毕竟,您已经在依赖这个,因为您的 android:minSdkVersion 设置为 11,而您的构建目标目前设置为 13。这意味着您正在计算 Lint 来报告您在哪里使用 API 级别 12 和 API 级别 13 API,以便您可以正确处理它们。您通过提高构建目标所做的一切就是提高您依赖 Lint 的事情的数量。

【讨论】:

    猜你喜欢
    • 2014-06-24
    • 1970-01-01
    • 2022-10-19
    • 2014-11-20
    • 1970-01-01
    • 1970-01-01
    • 2015-08-05
    • 2015-10-19
    • 2015-05-31
    相关资源
    最近更新 更多