使用不推荐使用的 API 时,Android Studio 无法编译

Posted

技术标签:

【中文标题】使用不推荐使用的 API 时,Android Studio 无法编译【英文标题】:Android Studio does not compile when using deprecated API 【发布时间】:2013-06-01 07:13:51 【问题描述】:

我在 android Studio 上编译和运行我的应用程序时遇到问题。

问题:我不喜欢使用已弃用的 API。 (来自gradlew compileDebug --stacktrace。Full stacktrace here

Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.

背景:

我正在使用 PreferenceActivity,它使用 onPreferenceTreeClickaddPreferencesFromResource(int),这两种方法都已弃用。 我正在使用 ABS 和 ViewPager 库,它们似乎也在其代码中使用了不推荐使用的方法。

问题:

是否可以将运行配置编辑到可以成功编译尽管已弃用的 API 的范围内? 可以更改/编辑/修改哪些内容以使构建成功编译?

鉴于我计划支持 ICS 之前的设备并且使用已弃用的 APIS 应该不会有问题。

编辑

因此,命令提示符下的编译器表明构建成功,问题是直接从 Android Studio 运行,构建过程失败:

FAILURE: Build failed with an exception.

问题似乎是我不知道如何解决,流行的线路是:

UNEXPECTED TOP-LEVEL EXCEPTION:
java.lang.IllegalArgumentException: already added: 

这发生在三个不同的地方:

Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoStubImpl;
Landroid/support/v4/app/ActivityCompatHoneycomb;
Landroid/support/v4/app/LoaderManager;

这里有更多信息:Full Compiler output in Android Studio

* What went wrong:
Execution failed for task ':LaPrensa:dexDebug'.
> Running C:\Users\SkullKandy\AppData\Local\Android\android-studio\sdk\build-tools\android-4.2.2\dx.bat failed. 

【问题讨论】:

至少对于 Ant,这些是警告消息,而不是构建失败的指示。此外,根据您的跟踪,您的构建成功了。 正确,在 Eclipse 上使用 Ant 构建就像一个魅力,在 Android studio/gradle 中尝试似乎是个问题。 既然您的跟踪表明它编译成功,那么您有什么证据表明存在问题? 请检查添加的详细信息。 您似乎在提取两个(或更多)独立的 Android 支持 JAR 副本。由于 ActionBarSherlock 已经有一个,您应该能够摆脱您自己的该 JAR 副本。话虽如此,我的建议是针对 Ant 和 Eclipse,我不知道 Android Studio 是否还有其他首选解决方案。 【参考方案1】:

您只需将此代码添加到 build.gradle(在 android 部分)

lintOptions 
    abortOnError false

【讨论】:

如果你使用这个 gradle 就不会再显示错误了,那不是很有用! @stef With abortOnError false Gradle 仍然会显示错误,但不会因为它们而中止构建。 没错,我应该说“发生错误时您不会收到通知”,我的错

以上是关于使用不推荐使用的 API 时,Android Studio 无法编译的主要内容,如果未能解决你的问题,请参考以下文章

Android Studio 4 说从 API 26 开始不推荐使用 enterPictureInPicture - 这是不正确的,对吧?

在 Android 6.0 Marshmallow (API 23) 上不推荐使用 getColor(int id)

Android - 不推荐使用的方法和 minApiLevel

Android 谷歌地图 API 位置

Android getResources().getDrawable() 已弃用 API 22

Android P 中不推荐使用的片段