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!
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.
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')
}
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.
Une nouvelle configuration d'application devrait apparaître, remplissez les informations suivantes.
com.greendao.generator.ExampleDaoGenerator
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.
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
Créez un projet Android.
Cliquez sur Fichier> Nouveau> Nouveau module . Sélectionnez Bibliothèque Java et cliquez sur Suivant.
Dans build.gradle de Module: app , insérez
compile 'de.greenrobot:greendao:2.1.0'
Dans le build.gradle du module : greendao-generator , insérez
compile 'de.greenrobot:greendao-generator:2.1.0'
Assurez-vous que vous synchronisez votre projet.
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");
}
}
PART2: Intégration avec Android Project
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" />
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***---------------------------------------//
}
Avant d'exécuter l'application, assurez-vous d'avoir modifié votre configuration.
Maintenant, lancez-le.
PARTIE 3 - VOIR LA DB SQL
PARTIE 4 - EXTRAS
J'ai utilisé ce tutoriel pour Android Studio 0.8.9 et tout fonctionne bien.
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'
}
}
Solution: IO-Exception
Je ne sais pas pourquoi cela ne fonctionne pas lorsque vous créez manuellement une configuration d'exécution.
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.