2016-08-10 34 views
6

Używam Androida Studio 2.1.2. Zacząłem nowy projekt z minSdkVersion jako 19. Moja działalność rozszerza AppCompatActivity. Projekt rozpoczyna się od pustej aktywności z użyciem fragmentu.Pasek narzędzi: IllegalStateException - skonfiguruj kompilację dla VectorDrawableCompat

Podczas przeglądania content_main.xml z API 24 wszystko jest w porządku. podczas przeglądania API 19, mam następujący problem rendering:

The following classes could not be instantiated: 
- android.support.v7.widget.Toolbar 
java.lang.IllegalStateException: This app has been built with an incorrect configuration. Please configure your build for VectorDrawableCompat 

dodałem wszystko, co znalazłem odpowiednie do Gradle (2 pliki) nadal pojawia się błąd

classpath 'com.android.tools.build:gradle:2.1.2' 
**vectorDrawables.useSupportLibrary = true** 
buildToolsVersion "24.0.1" 
compile 'com.android.support:appcompat-v7:24.1.1' 
**compile "com.android.support:support-v4:24.1.1"** 
compile 'com.android.support:design:24.1.1 

Ale. Znalazłem wiele odpowiedzi w Internecie. Ale żaden nie pomógł. Czy wystąpił problem z używaniem nowego paska narzędzi z interfejsem API 19?

+1

Wystarczy chciałby podkreślić, że Zależność "projektowanie wsparcia" obejmuje zarówno v Biblioteki 4 i 7 (w przypadku, gdy próbujesz zawęzić problem) –

+0

w obliczu tego samego problemu, czy możesz rozwiązać ten problem? – Jaydev

Odpowiedz

0

od tego google Issue

buildscript { 
    ... 
    dependencies { 
    classpath 'com.android.tools.build:gradle:2.1.0' 
    } 
} 

sprawdzić ten problem, aby uzyskać pomoc.

UPDATE

skonfigurowaniu aplikacji build.gradle plik następująco

android { 
    defaultConfig { 
    vectorDrawables.useSupportLibrary = true 
    } 
} 

dependencies { 
    compile 'com.android.support:appcompat-v7:23.3.0' 
} 

Źródło Age Of Vectors

+1

też tego wypróbowałem, nie pomogło – Amos

+0

realizacji tego artykułu [wiek grafiki wektorowej] (https://medium.com/@chrisbanes/appcompat-v23-2----wysoki-91cbafa87c88#.7359c69qs) – skydroid

0

Po pierwsze, istnieją dwa typy plików Gradle.

  1. build.gradle(Project: ProjectName)
  2. build.gradle(Module: app)

Aby uzyskać więcej informacji na temat tych dwóch plików, przejść przez ten answer.

Jadąc do twojego pytania,

znalazłem wiele odpowiedzi w internecie, ale żaden pomogło. Używam aplikacji Android Studio 2.1.2, moja działalność rozszerza AppCompatActivity i dodaje do gradle (2 pliki), co uważam za istotne: ale nadal pojawia się błąd .

Z tego, co napisałeś, wynika, że ​​nie dodawałeś właściwych rzeczy we właściwych miejscach.

Nie należy umieszczać zależności aplikacji w build.gradle(Project: ProjectName) - Android Studio mówi,

// UWAGA: Nie należy umieszczać zależności aplikacji tutaj; należą one do

// w kompilacji poszczególnych modułów.Gradle plików

Stąd zastąpić zależności w build.gradle(Project: ProjectName) z poniższej

dependencies { 
     classpath 'com.android.tools.build:gradle:2.1.2' 
    } 

Wymień zależności w build.gradle(Module: app) z poniższej

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    testCompile 'junit:junit:4.12' 
    compile 'com.android.support:appcompat-v7:24.1.1' 
    compile 'com.android.support:design:24.1.1' 
} 

Po zrobieniu jak wspomniano powyżej, będzie można zobaczyć "Sync Now "opcja w prawym górnym rogu. Kliknij go. Android Studio zajmie się resztą.

Również ten question jest podobny do twojego. Przejść przez to. To może pomóc.

0

Dodaj:

build.gradle

defaultConfig { 
    ... 
    vectorDrawables.useSupportLibrary = true 
    ... 
} 

A na szczycie swojej klasy Activity:

static { 
    AppCompatDelegate.setCompatVectorFromResourcesEnabled(true); 
} 

I ostatnia rzecz umieścić swoje vector drawables wewnątrz innych jak selector kanału alfa , LayerList itp. Coś jak poniżej:

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:drawable="@drawable/drawable_vector" /> 
</selector> 

Wykorzystaj powyższy rysunek do rysowania zamiast ustawiać bezpośrednio rysunki wektorowe. Będzie to miało miejsce również w innych miejscach, gdy chcesz użyć wektorów na urządzeniach pre-Lollipop.

6

Ten pracował dobrze dla mnie

android { 
compileSdkVersion 23 
buildToolsVersion "23.0.1" 

defaultConfig { 
    applicationId "com.example.app" 
    minSdkVersion 15 
    targetSdkVersion 23 
    versionCode 1 
    versionName "1.0" 
    generatedDensities = [] 
} 

// This is handled for you by the 2.0+ Gradle Plugin 
aaptOptions { 
    additionalParameters "--no-version-vectors" 
} 

buildTypes { 
    release { 
     minifyEnabled false 
     proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
    } 
} 

}

to zauważyć w powyższym kodzie:

// This is handled for you by the 2.0+ Gradle Plugin 
aaptOptions { 
    additionalParameters "--no-version-vectors" 
} 

i

generatedDensities = [] 
+1

To zadziałało dla mnie. dzięki! –

+1

To zadziałało także dla mnie – sandy