5

我正在使用 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;

我从谷歌样本中复制了这些依赖项:

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
4

1 回答 1

9

支持设计库本身依赖于 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(解释链接的答案):

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

于 2016-08-18T22:22:55.853 回答