Solucionado (ver solução)
Solucionado
(ver solução)
7
respostas

Arquivos do Projeto Atual Inválidos

Olá,

Estou começando o curso PT2 e fui baixar os arquivos disponibilizados na última aula da PT1 (https://github.com/alura-cursos/android-studio) , extrai em uma pasta e ao selecionar ela como pasta do projeto a build do android Studio aponta diversos erros. Gostaria dos arquivos do projeto para iniciar a parte 2.

Erros:

Build:

Could not find com.android.tools.build:aapt2:3.2.1-4818971.
Searched in the following locations:
    file:/C:/Users/Lucas/AppData/Local/Android/Sdk/extras/m2repository/com/android/tools/build/aapt2/3.2.1-4818971/aapt2-3.2.1-4818971.pom
    file:/C:/Users/Lucas/AppData/Local/Android/Sdk/extras/m2repository/com/android/tools/build/aapt2/3.2.1-4818971/aapt2-3.2.1-4818971-windows.jar
    file:/C:/Users/Lucas/AppData/Local/Android/Sdk/extras/google/m2repository/com/android/tools/build/aapt2/3.2.1-4818971/aapt2-3.2.1-4818971.pom
    file:/C:/Users/Lucas/AppData/Local/Android/Sdk/extras/google/m2repository/com/android/tools/build/aapt2/3.2.1-4818971/aapt2-3.2.1-4818971-windows.jar
    file:/C:/Users/Lucas/AppData/Local/Android/Sdk/extras/android/m2repository/com/android/tools/build/aapt2/3.2.1-4818971/aapt2-3.2.1-4818971.pom
    file:/C:/Users/Lucas/AppData/Local/Android/Sdk/extras/android/m2repository/com/android/tools/build/aapt2/3.2.1-4818971/aapt2-3.2.1-4818971-windows.jar
    https://jcenter.bintray.com/com/android/tools/build/aapt2/3.2.1-4818971/aapt2-3.2.1-4818971.pom
    https://jcenter.bintray.com/com/android/tools/build/aapt2/3.2.1-4818971/aapt2-3.2.1-4818971-windows.jar
Required by:
    project :app

Run Build:

org.gradle.initialization.ReportedException: org.gradle.internal.exceptions.LocationAwareException: Could not resolve all files for configuration ':app:_internal_aapt2_binary'.
+100
7 respostas

-UP-

Ola, tudo bom Vitor

Cara, vou tentar te explica oque eu fiz para rodar o projeto. Nem todas as alterações devem ser necessárias, mas funcionou pra mim.

1) Assim que cloquei o repositório, e abri o projeto, aceitei a opção de atualizar o Gradle que apareceu no Android Studio.

2) Quando a atualização acabou, alterei o arquivo build.gradle(Module:app), e deixei da seguinte forma:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 28

    defaultConfig {
        applicationId "br.com.alura.agenda"
        minSdkVersion 15
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
    testImplementation 'junit:junit:4.12'
    implementation 'com.android.support:appcompat-v7:28.0.0'
}

3) Quando cliquei em Sync Now, tive a seguinte mensagem

ERROR: Failed to resolve: com.android.support:appcompat-v7:28.0.0
Add Google Maven repository and sync project
Show in Project Structure dialog
Affected Modules: app

Cliquei em add, e segui os passos para aceitar a alteração

4) Após terminar a alteração, o Android Studio acusou um erro de import na classe ListaAlunosActivity, fiz a correção, e o projeto funcionou normalmente

Espero que essas correções sirvam pra você, e se não funcionar, comenta aqui beleza

Certo, seguindo os passos consegui dar run no emulador, só documentando, o erro de import na etapa 3 é:

error: package android.support.v7.internal.widget does not exist

e basta apagar esse import, agora:

