3

Я использую AppCompatActivity и еще некоторые вещи, как фрагменты и т.д. ... Вот некоторые из импорта моей деятельности:Нужно ли импортировать поддержку-v4 и appcompat-v7 для их использования?

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; 

Я copyed из образцов 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' 

удаление их, мой пр oject отлично работает ... почему?

Я компиляции с этим:

compileSdkVersion 23 
buildToolsVersion "23.0.3" 
minSdkVersion 14 
targetSdkVersion 22 

ответ

7

Библиотека дизайна поддержки сама зависит от AppCompat-v7 и опорно-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 (*) 

Он по-прежнему в целом считается good practice явно объявить эти зависимости в файле build.gradle (перефразируя связанный ответ):

Если ваш проект имеет прямые зависимости от " B ", тогда вы должны объявить« B »как явную зависимость, даже если« B »является транзитивной зависимостью какой-либо другой явной зависимости« A ». Будущие версии «A» больше не могут зависеть от «B», и обновление до одной из этих версий «A» нарушит вашу сборку.