Определение зависимости от репозитория данного пакета в Android Studio - PullRequest
0 голосов
/ 07 августа 2020

Вопрос:

Для данного импорта, например,

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...