Você chegou a abrir o app? Rodei aqui mas ele não está adicionando nenhum aluno quando clico no botão "+" e depois salvando, ele só mostra a Toast de Aluno + nome + salvo com sucesso mas não aparece nada cadastrado.

No que baixei esta cadastrando sim, aparece ao Toast e a lista é atualizada

Aparece algum erro no seu Logcat?

Aparece muita coisa a todo momento mas consegui destacar essa parte de quando eu clico em salvar:

2019-01-16 15:49:55.362 1558-1558/br.com.alura.agenda E/SQLiteLog: (1) table Alunos has no column named endereco
2019-01-16 15:49:55.363 1558-1558/br.com.alura.agenda E/SQLiteDatabase: Error inserting nome=vitor telefone=321 site=44 endereco=123 nota=8.0
    android.database.sqlite.SQLiteException: table Alunos has no column named endereco (code 1): , while compiling: INSERT INTO Alunos(nome,telefone,site,endereco,nota) VALUES (?,?,?,?,?)
        at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
        at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:890)
        at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:501)
        at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
        at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58)
        at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:31)
        at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1546)
        at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1417)
        at br.com.alura.agenda.dao.AlunoDAO.insere(AlunoDAO.java:39)
        at br.com.alura.agenda.FormularioActivity.onOptionsItemSelected(FormularioActivity.java:55)
        at android.app.Activity.onMenuItemSelected(Activity.java:3450)
        at android.support.v4.app.FragmentActivity.onMenuItemSelected(FragmentActivity.java:436)
        at android.support.v7.app.AppCompatActivity.onMenuItemSelected(AppCompatActivity.java:196)
        at android.support.v7.view.WindowCallbackWrapper.onMenuItemSelected(WindowCallbackWrapper.java:109)
        at android.support.v7.app.AppCompatDelegateImpl.onMenuItemSelected(AppCompatDelegateImpl.java:888)
        at android.support.v7.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:840)
        at android.support.v7.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:158)
        at android.support.v7.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:991)
        at android.support.v7.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:981)
        at android.support.v7.widget.ActionMenuView.invokeItem(ActionMenuView.java:625)
        at android.support.v7.view.menu.ActionMenuItemView.onClick(ActionMenuItemView.java:151)
        at android.view.View.performClick(View.java:6294)
        at android.view.View$PerformClick.run(View.java:24770)
        at android.os.Handler.handleCallback(Handler.java:790)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:164)
        at android.app.ActivityThread.main(ActivityThread.java:6494)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)

Aparentemente a tabela Alunos do database não tem a coluna endereco? Mas porque isso? Não devia estar completo? Só queria o projeto completo da parte 1 pra começar a parte 2

EDIT: Entrei no AlunoDAO pra ver como ele está fazendo no onCreate/onUpgrade e o código está assim:

package br.com.alura.agenda.dao;

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

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

import br.com.alura.agenda.modelo.Aluno;

public class AlunoDAO extends SQLiteOpenHelper {

    public AlunoDAO(Context context) {
        super(context, "Agenda", null, 1);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        String sql = "CREATE TABLE Alunos (id INTEGER PRIMARY KEY, nome TEXT NOT NULL, endereco TEXT, telefone TEXT, site TEXT, nota REAL)";
        db.execSQL(sql);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        String sql = "DROP TABLE IF EXISTS Alunos";
        db.execSQL(sql);
        onCreate(db);
    }

    public void insere(Aluno aluno) {
        SQLiteDatabase db = getWritableDatabase();

        ContentValues dados = pegaDadosDoAluno(aluno);

        db.insert("Alunos", null, dados);
    }

Aparentemente correto, não é?

solução!

Vitor, você pode fazer alguns procedimentos por favor

1) Desinstalar o aplicativo manualmente do device,

2) Clicar em Build/Clean Project

3) Reinstalar o projeto pelo Android Studio

Nossos projetos estão iguais, nós clonamos do mesmo repositório, então isto deve funcionar.

Valeu!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software