我正在使用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
答案 0 :(得分: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
文件中明确声明这些依赖关系(解释链接的答案),通常仍被视为good practice:
如果您的项目具有直接依赖关系" B"那么你应该声明" B"作为明确的依赖,即使" B"是一些其他显式依赖的传递依赖" A"。未来版本的" A"可能不再依赖于" B",并更新到其中一个版本的" A"会破坏你的构建。