如何查找 Android 类引入了哪个 API 级别?

Posted

技术标签:

【中文标题】如何查找 Android 类引入了哪个 API 级别?【英文标题】:How to find which API level an Android class has been introduced? 【发布时间】:2020-06-28 13:19:37 【问题描述】:

我创建了一个新的 android 项目,以 API 15 为目标并使用 androidx。自动生成的Hello world 是:

package com.example.myapplication;

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;

public class MainActivity extends AppCompatActivity 
    @Override
    protected void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    

向其添加import androidx.webkit.WebViewAssetLoader 失败并显示Cannot resolve symbol webkit

所以我尝试创建另一个项目,这次以 API 级别 27 为目标,结果相同,我得出的结论是我需要的 API 是 28(并放弃了,因为我不想针对如此限制的东西)。有人在another question 上发表评论认为情况并非如此,因此这个问题是双重的。

    在哪里可以找到特定类的目标 API 级别? documentation on WebViewAssetLoader就不说了。

    我的项目中是否缺少某些内容,例如额外的 JAR 是可选的?

【问题讨论】:

【参考方案1】:

我得出结论,我需要的 API 是 28

这并不是真正发生的事情。

您正在尝试导入androidx.webkit.WebViewAssetLoader。该包的第一部分是androidx。每个androidx 类都来自一个库。显然,您根本没有那个库。

在理想情况下,您可以访问 the official JavaDocs for that class 并被告知哪个 Jetpack 库包含它。这不是一个理想的世界。

所以,这就是我费力维护AndroidX Tech 来填补这些文档空白的原因。如果您在“类”下拉菜单中选择“W*”,您将找到WebViewAssetLoader is part of the androidx.webkit:webkit library,版本1.1.0 或更高版本。

现在(2020-03-17),1.2.0 是最新版本,所以添加:

implementation "androidx.webkit:webkit:1.2.0"

发送到您模块的build.gradle 中的dependencies,您应该一切顺利。

【讨论】:

哇,谁能想到会发生这样的事情?看起来一团糟......感谢您维护这样一个网站! +1 "这不是理想的世界"。来自 .net,大多数事情都是 nuget 搜索,到目前为止,Java(tm) 的处理方式是一段艰难的旅程。

以上是关于如何查找 Android 类引入了哪个 API 级别?的主要内容,如果未能解决你的问题,请参考以下文章

Java:知道一个类的路径,如何知道这个类是来自哪个Jar包呢

关于eclipse中java项目管理中如何查找哪个类文件包含main

Android REST API 连接

Android:Fragment 新的 getContext() 方法是哪个上下文?

Android音频开发:音频数据的编解码

如何在eclipse中看哪个类继承某个接口