Android GreenDao with Android Studio IDE
转:http://blog.surecase.eu/using-greendao-with-android-studio-ide/
In this tutorial we will show you step by step how we have created sample application that presents our own Android Studio-GreenDao communication module. We tried to focus mainly on the implementation of database in freshly created Android Studio project and took other factors (such as layouts, modularity etc.) with a grain of salt. For those who haven't checked our Git yet - you can find our GreenDao module here.
So let's get started!
Step 1 - create new Android Project
For those who are not familiar with Android Studio IDE we recommend to go through Google tutorial - Getting Started With Android Studio.
To create new project please select File -> New Project. The New Project wizards pop up. Fill up fields according to your liking or do it the way we did:

- Press next. Check "Blank Activity" and next button again.
- Name your first activity
BoxListActivityand the layoutactivity_box_list. - Press finish.
And it's done. We have our project created. Now we can go to next step which is...
Step 2 - add GreenDao Generator module to project tree
We assume you have already downloaded our module. If not please go to our Git and do it now. Add MyDaoGenerator module to your project tree as additional package.

As you can see MyDaoGenerator is recognized as Directory and not as Module like DaoExample. To change it we have to edit settings.gradle so it contains both ':DaoExample' and ':MyDaoGenerator' :
include ':DaoExample', ':MyDaoGenerator'
After doing it, please click "Sync Project with Gradle Files" button. Your directory should look like a module now in project tree.
Step 3 - connect GreenDao Generator to DaoExample (main module)
So, MyDaoGenerator is currently recognized as a module. Now we have to configure it, so we can get database files from it. The only necessary thing to be changed is outputDir parameter inbuild.gradle file of MyDaoGenerator module.
| 12345678910111213141516171819202122 |
project(':MyDaoGenerator') {
apply plugin: 'application'
apply plugin: 'java'
mainClassName = "pl.surecase.eu.MyDaoGenerator"
// edit output direction
outputDir =
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile('de.greenrobot:DaoGenerator:1.3.0')
}
task createDocs {
def docs = file(outputDir)
docs.mkdirs()
}
run {
args outputDir
}
}
|
Currently our root is MyDaoGenerator. We want to access DaoExample, which needs database files. To go higher - our path will start with:
outputDir = "../"
We are currently in GreenDaoForAndroidStudio folder. We can easly go into DaoExample and create a directory for our database files. Java files in Android Studio project are stored in ../<PROJECT NAME>/src/main/java directory. To highlight the fact, that GreenDao database files are generated and will change in future as your project develops, we decided to create separate directory for them named java-gen.
Finaly our path looks like:
outputDir = "../DaoExample/src/main/java-gen"
There is no need to create this directory manualy. After running MyDaoGenerator it will be created during build.
Your GreenDao generator is now ready to inject database files to your project.
Step 4 - configure GreenDao Generator
MyDaoGenerator consists of only one class:

Output of GreenDao Generator is deremined by content of MyDaoGenerator.class. You can create your database structure here by coding objects, relations etc. If you are not familiar with GreenDao database library, you can learn how to use it in that documentation.
We will create exemplary database with only one object. Database code needs to be placed in main method:
public class MyDaoGenerator {
public static void main(String args[]) throws Exception {
}
}
Create Schema object with represents database version and package. We will name the package greendao.
Schema schema = new Schema(3, "greendao");
We create Entity - database object which will be named Box.
Entity box = schema.addEntity("Box");
Now we can add properties/fields to our database Entity/Object. For example:
- id
box.addIdProperty();
- String
name
box.addStringProperty("name");
- int
slots
box.addIntProperty("slots");
- String
description
box.addStringProperty("description");
Finaly we can invoke DaoGenerator object which is avaliable by default in MyDaoGenerator due to Maven tool (check gradle.build and dependencies section). DaoGenerator during run will create database java files that can be used in our main project. It takes two parameters: Schema and output directory.
new DaoGenerator().generateAll(schema, args[0]);
When you look at gradle.build there is a run section in which outputDir parameter is being sent to main method as an argument. That's why args[0] will always contain output path that you have set previously in gradle. Such operation limits actions performed on MyDaoGenerator to only three steps:
- set path in
gradle.buildfile - create your database in
MyDaoGenerator.class - run module
Step 5 - run GreenDao Generator
Pick Gradle bookmark from the right side of Android Studio interface. Choose MyDaoGenerator module and click twice on run task.

