我之前曾经在AS中使用过它,但现在无法再次使用。虽然有一些教程,但似乎不适用于最新版本的AS。
当我从GitHub克隆时,会得到一个示例项目等内容。有没有一种方法可以安装GreenDaoGenerator而不带这些额外的东西呢?
我只是想找一个最新的、逐步详细的说明。
更新:我建议现在使用Realm.io!看看吧!:-)
任何帮助都将不胜感激!
在Android Studio 2.0上进行测试
使用Android Studio 0.6.1+(可能还有更早版本),您可以将非Android项目作为模块轻松地添加到Android项目中。
使用以下方法,您可以在同一项目中拥有Java模块(greenDaoGenerator
)和Android模块,同时也能够编译和运行Java模块作为独立的Java项目。
打开java项目的build.gradle文件,并添加以下依赖项:
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile('de.greenrobot:DaoGenerator:1.3.0')
}
将您的DaoGenerator
类复制到Java模块中,如果没有则创建一个。例如,我在我的Java模块中创建了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 项目中使用的类。
应该出现一个新的应用程序配置,请填写以下信息。
com.greendao.generator.ExampleDaoGenerator
完成了!您可以在您指定的文件夹中检查生成的类。例如,在本例中,它是 /DaoExample/src-gen
注意:您可以通过单击运行菜单 -> 编辑配置 再次运行 Android 项目。选择您的项目并单击确定。
compile('de.greenrobot:greendao:1.3.7')
。 - MiguelHincapieCException in thread "main" java.io.IOException: ../app/src-gen不存在。此检查是为了防止意外生成文件到错误的路径中。
你有什么想法如何解决这个问题吗?谢谢。 - Ultimo_msrc-gen
来解决了这个问题。 - Ultimo_mcompile 'de.greenrobot:greendao:2.1.0'
在“Module:greendao-generator”的build.gradle中插入以下内容。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");
}
}
第二部分:将其与Android项目集成
Set the activity_main.xml layout.
<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" />
In 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***---------------------------------------//
}
第三部分 - 查看SQL数据库
第四部分 - 额外内容
适用于Android 1.3预览版
对于排名第一的答案(在Android Studio 1.0上测试),您可能需要将该源文件夹包含在项目中。转到app/build.gradle
在android块内添加以下内容
sourceSets{
main{
java{
srcDir 'src-gen'
}
}
我已经使用这个教程来学习Android Studio 0.8.9,一切都运行良好。
解决方案:IO异常
我不知道为什么手动创建运行配置时它不起作用。
基本上,您需要做的是将一个Java库模块(文件>新建>新模块..)添加到您的Android项目中(假设您正在使用Android Studio),并将生成代码插入到此模块的.java
类中的public static void main(String[] args) {}
中。然后运行它,代码将在您的主应用程序模块中生成。
请参阅博客文章以获取逐步教程和说明。