应用新版本需要用到数据库,就想起来朋友们一直推荐的greendao,但是由于项目做了不同的马甲包配置,也就是配置了不同的productFlavors
最开始自以为是的在不同的flavor中创建不同的greendao task,编译发现它的自动生成代码只在最后配置好的目录中,而不是不同的flavor不同的位置
然后就是一顿谷歌搜索,最后在这里解决了,原文如下
https://github.com/greenrobot/greenDAO/issues/899
具体步骤:
1. 创建获取当前flavor的函数
def getCurrentFlavor() {
Gradle gradle = getGradle()
String tskReqStr = gradle.getStartParameter().getTaskRequests().toString()
Pattern pattern
if( tskReqStr.contains( "assemble" ) )
pattern = Pattern.compile("assemble(\\w+)(Release|Debug)")
else
pattern = Pattern.compile("generate(\\w+)(Release|Debug)")
Matcher matcher = pattern.matcher( tskReqStr )
if( matcher.find() )
return matcher.group(1).toLowerCase()
else
{
println "NO MATCH FOUND"
return ""
}
}
2. 在greendao 配置那里用上面得到的结果
greendao {
schemaVersion 1
daoPackage "com.xxx.greendao" // 自己起的dao 包名
targetGenDir "src/${getCurrentFlavor()}/java" //就是在这里获取到当前的flavor
}
完成!