greenDAO Generator
Copyright 2011-2013 Markus Junginger, greenrobot.de. Licensed under GPL V3.
This program comes with ABSOLUTELY NO WARRANTY
Processing schema version 3...
Written /Users/surecase/dev/examples/GreenDaoForAndroidStudio/GreenDaoForAndroidStudio/DaoExample/src/main/java-gen/greendao/BoxDao.java
Written /Users/surecase/dev/examples/GreenDaoForAndroidStudio/GreenDaoForAndroidStudio/DaoExample/src/main/java-gen/greendao/Box.java
Written /Users/surecase/dev/examples/GreenDaoForAndroidStudio/GreenDaoForAndroidStudio/DaoExample/src/main/java-gen/greendao/DaoMaster.java
Written /Users/surecase/dev/examples/GreenDaoForAndroidStudio/GreenDaoForAndroidStudio/DaoExample/src/main/java-gen/greendao/DaoSession.java
Processed 1 entities in 103ms
BUILD SUCCESSFUL
Total time: 8.802 secs
After starting run task, you can track flow of this operation in Gradle console. When it's complete you can see new files in DaoExample project:

And that's all work connected to MyDaoGenerator. If you are familiar with it, generation of new database will take only few minutes.
Step 6 - make DaoExample aware of new files
So we have successfully created database files that are ready to be used in any Android project. The project needs to be aware where are those files located and familiar with GreenDao objects. To achieve this it is necessary to configure build.gradle file of DaoExample module. Fresh build.gradle file of a new project looks similar to this:
| 123456789101112131415161718192021222324 |
apply plugin: 'android'
android {
compileSdkVersion 19
buildToolsVersion "19.0.3"
defaultConfig {
minSdkVersion 11
targetSdkVersion 19
versionCode 1
versionName "1.0"
}
buildTypes {
release {
runProguard false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}
}
dependencies {
compile 'com.android.support:appcompat-v7:+'
compile fileTree(dir: 'libs', include: ['*.jar'])
}
|
- We need to clean it first from features that we won't use in our project - buildTypes section is not needed.
- To let our project use GreenDao database, first we need to import GreenDao library. We can do it by inserting *.jar file into
libsfolder or by adding extra Maven dependency in gradle:
dependencies {
compile 'de.greenrobot:greendao:1.3.7'
}
- Project is still not aware of new Java files because it isn't located in
../<PROJECT NAME>/src/main/javadirectory. To fix this we must specify projects source sets. It is important to point two java file sources:/src/main/javaand/src/main/java-gen. You can do it by placingsourceSetssection intoandroidsection ingradle.buildfile:
| 12345678910 |
android {
sourceSets {
main {
manifest.srcFile 'src/main/AndroidManifest.xml'
java.srcDirs = ['src/main/java', 'src/main/java-gen']
res.srcDirs = ['src/main/res']
}
}
}
|
Finaly our gradle will look like this:
| 12345678910111213141516171819202122232425262728 |
apply plugin: 'android'
android {
compileSdkVersion 19
buildToolsVersion "19.0.3"
defaultConfig {
minSdkVersion 11
targetSdkVersion 19
versionCode 1
versionName "1.0"
}
sourceSets {
main {
manifest.srcFile 'src/main/AndroidManifest.xml'
java.srcDirs = ['src/main/java', 'src/main/java-gen']
res.srcDirs = ['src/main/res']
}
}
}
dependencies {
compile 'com.android.support:appcompat-v7:+'
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'de.greenrobot:greendao:1.3.7'
}
|
When you finish editing gradle file, press "Sync Project with Gradle Files" button. Your java-gen directory will look the same as java folder in project tree.
Step 7 - start Database
Your project is ready to use previously created database. To have access to GreenDao database, you have to initialize it before using it. Right place for performing this operation is Application class which is instantiated for you when the process for your application/package is created. Initialization code can be found on GreenDao webpage. Application is avaliable from every activity, so we create DaoSession object which is avaliable during whole lifecycle of application and create getter for it.
| 12345678910111213141516171819202122 |
public class DaoExampleApplication extends Application {
public DaoSession daoSession;
@Override
public void onCreate() {
super.onCreate();
setupDatabase();
}
private void setupDatabase() {
DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(this, "example-db", null);
SQLiteDatabase db = helper.getWritableDatabase();
DaoMaster daoMaster = new DaoMaster(db);
daoSession = daoMaster.newSession();
}
public DaoSession getDaoSession() {
return daoSession;
}
}
|
Don't forget to register DaoExampleApplication class in your manifest:
<application
android:name=".DaoExampleApplication"
(...)
</application>
Step 8 - simple operations on DB object
Database generated in this tutorial has only one Entity - Box. To perform create, edit, save, delete on it, we need too create helper class with those methods. We name it BoxRepository. Each Entity created in GreenDao has two classes:
- class that represents structure of object
- Dao class which is a connection of object with database
In our example those clasess are named as Box and BoxDao. So if we want start working with Box objects we need to get BoxDao object from DaoSession that was created with Application class.
private static BoxDao getBoxDao(Context c) {
return ((DaoExampleApplication) c.getApplicationContext()).getDaoSession().getBoxDao();
}
With access to DaoBox we can perform any operation on Box object we need. Examplary BoxRepository from our project looks like this:
| 1234567891011121314151617181920212223242526 |
public class BoxRepository {
public static void insertOrUpdate(Context context, Box box) {
getBoxDao(context).insertOrReplace(box);
}
public static void clearBoxes(Context context) {
getBoxDao(context).deleteAll();
}
public static void deleteBoxWithId(Context context, long id) {
getBoxDao(context).delete(getBoxForId(context, id));
}
public static List<Box> getAllBoxes(Context context) {
return getBoxDao(context).loadAll();
}
public static Box getBoxForId(Context context, long id) {
return getBoxDao(context).load(id);
}
private static BoxDao getBoxDao(Context c) {
return ((DaoExampleApplication) c.getApplicationContext()).getDaoSession().getBoxDao();
}
}
|
Examplary use that can be used in every place where Context is avaliable:
Box box = new Box();
box.setId(5); // if box with id 5 already exists in DB, it will be edited instead of created
box.setName("My box");
box.setSlots(39);
box.setDescription("This is my box. I can put in it anything I wish.");
BoxRepository.insertOrUpdate(context, box);
Step 9 - rest is up to you
This is the end of this tutorial. You have all information and tools you need to start work with GreenDao database in your Android Studio project. There is no need to show you how to create views, buttons, adapters etc. If you are interested in it - whole source code and project structure of GreenDaoForAndroidStudio sample project is avaliable at SureCase git.
Android GreenDao with Android Studio IDE的更多相关文章
- [转] - Configuring Android Studio: IDE & VM Options, JDK, etc
Configuring Android Studio: IDE & VM Options, JDK, etc You should not edit any files in the IDE ...
- Android Studio IDE 插件开发
作者:字节跳动终端技术--周宸韬 概述 这篇文章旨在向读者介绍IntelliJ IDE插件的开发流程以及常用的一些通用功能,任何基于IntelliJ开发的IDE都可以通过该方式制作插件,例如Andro ...
- android studio IDE 下,设置ACTIVITY全屏
因为ANDROID STUDIO的JAVA类是继承AppCompatActivity的 ,所以常规的全屏设置并不管用.如果要设置全屏,请参照如下代码/ 1/首先,打开AndroidManifest.x ...
- how to use greendao in android studio
http://www.arjunsk.com/android/use-greendao-android-studio/ 1.新建一个java文件MainGenerator.java: import d ...
- [Android] Android GreenDao 保存 JavaBean 或者List <JavaBean>类型数据
Android GreenDao 保存 JavaBean 或者List <JavaBean>类型数据 简介 数据库存储数据基本上每个APP都有用到,GreenDAO 是一个将对象映射到 S ...
- Android开发工具Android Studio、Android SDK和Genymotion完全配置
所谓“工欲善其事,必先利其器”.Android Studio 是谷歌推出一个Android集成开发工具,基于IntelliJ IDEA. 类似 Eclipse ADT,Android Studio 提 ...
- 【Mac + Android】之Android Studio 环境搭建,AVD模拟器运行(包括:命令行运行AVD,并且Genymotion模拟器插件配置运行)
目录: 前提.Mac环境下手动配置Android SDK 一. Android Studio下载及配置 二.AVD模拟器配置运行 扩展:命令行运行AVD模拟器 三.在Android Studio 中配 ...
- 《Android Studio实战 快速、高效地构建Android应用》--Android Studio操作
前言 摩尔定律:CPU的处理能力大约18个月翻一倍 Android&Java:想要在Android Studio中开发Android App,必须以充分了解Java为前提(Java流行的原因: ...
- Android精通教程-Android入门简介
前言 大家好,我是 Vic,今天给大家带来Android精通教程-Android入门简介的概述,希望你们喜欢 每日一句 If life were predictable it would cease ...
随机推荐
- ADO.Net连接模式
1.SqlConnection类 (1).通过构造函数创建一个SqlConnection对象,可以同时指定连接字符串 (2).通过SqlConnection对象的Open()方法打开数据库连接 (3) ...
- DSOframer 的简单介绍和资源整理
DSOframer 是微软提供一款开源的用于在线编辑 Word. Excel .PowerPoint 的 ActiveX 控件.国内很多著名的 OA 中间件,电子印章,签名留痕等大多数是依此改进而来的 ...
- HTTP请求的基本概念 HTTP请求头和响应头的含义
1,HTTP请求的基本概念 TCP/UPD/HTTP *2,HTTP请求头和响应头的含义 请求头: Accept: text/html,image/*(浏览器可以接收的类型) Acc ...
- Jpa规范中persistence.xml 配置文件解析
使用spring data + hibernate 进行逻辑层操作时候需要配置 persistence.xml的内容 <?xml version="1.0"?> & ...
- 从客户端中检测到有潜在危险的Request.Form值的解决办法
http://www.pageadmin.net/article/20141016/935.html 如果你网站iis服务器asp.net采用了4.0的版本,则默认会阻止客户端的html内容提交,提交 ...
- 黑科技——编写一个无法卸载的App
之前经常听到朋友或者新闻媒体上报道说,有的朋友的android手机中病毒了,出现了软件无法卸载的情况,对于我这样一个从事android开发程序员来说,我还不是太相信(毕竟自己还是有点菜,哈哈).今天在 ...
- 跳跃表 C#
虽然avl树和红黑树在数据搜索和排序方面都是有效的数据结构,但是都显得特别麻烦,跳跃表就显得特别简单,虽然简单 不影响他性能,在平均情况下,其插入.删除.查找数据时间复杂度都是O ...
- php遍历目录输出目录及其下的所有图片文件
在做网站的时候,需要给文章内所有的图片添加上logo,如何利用ThinkPHP来实现. ThinkPHP为我们很好的提供了图像处理类,给文章中的所有图片加上水印的思路,上传的图片文件都保存在一个文件夹 ...
- python-md5加密
python实现:md5_hash.py #-*- coding: UTF-8 -*- ' __date__ = '2016/4/11' from Tkinter import * import ha ...
- Apache Spark2.0正式发布
Apache Spark2.0正式发布 7月26日起Databricks开始提供Apache Spark 2.0的下载,这个版本是基于社区在过去两年的经验总结而成,不但加入了用户喜爱的功能,也修复了之 ...