gpt4 book ai didi

android - Android Lint 中的 NewApi 检查是否仅基于类 SDK 级别?

转载 作者:行者123 更新时间:2023-11-30 03:33:33 28 4
gpt4 key购买 nike

我是 Android 开发的新手,想了解一下 Lint 工具和 NewApi 检查。做了一些测试后,我有点困惑。

在 IntelliJ IDEA 中创建新的 Android 应用程序项目后,我在 onCreate 方法中添加了一些代码,所以它现在看起来像这样:

@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

Display d = getWindowManager().getDefaultDisplay();
Point size = new Point();

d.getSize(size); // API level 13
isDestroyed(); // API level 17

NativeActivity nativeActivity = new NativeActivity(); // API level 11
nativeActivity.getContentResolver(); // API level 11
Camera.CameraInfo cameraInfo = new Camera.CameraInfo(); // API level 9
boolean canDisableShutterSound = cameraInfo.canDisableShutterSound; // API level 17
}

在我的 list 文件中

<uses-sdk android:minSdkVersion="7" android:targetSdkVersion="17" />

编译项目并从命令行运行 lint 后:

lint --check NewApi --classpath c:\_dev\TestNewApi\out c:\_dev\TestNewApi

我得到了以下输出:

Scanning TestNewApi: .......
out\production\TestNewApi\com\example\TestNewApi\MyActivity.class: Error: Call requires API level 9 (current min is 7): android.app.NativeActivity#getContentResolver [NewApi]
out\production\TestNewApi\com\example\TestNewApi\MyActivity.class: Error: Call requires API level 9 (current min is 7): new android.app.NativeActivity [NewApi]
out\production\TestNewApi\com\example\TestNewApi\MyActivity.class: Error: Call requires API level 9 (current min is 7): new android.hardware.Camera.CameraInfo [NewApi]
out\production\TestNewApi\com\example\TestNewApi\MyActivity.class: Error: Field requires API level 9 (current min is 7): android.hardware.Camera.CameraInfo#canDisableShutterSound [NewApi]
4 errors, 0 warnings

所以没有关于 getSize 和 isDestroyed 方法的提示。而将minSdkVersion改为9后,检查结果为:

Scanning TestNewApi: .......

No issues found.

它寻找我,就像在这两种情况下只检查类,如果类是在 minSdkVersion 或之后引入的,那么一切正常。这是预期的行为吗?还是我遗漏了什么?

最佳答案

Is this the expected behavior?

恕我直言,不。我在 Eclipse 中看到了相同的行为,恕我直言,这是一个错误。通常,Lint 会提示比您的 android:minSdkVersion@TargetApi() 更新的方法。我不太确定为什么它不在这里这样做。

我已经提交了an issue related to this .

关于android - Android Lint 中的 NewApi 检查是否仅基于类 SDK 级别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17009892/

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