Студия Android GreenDao
Я ищу четкое пошаговое объяснение того, как импортировать GreenDao в Android Studio.
Я использовал его раньше в AS, но не смог заставить его работать снова.
Есть несколько учебных пособий, но они, похоже, не применяются к последней версии AS.
Когда я клонируюсь из github, я получаю пример проекта и т.д.
Есть ли способ установить GreenDaoGenerator без этих дополнительных функций?
Просто поиск пошагового объяснения.
Обновление: теперь я предлагаю использовать Realm.io! Проверьте это!: -)
Любая помощь будет оценена!
Ответы
Ответ 1
Протестировано на Android Studio 2.0
С Android Studio 0.6.1+ (и, возможно, ранее) вы можете легко добавить проект андроида в проект андроида в качестве модуля.
Используя метод ниже, вы можете иметь модули 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, выполните следующие шаги.
Сделано!!! вы можете проверить созданные вами классы в указанной вами папке. Например, в этом случае это /DaoExample/src-gen
ПРИМЕЧАНИЕ. Вы можете снова запустить проект Android, нажав меню запуска → Изменить конфигурацию. выберите свой проект и нажмите "ОК".
Ответ 2
Ниже представлен пошаговый обзор Интеграция GreenDao в проект Android.
[Ссылка Как использовать GeenDao с Android?]
[Ссылка на проект: Пример GreenDao]
ЧАСТЬ 1: Настройка GREENDAO
![Img 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]()
- Теперь в 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
-
Установите макет 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
![введите описание изображения здесь]()
Ответ 3
Я использовал этот учебник для Android Studio 0.8.9, и все работает нормально.
Ответ 4
Работает на Android 1.3 Preview
Для верхнего ответа (протестировано на Android Studio 1.0) вам может потребоваться включить эту исходную папку в ваш проект. Перейдите в app/build.gradle
добавьте следующий внутренний блок Android
sourceSets {
main{
java{
srcDir 'src-gen'
}
}
Ответ 5
Решение: IO-исключение
- Перейдите в сборку с вашего генератора dao.
- добавить: применить 'приложение'
- add: mainClassName = "you.package.include.Main"
- выполнить "запустить" в задаче приложения (gradle)
Я не знаю, почему он не работает, когда вы вручную создаете конфигурацию запуска.
Ответ 6
В принципе, вам нужно добавить модуль Java library (File > New > New module..) в ваш проект Android (при условии, что вы используете Android Studio), и вставьте поколение кода внутри public static void main(String[] args) {}
в этом модуле .java
. Затем запустите его, и код будет сгенерирован в основном модуле приложения.
Смотрите это сообщение в блоге для пошагового руководства с объяснением.