web-dev-qa-db-fra.com

GreenDao Android Studio

Je cherche une explication claire et détaillée sur la façon d'importer GreenDao dans Android Studio.

Je l'ai déjà utilisé dans AS, mais je n'ai pas réussi à le faire fonctionner à nouveau. Il existe des didacticiels, mais ils ne semblent pas s'appliquer à la dernière version d'AS.

Lorsque je clone depuis github, j'obtiens un exemple de projet, etc. Y a-t-il un moyen d'installer GreenDaoGenerator sans ces extras?

Je cherche juste une explication étape par étape à jour.

Mise à jour: je suggère d'utiliser Realm.io maintenant! Vérifiez-le! :-)

Toute aide serait appréciée!

34
TomCB

Testé sur Android Studio 2.

Avec Android Studio 0.6.1+ (et peut-être plus tôt), vous pouvez facilement ajouter un projet non Android) à votre Android comme module.

En utilisant la méthode ci-dessous, vous pouvez avoir Java (greenDaoGenerator) et Android dans le même projet) et avoir également la possibilité de compiler et d'exécuter Java modules autonomes Java projets.

  1. Ouvrez votre projet Android dans Android Studio. Si vous n'en avez pas, créez-en un).
  2. Cliquez sur Fichier> Nouveau module. Sélectionnez Bibliothèque Java et cliquez sur Suivant.
  3. Remplissez nom du package, etc. et cliquez sur Terminer. Vous devriez maintenant voir un module Java dans votre projet Android.
  4. Ouvrez le fichier build.gradle du projet Java et ajoutez la dépendance suivante

    dependencies {
        compile fileTree(dir: 'libs', include: ['*.jar'])
        compile('de.greenrobot:DaoGenerator:1.3.0')
    }
    
  5. Copiez vos classes DaoGenerator ou créez si vous n'en avez pas dans votre module Java. Par exemple, j'ai créé la classe ExampleDaoGenerator dans mon Java.

    public class ExampleDaoGenerator {
    
        public static void main(String[] args) throws Exception {
            Schema schema = new Schema(1000, "de.greenrobot.daoexample");
            addNote(schema);
            new DaoGenerator().generateAll(schema, "../DaoExample/src-gen");
        }
    
        private static void addNote(Schema schema) {
            Entity note = schema.addEntity("Note");
            note.addIdProperty();
            note.addStringProperty("text").notNull();
            note.addStringProperty("comment");
            note.addDateProperty("date");
       }
    
    }
    

Maintenant, pour générer les classes que vous pouvez utiliser dans Android, suivez les étapes ci-dessous.

  1. Cliquez sur le menu exécuter dans la barre supérieure. Cliquez sur Modifier les configurations ...
  2. Dans la nouvelle fenêtre, cliquez sur le signe plus en haut à gauche de la fenêtre et sélectionnez Application
  3. Une nouvelle configuration d'application devrait apparaître, remplissez les informations suivantes.

    1. Donnez-lui un nom par exemple greenDao.
    2. Dans classe principale cliquez sur bouton… et sélectionnez votre classe de générateur qui a la méthode principale. dans ce cas, c'est com.greendao.generator.ExampleDaoGenerator
    3. Dans répertoire de travail sélectionnez le chemin de votre projet Java.
    4. Dans tilisez la classe de module sélectionnez-vous Java. Cliquez sur ok.
    5. Allez à nouveau dans le menu Exécuter et maintenant vous pouvez voir par exemple exécutez greendao. cliquez dessus. Il devrait être compilé avec succès.

C'est fait !!! vous pouvez vérifier vos classes générées dans le dossier que vous avez spécifié. dans ce cas, c'est /DaoExample/src-gen

REMARQUE: vous pouvez exécuter à nouveau votre projet Android projet en cliquant sur menu Exécuter -> Modifier la configuration. Sélectionnez votre projet et cliquez sur OK.

45
nitesh goel

Voici un aperçu étape par étape pour l'intégration de GreenDao dans votre projet Android .

[Référence Comment utiliser GeenDao avec Android? ]

[Lien du projet: exemple GreenDao ]

PART1: Configurer GREENDAO

  1. Créez un projet Android.

  2. Cliquez sur Fichier> Nouveau> Nouveau module . Sélectionnez Bibliothèque Java et cliquez sur Suivant.

Img 1

  1. Nous devons maintenant ajouter les dépendances Gradle suivantes.

Dans build.gradle de Module: app , insérez

compile 'de.greenrobot:greendao:2.1.0'

Img 2

Dans le build.gradle du module : greendao-generator , insérez

compile 'de.greenrobot:greendao-generator:2.1.0'

Img 3

Assurez-vous que vous synchronisez votre projet.

Img 4

  1. Maintenant dans le MainGenerator.Java ,

nous définirons la structure de la base de données.

import de.greenrobot.daogenerator.DaoGenerator;
import de.greenrobot.daogenerator.Entity;
import de.greenrobot.daogenerator.Schema;

public class MainGenerator {
    public static void main(String[] args)  throws Exception {

        //place where db folder will be created inside the project folder
        Schema schema = new Schema(1,"com.codekrypt.greendao.db");

        //Entity i.e. Class to be stored in the database // ie table LOG
        Entity Word_entity= schema.addEntity("LOG");

        Word_entity.addIdProperty(); //It is the primary key for uniquely identifying a row

        Word_entity.addStringProperty("text").notNull();  //Not null is SQL constrain

        //  ./app/src/main/Java/   ----   com/codekrypt/greendao/db is the full path
        new DaoGenerator().generateAll(schema, "./app/src/main/Java");

    }
}
  1. Exécutez MainGenerator.Java

