GreenDao Android Studio

Я ищу четкое пошаговое объяснение того, как импортировать GreenDao в Android Studio.

Я использовал его раньше в AS, но не смог заставить его работать снова. Существуют некоторые учебные пособия, но они, похоже, не относятся к последней версии AS.

Когда я клонирую из github, я получаю пример проекта и т.д. Есть ли способ установить GreenDaoGenerator без этих дополнений?

Просто ищу современное пошаговое объяснение.

Обновление: я предлагаю использовать Realm.io сейчас! Проверьте это!:-)

Любая помощь будет оценена!

6 ответов

Решение

Проверено на Android Studio 2.0

С Android Studio 0.6.1+ (и, возможно, ранее) вы можете легко добавить не Android-проект в ваш Android-проект в качестве модуля.

Используя метод ниже, вы можете иметь модули Java (greenDaoGenerator) и модули Android в том же проекте, а также имеют возможность компилировать и запускать модули Java как отдельные проекты Java.

  1. Откройте свой проект Android в Android Studio. Если у вас его нет, создайте его.
  2. Нажмите Файл> Новый модуль. Выберите библиотеку Java и нажмите "Далее".
  3. Введите имя пакета и т. Д. И нажмите Готово. Теперь вы должны увидеть модуль Java внутри вашего проекта Android.
  4. Откройте файл build.gradle проекта Java и добавьте следующую зависимость

    dependencies {
        compile fileTree(dir: 'libs', include: ['*.jar'])
        compile('de.greenrobot:DaoGenerator:1.3.0')
    }
    
  5. Скопируйте свой DaoGenerator классы или создать, если у вас нет одного для вашего Java-модуля. Например, я создал ExampleDaoGenerator класс в моем 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");
       }
    
    }
    

Теперь, чтобы сгенерировать классы, которые вы можете использовать в проекте Android, выполните следующие шаги.

  1. Нажмите на меню запуска в верхней панели. Нажмите Редактировать конфигурации...
  2. В новом окне нажмите на знак плюс в левом верхнем углу окна и выберите Приложение
  3. Должна появиться новая конфигурация приложения, заполните следующую информацию.

    1. Дайте ему имя, например, greenDao.
    2. В главном классе нажмите кнопку и выберите класс генератора, который имеет метод main. Например, в этом случае этоcom.greendao.generator.ExampleDaoGenerator
    3. В рабочем каталоге выберите путь вашего Java-проекта.
    4. В классе использования модуля выберите ваш проект Java. нажмите ок.
    5. Снова перейдите в меню "Run", и теперь вы можете увидеть, например, "Run greendao". нажмите на него. Он должен успешно скомпилироваться.

Это сделано!!! вы можете проверить сгенерированные классы в указанной вами папке. Например, в этом случае это /DaoExample/src-gen

ПРИМЕЧАНИЕ. Вы можете снова запустить свой проект Android, щелкнув меню "Выполнить" -> " Редактировать конфигурацию". выберите свой проект и нажмите ОК.

Вот пошаговый обзор для интеграции GreenDao в ваш проект Android.

[Ссылка Как использовать GeenDao с Android? ]

[Ссылка на проект: Пример GreenDao ]

ЧАСТЬ 1: Настройка GREENDAO

  1. Создать проект Android.

  2. Нажмите Файл> Новый> Новый модуль. Выберите библиотеку Java и нажмите "Далее".

Img 1

  1. Теперь мы должны добавить следующие зависимости Gradle.

В build.gradle модуля: приложение, вставка

compile 'de.greenrobot:greendao:2.1.0'

Img 2

В build.gradle модуля: greendao-generator, вставить

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

Img 3

Убедитесь, что вы синхронизируете свой проект.

Img 4

  1. Теперь в MainGenerator.java,

мы определим структуру базы данных.

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. Запустите MainGenerator.java

введите описание изображения здесь

  1. После запуска вы увидите только что созданную папку, т.е. db в основной папке проекта.

введите описание изображения здесь

ЧАСТЬ 2: Интеграция с Android Project

  1. Установите макет 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. В MainActivity.java,

Добавьте следующие коды

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. Перед запуском приложения убедитесь, что вы изменили свою конфигурацию. введите описание изображения здесь

  2. Теперь запустите его.

ЧАСТЬ 3 - ПОСМОТРЕТЬ БД SQL

  1. Откройте командную строку.
  2. Введите следующие команды. введите описание изображения здесь

  3. Открытие файла БД в SQLite3 введите описание изображения здесь

  4. Использование SQLite3 введите описание изображения здесь

ЧАСТЬ 4 - ЭКСТРАС

  1. Структура (основные классы) GREENDAO

введите описание изображения здесь

Работает на Android 1.3 Preview

Для лучшего ответа (протестировано на Android Studio 1.0) вам может понадобиться включить эту исходную папку в ваш проект. Перейти к app/build.gradle

добавить следующий внутри блока Android

sourceSets{

main{
    java{
        srcDir 'src-gen'
    }
}

Я использовал этот учебник для Android Studio 0.8.9, и все работает отлично.

Решение: IO-Exception

  1. Перейти к сборке от вашего генератора дао.
  2. добавить: применить "приложение"
  3. add: mainClassName = "you.package.include.Main"
  4. выполнить "выполнить" в прикладной задаче (задача Gradle)

Я не знаю, почему это не работает, когда вы создаете конфигурацию запуска вручную.

По сути, вам нужно добавить модуль библиотеки Java (Файл> Новый> Новый модуль..) в ваш проект Android (при условии, что вы используете Android Studio) и вставить код генерации внутри public static void main(String[] args) {} в этом модуле .java учебный класс. Затем запустите его, и код будет сгенерирован в модуле вашего основного приложения.

Смотрите этот пост в блоге для пошагового руководства с объяснением.

Другие вопросы по тегам