https://www.jianshu.com/p/0748b5098ad0
这段时间在处理app解耦(多module组合),一个module对应一个数据库。这里除了app,还有base、world两个module,每个module均添加引用
annotationProcessor "com.github.Raizlabs.DBFlow:dbflow-processor:${DBFLOW_VERSION}"
compile "com.github.Raizlabs.DBFlow:dbflow-core:${DBFLOW_VERSION}"
compile "com.github.Raizlabs.DBFlow:dbflow:${DBFLOW_VERSION}"
base、world两个module各自有单独的database
@Database(version = BaseDatabase .VERSION)
public class BaseDatabase {
//数据库版本号
public static final int VERSION =6;
}
@Database(version = WorldDatabase.VERSION)
public class WorldDatabase {
//数据库版本号
public static final int VERSION =6;
}
在各自module中使用对应的database,编译没问题,运行时提示
com.raizlabs.android.dbflow.structure.InvalidDBConfiguration: Model object: com.world.entity.PostItem is not registered with a Database. Did you forget an annotation?
看官方文档给多module的解决方案:
apt {
arguments {
targetModuleName 'SomeUniqueModuleName'
}
}
public void initialize(Contextcontext) {
FlowManager.init(FlowConfig.builder(context)
.addDatabaseHolder(SomeUniqueModuleNameGeneratedDatabaseHolder.class)
.build());
}
但是现在的问题是 apt 已经不维护了,我们是否还能通过啥方法进行处理呢?
Android注解使用之注解编译android-apt如何切换到annotationProcessor
https://www.cnblogs.com/whoislcj/p/6148410.html
按照上文,修改了base的build.gradle,world同理
android {
...
defaultConfig{
...
javaCompileOptions {
annotationProcessorOptions {
arguments = [targetModuleName:'Base']
}
}
}
}
public void initialize(Contextcontext) {
FlowManager.init(FlowConfig.builder(context)
.addDatabaseHolder(BaseGeneratedDatabaseHolder.class)
.addDatabaseHolder(WorldGeneratedDatabaseHolder.class)
.build());
}
再次编译运行,问题解决。特此记录下
作者:freeChange
链接:https://www.jianshu.com/p/0748b5098ad0
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。