我在用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

最佳答案

支持设计库本身依赖于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”声明为显式依赖,即使“b”是其他显式依赖“a”的传递依赖。“a”的未来版本可能不再依赖于“b”,更新到其中一个“a”版本将破坏您的构建。

07-24 09:49
查看更多