enter image description here

  1. Après avoir exécuté cela, vous observerez un dossier nouvellement créé, c'est-à-dire db dans le dossier principal du projet.

enter image description here

PART2: Intégration avec Android Project

  1. Définissez la disposition activity_main.xml .

    <EditText
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:id="@+id/textData"
        Android:layout_alignParentTop="true"
        Android:layout_alignParentStart="true" />
    
    <Button
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:text="Save"
        Android:id="@+id/textSave"
        Android:layout_below="@+id/textData"
        Android:layout_alignEnd="@+id/textData"
        Android:layout_marginTop="22dp" />
    
    <Button
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:text="Show Top"
        Android:id="@+id/textTop"
        Android:layout_below="@+id/textSave"
        Android:layout_alignParentStart="true"
        Android:layout_marginTop="35dp" />
    
  2. Dans MainActivity.Java ,

Ajoutez les codes suivants

package com.codekrypt.greendao;

import Android.database.sqlite.SQLiteDatabase;
import Android.os.Bundle;
import Android.support.v7.app.AppCompatActivity;
import Android.view.View;
import Android.widget.Button;
import Android.widget.TextView;

import com.codekrypt.greendao.db.DaoMaster;
import com.codekrypt.greendao.db.DaoSession;
import com.codekrypt.greendao.db.LOG;
import com.codekrypt.greendao.db.LOGDao;

import Java.util.List;

public class MainActivity extends AppCompatActivity {

    //Dao --> Data Access Object
    private LOGDao log_dao; // Sql access object
    private LOG temp_log_object; // Used for creating a LOG Object

    String log_text="";  //Entered text data is save in this variable

    private  final String DB_NAME ="logs-db" ;  //Name of Db file in the Device

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

        //Initialise DAO
        log_dao=setupDb();

        //Setting up form elements
        Button textSave= (Button) findViewById(R.id.textSave);
        Button textTop= (Button) findViewById(R.id.textTop);
        final TextView textData=(TextView) findViewById(R.id.textData);

        assert textSave != null;
        textSave.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                log_text=textData.getText().toString();
                temp_log_object=new LOG(null,log_text);// Class Object, Id is auto increment

                SaveToSQL(temp_log_object);
            }
        });

        assert textTop != null;
        textTop.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                textData.setText( getFromSQL() );
            }
        });
    }

    //---------------------------------SQL QUERY Functions-----------------------------------------//
    public String getFromSQL(){
        List<LOG> log_list = log_dao.queryBuilder().orderDesc(LOGDao.Properties.Id).build().list();  
        //Get the list of all LOGS in Database in descending order

        if(log_list.size()>0) {  //if list is not null

            return log_list.get(0).getText();
            //get(0)--> 1st object
            // getText() is the function in LOG class
        }
        return "";
    }

    public void SaveToSQL(LOG log_object) {
        log_dao.insert(log_object);
    }
    //----------------------------***END SQL QUERY***---------------------------------------------//


    //-------------------------------DB Setup Functions---------------------------------------------//

    //Return the Configured LogDao Object
    public LOGDao setupDb(){
        DaoMaster.DevOpenHelper masterHelper = new DaoMaster.DevOpenHelper(this, DB_NAME, null); //create database db file if not exist
        SQLiteDatabase db = masterHelper.getWritableDatabase();  //get the created database db file
        DaoMaster master = new DaoMaster(db);//create masterDao
        DaoSession masterSession=master.newSession(); //Creates Session session
        return masterSession.getLOGDao();
    }
    //-------------------------***END DB setup Functions***---------------------------------------//

}
  1. Avant d'exécuter l'application, assurez-vous d'avoir modifié votre configuration. enter image description here

  2. Maintenant, lancez-le.

PARTIE 3 - VOIR LA DB SQL

  1. Ouvrez l'invite de commande.
  2. Entrez les commandes suivantes. enter image description here

  3. Ouverture du fichier db dans SQLite3 enter image description here

  4. Utilisation de SQLite3 enter image description here

PARTIE 4 - EXTRAS

  1. Structure (classes de base) de GREENDAO

enter image description here

4
Arjun SK

J'ai utilisé ce tutoriel pour Android Studio 0.8.9 et tout fonctionne bien.

2
MiguelHincapieC

Fonctionne sur Android 1.3 Preview

Pour la meilleure réponse (Testé sur Android Studio 1.0), vous devrez peut-être inclure ce dossier source dans votre projet. Accédez à app/build.gradle

ajoutez ce qui suit à l'intérieur Android block

sourceSets {

main{
    Java{
        srcDir 'src-gen'
    }
}
2
Juan Mendez

Solution: IO-Exception

  1. Accédez à la génération à partir de votre générateur dao.
  2. ajouter: appliquer "application"
  3. add: mainClassName = "you.package.include.Main"
  4. exécuter "exécuter" dans la tâche d'application (tâche gradle)

Je ne sais pas pourquoi cela ne fonctionne pas lorsque vous créez manuellement une configuration d'exécution.

1
logerom

Fondamentalement, ce dont vous avez besoin est d'ajouter un module de bibliothèque Java ( Fichier> Nouveau> Nouveau module ..) à votre Android (en supposant que vous utilisez Android Studio), et insérez le code de génération dans public static void main(String[] args) {} dans le module .Java. Alors Run et le code sera généré dans le module de votre application principale.

Voir ceci article de blog pour un tutoriel étape par étape avec explication.

0
lomza