GreenDao Android Studio

我正在寻找一个关于如何在Android Studio中导入GreenDao的清晰分步说明。

我之前在AS中使用过它,但是没能使它再次工作。 这里有一些教程,但它们似乎不适用于最新版本的AS。

当我从github克隆,我得到一个示例项目的东西等等。有没有办法安装GreenDaoGenerator没有这些额外的?

只是寻找一个最新的一步一步的解释。

更新:我build议现在使用Realm.io! 一探究竟! 🙂

任何帮助,将不胜感激!

Solutions Collecting From Web of "GreenDao Android Studio"

在Android Studio 2.0上testing

使用Android Studio 0.6.1+(可能更早),您可以轻松地将非Android项目作为模块添加到您的Android项目中。

使用下面的方法,您可以在同一个项目中使用Java模块( greenDaoGenerator )和Android模块,并且还可以将Java模块作为独立的Java项目进行编译和运行。

  1. 在Android Studio中打开您的Android项目。 如果你没有,创build一个。
  2. 单击文件>新build模块 。 selectJava库并单击下一步。
  3. 填写包名称等,然后单击完成。 你现在应该在你的Android项目中看到一个Java模块。
  4. 打开java项目的build.gradle文件并添加以下依赖项

     dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile('de.greenrobot:DaoGenerator:1.3.0') } 
  5. 复制你的DaoGenerator类或创build,如果你没有一个到你的Java模块。例如,我已经在我的Java模块中创build了ExampleDaoGenerator类。

     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. 点击顶部栏中运行菜单。 点击修改configuration…
  2. 在新窗口中,单击窗口左上angular的号,然后select应用程序
  3. 应该出现一个新的应用程序configuration,填写以下信息。

    1. 给它一个名字,例如greenDao。
    2. 主类中单击…button并select具有主要方法的生成器类。例如,在这种情况下,它是com.greendao.generator.ExampleDaoGenerator
    3. 工作目录中select你的java项目的path。
    4. 使用模块类select你的Java项目。 点击确定。
    5. 再次运行菜单,现在你可以看到如运行greendao。 点击它,它应该编译成功。

完成 !!! 你可以在你指定的文件夹中检查你生成的类。例如,在这种情况下,它是/DaoExample/src-gen

注意:你可以通过点击运行菜单 – > 编辑configuration再次运行你的android项目。 select你的项目,然后点击确定。

下面是将GreenDao集成到Android项目中的一步一步的概述。

[参考如何使用GeenDao与Android? ]

[项目链接: GreenDao示例 ]

PART1:设置GREENDAO

  1. 创build一个android项目。

  2. 单击文件>新build>新build模块 。 selectJava库并单击下一步。

图1

  1. 现在我们必须添加下面的Gradle依赖关系。

Module:app的 build.gradle中,插入

 compile 'de.greenrobot:greendao:2.1.0' 

图2

Module:greendao-generatorbuild.gradle中,插入

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

图3

确保你同步你的项目。

图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 ie 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. 运行这个之后,你会观察一个新创build的文件夹,即主项目文件夹中的数据库。

在这里输入图像说明

第2部分:将其与Android项目集成

  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. 运行应用程序之前,请确保您已更改您的configuration。 在这里输入图像说明

  2. 现在运行它。

第3部分 – 查看SQL DB

  1. 打开命令提示符。
  2. input以下命令。 在这里输入图像说明

  3. 在SQLite3中打开数据库文件 在这里输入图像说明

  4. 使用SQLite3 在这里输入图像说明

第4部分 – 附录

  1. GREENDAO的结构(核心类)

在这里输入图像说明

我已经使用这个教程的Android Studio 0.8.9,一切工作正常。

适用于Android 1.3预览

对于最佳答案(在Android Studio 1.0上testing),您可能需要将该源文件夹包含在您的项目中。 转到应用程序/ build.gradle

在android块内添加以下内容

sourceSets {

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

解决scheme:IOexception

  1. 从你的dao生成器转到生成。
  2. 添加:apply'application'
  3. add:mainClassName =“you.package.include.Main”
  4. 在应用程序任务(gradle任务)中执行“运行”

我不知道为什么它不起作用,当你手动创build一个运行configuration。

基本上,你需要的是添加一个Java库模块( 文件>新build>新模块.. )到你的Android项目(假设你正在使用Android Studio ),并在public static void main(String[] args) {}在这个模块的.java类中。 然后运行它,代码将在您的主应用程序的模块中生成。

看到这个博客文章一步一步教程与解释。