Нужно ли импортировать support-v4 и appcompat-v7, чтобы использовать их?
Я использую 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
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
файл (перефразируя связанный ответ):
Если ваш проект имеет прямые зависимости от "B", то вы должны объявить "B" как явную зависимость, даже если "B" является транзитивной зависимостью некоторой другой явной зависимости "A". Будущие версии "A" могут больше не зависеть от "B", и обновление до одной из этих версий "A" нарушит вашу сборку.