Вопрос:
Для данного импорта, например,
import androidx.appcompat.app.AppCompatActivity;
Есть ли быстрые и эффективные средства для обратной трассировки, из какой зависимости gradle и из какого репо эта зависимость извлекается из в студии Android? Аналогичная функция представлена быстрой клавишей Ctrl + q для получения документации по тому, что в данный момент находится под курсором, но, насколько я понимаю, это go не выходит за рамки файлов. java. Другими словами, я хотел бы найти какой-нибудь способ отображения дерева зависимостей из данного оператора импорта.
Пример использования:
Например, если у меня есть MainActivity по умолчанию. java при создании нового пустого проекта активности в Android Studio 4.0 у меня есть следующий код MainActivity по умолчанию. java код:
package jp.oist.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);
}
}
со следующим файлом градиента уровня проекта:
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath "com.android.tools.build:gradle:4.0.0"
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
google()
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
и следующий файл градиента уровня приложения:
apply plugin: 'com.android.application'
android {
compileSdkVersion 29
buildToolsVersion "30.0.0"
defaultConfig {
applicationId "jp.oist.myapplication"
minSdkVersion 21
targetSdkVersion 29
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(dir: "libs", include: ["*.jar"])
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
}
Здесь, из-за простоты проекта, я знаю, что
import androidx.appcompat.app.AppCompatActivity;
возникнет из зависимость файла gradle на уровне приложения:
implementation 'androidx.appcompat:appcompat:1.1.0'
, который, в свою очередь, извлекается из репозиториев, определенных в файле gradle на уровне проекта:
repositories {
google()
jcenter()
}
Надеюсь, я все это понимаю верный? Но даже в этом случае остается неясным, извлекается ли пакет androidx.appcompat:appcompat:1.1.0
из google()
или jcenter()
. Очевидно, что Android Studio Linter проверяет, какой именно из них, в фоновом режиме, так как он выдает ошибку, если не может получить данные из каких-либо репозиториев.
Я надеюсь найти метод для поиска этого дерева зависимостей подробности аналогичны тому, как я использую Ctrl + q для просмотра документации и сведений о пакете для данного метода или переменной в любом другом месте кода. Я также использую Ctrl + b для go для объявления или использования данного метода или переменной.
В приведенном выше коде по умолчанию я могу щелкнуть onCreate(Bundle ...
, нажать Ctrl-q, и я буду обнаружил, что он определен в jp.oist.myapplication.MainActivity, и я также вижу, что он переопределяет метод onCreate класса AppCompatActivity. Я мог бы открыть класс AppCompatActivity и повторить тот же шаг, чтобы обнаружить, что метод onCreate здесь переопределяет метод onCreate класса FragmentActivity ... и так далее и тому подобное. Это дает мне возможность отслеживать весь путь до самого верхнего родителя (или зависимости, если мыслить в терминах контекста gradle).
Есть ли аналогичная функция для отслеживания «родителя» или зависимости? c (и) данного оператора импорта? А затем репозиторий этой зависимости?
Я бы нашел это чрезвычайно полезным при попытке изучить пример кода (например, пример проекта Google Vision Quickstart ). Чтобы понять, как адаптировать такие образцы к моему коду, я должен знать, где находятся базовые зависимости l ie, и вместо того, чтобы просто копировать и вставлять ВСЕ, я предпочел бы лучше понимать, что входит в мой код.
Что я пробовал:
Гугл и поиск в stackoverflow таких вещей, как «android studio, которая импортирует репо из», «android studio» отслеживает операторы импорта обратно в gradle » , и др. c. но, похоже, не нашел подходящей строки для поиска. Я уверен, что об этом ГДЕ-ТО спросили или ответили, но я просто не могу его найти. Приветствуются любые моменты в правильном направлении!
Система, используемая для генерации значений по умолчанию:
Android Studio 4.0 Build # AI-193.6911.18.40.6514223, созданная 21 мая 2020 г. Версия Runtime : 1.8.0_242-release-1644-b3-6222593 amd64 VM: 64-разрядная серверная виртуальная машина OpenJDK от JetBrains sro Linux 5.3.0-46-generic G C: ParNew, ConcurrentMarkSweep Память: 1981M Ядра: 8 Реестр: ide.new.welcome.screen.force = true Несвязанные плагины: интеграция с PlantUML, SequenceDiagram, org.jetbrains. kotlin, com.google.services.firebase, com.intellij.marketplace, com.othingworks.gauge, org .intellij.plugins.markdown, org.pmesmeur.sketchit, ru.leoklo.stackuml, simpleUML