Как узнать, на каком уровне API был введен класс Android? - PullRequest
1 голос
/ 17 марта 2020

Я создал новый проект 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 (и сдался, потому что я не хочу нацеливать что-то столь ограничивающее ). Кто-то комментирует другой вопрос предположил, что это не так, поэтому этот вопрос имеет два аспекта.

  1. Где можно найти, какой уровень API предназначен для конкретного класса? В документации о WebViewAssetLoader ничего не сказано.

  2. Я что-то упустил в своем проекте, например дополнительные JAR-файлы, которые являются необязательными?

1 Ответ

1 голос
/ 17 марта 2020

и я пришел к выводу, что необходимый мне API был 28

Это не совсем то, что здесь происходит.

Вы пытаетесь импортировать androidx.webkit.WebViewAssetLoader. Первый сегмент этого пакета androidx. Каждый androidx класс приходит из библиотеки. Очевидно, у вас просто нет этой библиотеки.

В идеальном мире вы сможете посетить официальные JavaDocs для этого класса и узнать, какая библиотека Jetpack содержит ее. Это не идеальный мир.

Так вот почему я go из-за проблем с поддержкой AndroidX Tech , чтобы заполнить некоторые из этих пробелов в документации. Если вы выберете «W *» в раскрывающемся списке «Классы», вы обнаружите, что WebViewAssetLoader является частью androidx.webkit:webkit библиотеки , версии 1.1.0 или выше.

Прямо сейчас (2020-03-17), 1.2.0 является самой последней версией, поэтому добавьте:

implementation "androidx.webkit:webkit:1.2.0"

к вашему dependencies в build.gradle вашего модуля, и вы должны хорошо go.

...