【问题标题】:Is necessary to import support-v4 and appcompat-v7 to use them?是否需要导入 support-v4 和 appcompat-v7 才能使用它们?
【发布时间】:2016-12-25 23:30:41
【问题描述】:

我正在使用 AppCompatActivity 和其他一些东西,例如片段等...这些是我的活动的一些导入:

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentStatePagerAdapter;
import android.support.v4.view.GravityCompat;
import android.support.v4.view.ViewPager;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.app.AppCompatActivity;

我从 google 示例中复制了这些依赖项:

dependencies {
    compile 'com.google.android.gms:play-services-ads:9.4.0'
    compile 'com.android.support:support-v4:23.1.1'
    compile 'com.android.support:appcompat-v7:23.4.0'
    compile 'com.android.support:design:23.4.0'
}

现在我正在尝试删除它们,我注意到我可以删除这些:

compile 'com.android.support:support-v4:23.1.1'
compile 'com.android.support:appcompat-v7:23.4.0'

删除它们,我的项目完美运行...为什么?

我正在编译:

compileSdkVersion 23
buildToolsVersion "23.0.3"
minSdkVersion 14
targetSdkVersion 22

【问题讨论】:

    标签: android android-gradle-plugin android-support-library android-appcompat android-gradle-2.0


    【解决方案1】:

    支持设计库本身依赖于 appcompat-v7 和 support-v4 库。因此,您删除的显式依赖项会自动作为传递依赖项引入。运行./gradlew app:dependencies 证实了这一点:

    _releaseCompile - ## Internal use, do not manually configure ##
    +--- com.android.support:design:23.4.0
    |    +--- com.android.support:recyclerview-v7:23.4.0
    |    |    +--- com.android.support:support-annotations:23.4.0 -> 24.0.0
    |    |    \--- com.android.support:support-v4:23.4.0 -> 24.0.0 (*)
    |    +--- com.android.support:appcompat-v7:23.4.0 -> 24.0.0
    |    |    +--- com.android.support:support-v4:24.0.0 (*)
    |    |    +--- com.android.support:support-vector-drawable:24.0.0
    |    |    |    \--- com.android.support:support-v4:24.0.0 (*)
    |    |    \--- com.android.support:animated-vector-drawable:24.0.0
    |    |         \--- com.android.support:support-vector-drawable:24.0.0 (*)
    |    \--- com.android.support:support-v4:23.4.0 -> 24.0.0 (*)
    

    在您的build.gradle 文件中显式声明这些依赖项通常仍被视为good practice(解释链接的答案):

    如果您的项目对“B”有直接依赖项,那么即使“B”是某个其他显式依赖项“A”的传递依赖项,您也应该将“B”声明为显式依赖项。 “A”的未来版本可能不再依赖于“B”,更新到“A”的这些版本之一会破坏您的构建。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-06
      • 2013-08-18
      • 2015-12-21
      • 1970-01-01
      • 1970-01-01
      • 2015-01-29
      • 2014-02-11
      • 2016-02-04
      相关资源
      最近更新 更多