我在iOS上做了一段时间后终于学习了Android开发。我没有很多术语,所以请善待。
在最初创建我自己的sqlite文件(通过SQLiteOpenHelper子类)并尝试自己处理所有持久化的数据模型之后,我决定选择一些第三方代码来处理所有这些。我公司的Android工程师建议使用GreenDAO。
为了创建模型和DAO对象(我也认为是sqlite文件),我还被指示设置一些gradle构建脚本。这是我认为我有些不对劲的地方。
我使用的是Android Studio,项目结构的相关部分看起来像这样......
- Project Directory
- app
- build.gradle
- buildSrc
- src/main/groovy/com/ridinghorses/app
- DatabaseBuilder.groovy
- build.gradle
- build.gradle
在我的项目目录中的build.gradle
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.9.+'
}
}
allprojects {
repositories {
mavenCentral()
}
}
在我的buildSrc目录中的build.gradle ...
repositories {
mavenCentral()
}
dependencies {
compile 'de.greenrobot:greendao-generator:1.3.+@jar'
compile 'org.freemarker:freemarker:2.3.+'
}
在我的app目录中的build.gradle
apply plugin: 'android'
import com.ridinghorses.app.DatabaseBuilder;
android {
compileSdkVersion 19
buildToolsVersion "19.0.3"
defaultConfig {
minSdkVersion 8
targetSdkVersion 19
versionCode 1
versionName "1.0"
}
buildTypes {
release {
runProguard false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:19.+'
}
task buildDatabase {
inputs.file file('../buildSrc/src/main/groovy/com/ridinghorses/app/DatabaseBuilder.groovy')
outputs.dir file('src/main/java/com/ridinghorses/app/database/dao')
doLast {
println('Calling DatabaseBuilder::buildDatabase')
new DatabaseBuilder().buildDatabase(file('src/main/java/').path)
}
}
最后在我的DatabaseBuilder.groovy文件中
package com.ridinghorses.app
import de.greenrobot.daogenerator.DaoGenerator
import de.greenrobot.daogenerator.DaoUtil
import de.greenrobot.daogenerator.Entity
import de.greenrobot.daogenerator.Schema
public class DatabaseBuilder {
// tables
private Entity tier
private Entity lesson
def buildDatabase(String outPath) {
println("DatabaseBuilder::buildDatabase")
def schema = new Schema(1, "com.ridinghorses.app.database.dao")
tier = schema.addEntity('Tier')
lesson = schema.addEntity('Lesson')
buildTierTable()
buildLessonTable()
def generator = new DaoGenerator()
generator.generateAll(schema, outPath)
}
private buildTierTable() {
tier.addIdProperty()
.primaryKey()
addStringProperty(tier, 'title')
.notNull()
.index()
}
private buildLessonTable() {
lesson.addIdProperty()
.primaryKey()
addStringProperty(lesson, 'title')
def tierId = addLongProperty(lesson, 'tierId').getProperty()
lesson.addToOne(tier, tierId)
}
}
完成所有这些后,我将我的项目与gradle文件同步并构建。我从未在Android Studio的控制台或Logcat中看到任何println语句,我从未看到我的任何模型生成。我也从未收到任何错误,说我做错了。
如果我故意输入语法错误,则构建过程会停止,并且会收到错误消息。所以这告诉我它至少试图对我生成的文件做些什么。但我不确定下一步该尝试什么。您无法设置断点。那么你可以设置它们,它们只是不会被击中。