android-fragments 查找比minSdk 21更高的api 23调用

uqzxnwby  于 2022-11-14  发布在  Android
关注(0)|答案(3)|浏览(167)

你好,有一些关于这个主题的答案,但到目前为止没有一个对我有效。我的build.gradle看起来像这样

compileSdkVersion 23
 buildToolsVersion "23.0.3"
 minSdkVersion 21
 targetSdkVersion 23

在我的Fragments中的某个地方,我调用了方法getContext(),这使得应用程序在Lollipop 5.0设备上崩溃,而在Marshmallow 6.0上运行良好。
Fragment是从不支持的库包导入的。

import android.app.Fragment;

因为我在23上有compileSDK,所以我可以在Fragment中调用方法getContext()来获取Context。这将导致Lollipop 5.0和5.1上的崩溃,因为该方法是用API 23而不是API 21,22添加的。
我的问题是,当最小SDK低于此值时,我如何在Android Studio中找到如此高级别的调用?

06odsfpq

06odsfpq1#

当min SDK低于此级别时,我如何在Android Studio中找到如此高级别的调用?
AFAIK Android Studio通常会在开发人员使用任何方法时发出警告,这些方法在应用程序定义的minSDKVersion之前不完全向后兼容。因此,在该时间点,您可以检查设备的当前版本,并相应地调用其他相关方法。
然而,由于某种原因,它在调用getContext()方法时没有显示任何lint警告。所以,看起来我们现在必须处理它。

c8ib6hqw

c8ib6hqw2#

请转到

  • 〉分析-〉检查代码-〉运行代码检查
    然后在结果视图中有
"Project Name"
    - Android > Lint > Correctness
        - calling new methods in older versions

在(调用旧版本中的新方法)下,应列出所有不可用的调用

svgewumm

svgewumm3#

现在我们已经到了2022年,我找到了一个更合适的解决方案。在 Terminal 中运行gradlew lint命令,等待它完成将生成一个报告文件。

Wrote HTML report to file:///C:/Users/Administrator/path/to/project/module/build/reports/lint-results-$flavorName$buildType.html

在浏览器中打开此文件,找到InlinedApiNewApi,您将找到所有文件。

相关问题