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.
- Откройте свой проект Android в Android Studio. Если у вас его нет, создайте его.
- Нажмите Файл> Новый модуль. Выберите библиотеку Java и нажмите "Далее".
- Введите имя пакета и т. Д. И нажмите Готово. Теперь вы должны увидеть модуль Java внутри вашего проекта Android.
Откройте файл build.gradle проекта Java и добавьте следующую зависимость
dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile('de.greenrobot:DaoGenerator:1.3.0') }
Скопируйте свой
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, выполните следующие шаги.
- Нажмите на меню запуска в верхней панели. Нажмите Редактировать конфигурации...
- В новом окне нажмите на знак плюс в левом верхнем углу окна и выберите Приложение
Должна появиться новая конфигурация приложения, заполните следующую информацию.
- Дайте ему имя, например, greenDao.
- В главном классе нажмите кнопку … и выберите класс генератора, который имеет метод main. Например, в этом случае это
com.greendao.generator.ExampleDaoGenerator
- В рабочем каталоге выберите путь вашего Java-проекта.
- В классе использования модуля выберите ваш проект Java. нажмите ок.
- Снова перейдите в меню "Run", и теперь вы можете увидеть, например, "Run greendao". нажмите на него. Он должен успешно скомпилироваться.
Это сделано!!! вы можете проверить сгенерированные классы в указанной вами папке. Например, в этом случае это /DaoExample/src-gen
ПРИМЕЧАНИЕ. Вы можете снова запустить свой проект Android, щелкнув меню "Выполнить" -> " Редактировать конфигурацию". выберите свой проект и нажмите ОК.
Вот пошаговый обзор для интеграции GreenDao в ваш проект Android.
[Ссылка Как использовать GeenDao с Android? ]
[Ссылка на проект: Пример GreenDao ]
ЧАСТЬ 1: Настройка GREENDAO
Создать проект Android.
Нажмите Файл> Новый> Новый модуль. Выберите библиотеку Java и нажмите "Далее".
- Теперь мы должны добавить следующие зависимости Gradle.
В build.gradle модуля: приложение, вставка
compile 'de.greenrobot:greendao:2.1.0'
В build.gradle модуля: greendao-generator, вставить
compile 'de.greenrobot:greendao-generator:2.1.0'
Убедитесь, что вы синхронизируете свой проект.
- Теперь в 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");
}
}
- Запустите MainGenerator.java
- После запуска вы увидите только что созданную папку, т.е. db в основной папке проекта.
ЧАСТЬ 2: Интеграция с Android Project
Установите макет 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" />
В 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***---------------------------------------//
}
ЧАСТЬ 3 - ПОСМОТРЕТЬ БД SQL
- Откройте командную строку.
ЧАСТЬ 4 - ЭКСТРАС
- Структура (основные классы) 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
- Перейти к сборке от вашего генератора дао.
- добавить: применить "приложение"
- add: mainClassName = "you.package.include.Main"
- выполнить "выполнить" в прикладной задаче (задача Gradle)
Я не знаю, почему это не работает, когда вы создаете конфигурацию запуска вручную.
По сути, вам нужно добавить модуль библиотеки Java (Файл> Новый> Новый модуль..) в ваш проект Android (при условии, что вы используете Android Studio) и вставить код генерации внутри public static void main(String[] args) {}
в этом модуле .java
учебный класс. Затем запустите его, и код будет сгенерирован в модуле вашего основного приложения.
Смотрите этот пост в блоге для пошагового руководства с объяснением.