Error "Please configure your build for Vectordrawablecompat"

Asked

Viewed 216 times

1

I created an application that uses the database and it is not running. When I open it shows the following message

"The Beta Database app has stopped"

So I went to see Logcat and he shows that the error is in the onCreate of my Activity... someone could help me?

ERROR:

10-12 09:30:52.251 983-983/com.gif.bancodedadosbeta E/AndroidRuntime: FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.gif.bancodedadosbeta/com.gif.bancodedadosbeta.Home}: java.lang.IllegalStateException: This app has been built with an incorrect configuration. Please configure your build for VectorDrawableCompat.
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
at android.app.ActivityThread.access$600(ActivityThread.java:141)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5103)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.IllegalStateException: This app has been built with an incorrect configuration. Please configure your build for VectorDrawableCompat.
at android.support.v7.widget.AppCompatDrawableManager.checkVectorDrawableSetup(AppCompatDrawableManager.java:720)
at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:187)
at android.support.v7.widget.TintTypedArray.getDrawableIfKnown(TintTypedArray.java:77)
at android.support.v7.app.AppCompatDelegateImplBase.(AppCompatDelegateImplBase.java:127)
at android.support.v7.app.AppCompatDelegateImplV9.(AppCompatDelegateImplV9.java:147)
at android.support.v7.app.AppCompatDelegateImplV11.(AppCompatDelegateImplV11.java:27)
at android.support.v7.app.AppCompatDelegateImplV14.(AppCompatDelegateImplV14.java:50)
at android.support.v7.app.AppCompatDelegate.create(AppCompatDelegate.java:201)
at android.support.v7.app.AppCompatDelegate.create(AppCompatDelegate.java:181)
at android.support.v7.app.AppCompatActivity.getDelegate(AppCompatActivity.java:521)
at android.support.v7.app.AppCompatActivity.onCreate(AppCompatActivity.java:71)
at com.gif.bancodedadosbeta.Home.onCreate(Home.java:14)
at android.app.Activity.performCreate(Activity.java:5133)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261) 
at android.app.ActivityThread.access$600(ActivityThread.java:141) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256) 
at android.os.Handler.dispatchMessage(Handler.java:99) 
at android.os.Looper.loop(Looper.java:137) 
at android.app.ActivityThread.main(ActivityThread.java:5103) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:525) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
at dalvik.system.NativeStart.main(Native Method) 

CODE OF ACTIVITY:

package com.gif.bancodedadosbeta;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;

import java.util.Iterator;
import java.util.List;

public class Home extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_home);

        DbHelper dbh = new DbHelper(this);

        // add na tabela
        Livro SenhorDosAneis = new Livro(0,"Senhor dos Aneis", "Tokien", 300);

        dbh.insertLivro(SenhorDosAneis);

        dbh.insertLivro(new Livro(0,"Guerra dos tronos", "Martin", 1000));

        //recuperar outro livro
        List<Livro> listaLivros = dbh.selectTodosOsLivros();


        //Aparecer no logcat
        for (Iterator iterator = listaLivros.iterator(); iterator.hasNext();){
            Livro livro = (Livro) iterator.next();

            Log.i("AppMinhaBilioteca", livro.toString());
        }
    }
}

Dbhelper database:

package com.gif.bancodedadosbeta;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

import java.util.ArrayList;
import java.util.List;

public class DbHelper extends SQLiteOpenHelper{


    // jeito mais simplificado falando o nome do banco e a sua versão
    private static final String NOME_BASE = "MinhaBiblioteca";
    private static final int VERSAO_BASE = 1;


    //coloando o context o nome do banco null e a versao dele
    public DbHelper(Context context) {
        super(context, NOME_BASE, null, VERSAO_BASE);
    }



    // aqui se cria a tabela do banco
    // (dizendo que é sql e dpois o nome dela no caso a baixo seria o "db"
    @Override
    public void onCreate(SQLiteDatabase db) {
        // para se criar uma tabela no banco e dessa forma

        // CREATE TABLE "nome da tabela ("+"id tipo dela chave primaria e add cada vez que criar uma celula," +"segundo nome da coluna tipo dela"+")";

        String sqlCreateTabelaLivro = "CREATE TABLE livro(" + "id INTEGER PRIMARY KEY AUTOINCREMENT," + "titulo TEXT," + "autor TEXT," + "paginas INTEGER"+ ")";

        //executando a criaçao da tabela
       db.execSQL(sqlCreateTabelaLivro);
    }




    // Fazendo atualizaçao do banco de dados
    //modo sql, depois o nome do banco, versao antiga e depois a nova versão
    @Override
    public void onUpgrade(SQLiteDatabase db, int i, int i1) {



        //falando o tipo dela e o nome da tabela atualizaçao
        String sqlDropTabelaLivro = "DROP TABLE livro";



        //executando atualizaçao da tabela
        db.execSQL(sqlDropTabelaLivro);



        //executando outra criançao da tabela para a nova versao do banco automaticamente
        onCreate(db);
    }



    //criando uma insert
    public void insertLivro(Livro livro){

        //dizendo que é um tipo "escrever"
        SQLiteDatabase db = getWritableDatabase();

        ContentValues cv = new ContentValues();
        //relacionando os valores da class Livro
        cv.put("titulo", livro.getTitulo());
        cv.put("autor", livro.getAutor());
        cv.put("paginas", livro.getPaginas());

        //fazendo o insert
        db.insert("livro", null, cv);

        //fechando o metodo
        db.close();
    }


    //metodo para recuperar o dados do banco
    public List<Livro> selectTodosOsLivros(){

        //fazendo para recuperar so um livro, se não ele recupera todos de uma vez
        List<Livro> listLivros = new ArrayList<Livro>();
        SQLiteDatabase db = getReadableDatabase();

        String sqlSelectTodosOsLivros = "SELECT = FROM livro";

        Cursor c = db.rawQuery(sqlSelectTodosOsLivros, null);

        //como que eu preciso mostrar o valor fiz uma condição que se tiver valor ele mostra se nao ele pega o proximo
        if(c.moveToFirst()){
            //fazer do/while para poder fazer com o proximo se nao ele so pega uma lista do livros
            do {
                Livro onde = new Livro();
                //pegando a coluna para mostrar o resultado
                onde.setId(c.getInt(0));
                onde.setTitulo(c.getString(1));
                onde.setAutor(c.getString(2));
                onde.setPaginas(c.getInt(3));

                //pondo na lista de livro
                listLivros.add(onde);

            }while (c.moveToNext());
        }

        db.close();
        return listLivros;

    }
}

Gradle:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 24
    buildToolsVersion "23.0.3"

    defaultConfig {
        applicationId "com.gif.bancodedadosbeta"
        minSdkVersion 10
        targetSdkVersion 24
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:24.2.0'
}
  • Android Studio 1.5.1
  • Gradle Plugin 1.5
  • 1

    Please add the full logcat to the question.

  • "SELECT = FROM book", will not be "SELECT * FROM book"

  • @diegofm already published the whole Logcat

  • @ramaral didn’t work no friend

  • I see now that the error has nothing to do with it, however it has to correct that Select.

  • You are wearing Vectordrawable?

  • I’m not using

  • Put your app/build.gradle.

Show 4 more comments

1 answer

1


Error indicates that you should configure the build.gradle in order to deal with VectorDrawableCompat.
This is due to the versions of Android Studio, Gradle Plugin and appcompat-v7 who are using.

From what I understand of what is said here This would only be necessary if you were using version 23.2.0 of appcompat-v7. Either I misunderstood or what is referred there does not correspond to the truth.

So you will have to, in the Builder.Gradle module app, add generatedDensities = [] in section defaultConfig

 android {  
   defaultConfig {  
     generatedDensities = []  
  }  

and add a new section aaptOptions,

  aaptOptions {  
    additionalParameters "--no-version-vectors"  
  }  

so that the section android stay that way:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 24
    buildToolsVersion "23.0.3"

    defaultConfig {
        applicationId "com.gif.bancodedadosbeta"
        minSdkVersion 10
        targetSdkVersion 24
        versionCode 1
        versionName "1.0"
        generatedDensities = []
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    aaptOptions {  
        additionalParameters "--no-version-vectors"  
    } 
}

Using Gradle Plugin 2.0 or higher, the configuration is simplified and you only need to add vectorDrawables.useSupportLibrary = true in section defaultConfig.

// Gradle Plugin 2.0+  
 android {  
   defaultConfig {  
     vectorDrawables.useSupportLibrary = true  
    }  
 }  
  • 1

    It worked... thank you.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.