标签: greendao-generator

仅使用Proguard:无法初始化DaoConfig => ArrayIndexOutOfBoundsException

我使用以下ProGuard规则:

-keepclassmembers class * extends org.greenrobot.greendao.AbstractDao { *; }
-keep class **$Properties

-keep class org.greenrobot.greendao.**
-keepclassmembers class org.greenrobot.greendao.** { *; }

# If you do not use SQLCipher:
-dontwarn org.greenrobot.greendao.database.**

# If you do not use RxJava:
-dontwarn rx.**

启动应用程序时,我收到以下崩溃日志:

java.lang.RuntimeException: Unable to create application my.app.package.MyApplication: org.greenrobot.greendao.DaoException: Could not init DAOConfig
   at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4569)
   at android.app.ActivityThread.access$1500(ActivityThread.java:148)
   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
   at android.os.Handler.dispatchMessage(Handler.java:102)
   at android.os.Looper.loop(Looper.java:135)
   at android.app.ActivityThread.main(ActivityThread.java:5272)
   at java.lang.reflect.Method.invoke(Native Method)
   at java.lang.reflect.Method.invoke(Method.java:372)
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:909)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:704)
Caused by: org.greenrobot.greendao.DaoException: Could not init DAOConfig
   at …

android greendao greendao-generator android-proguard

19
推荐指数
3
解决办法
1592
查看次数

在GreenDAO关系之前为属性设置codeBeforeField

我最近开始在我的Android应用程序中使用GreenDao,我正在创建一个类别实体,它应该有多个类别实体作为子项.因此我使用树关系如下:

Entity category = schema.addEntity("Category");
...
Property parentIdProperty = category.addLongProperty("parentId").getProperty();
category.addToOne(category, parentIdProperty).setName("parent");
category.addToMany(category, parentIdProperty).setName("children");
Run Code Online (Sandbox Code Playgroud)

这是根据需要创建正确的代码,我有以下内容:

private List<Category> children;
Run Code Online (Sandbox Code Playgroud)

问题

问题是我需要在此属性之前使用@SerializedName属性,因为我正在将具有不同字段名称的一些json(从另一个服务获得)解析为这些Category实体.

对于其他属性,我使用codeBeforeField()方法正确生成属性:

category.addStringProperty("categoryId").codeBeforeField("@SerializedName( \"Id\" )");
Run Code Online (Sandbox Code Playgroud)

有没有办法在这个'children'属性上设置codeBeforeField以添加@SerializedName属性?或者也许还有其他方法可以在我的'children'属性之前生成这个属性?

我试图寻找方法,所以在关系上设置这个,但似乎这个方法只在PropertyBuilder上可用.有没有办法从ToMany关系中检索PropertyBuilder?

任何帮助,将不胜感激.谢谢.

serialization android json greendao greendao-generator

5
推荐指数
0
解决办法
193
查看次数

无法解析 java.lang.Object 类型。它是从所需的 .class 文件 android studio 间接引用的

上述错误有很多问题,但其中大部分与 eclipse 相关,对我来说,它发生在 android studio 中,也适用于迄今为止运行良好的项目。

我的 android 项目一直运行良好,然后突然开始出现此构建错误。不知道问题到底出在哪里,但我在日志中看到了一些关于 greendao 的痕迹。

FAILURE:构建失败,出现异常。

任务 :driver_module:greendao FAILED 发现 2 个解析“/Users/../Code/MyApplication/driver_module/src/main/java/../sdk/MyEvents.java”的问题:#0 @1:类型 java .lang.Object 无法解析。它是从所需的 .class 文件间接引用的(ID:16777540;错误:true)#1 @1:无法解析类型 java.lang.String。它是从所需的 .class 文件间接引用的(ID:16777540;错误:true)

编辑:我发现这有点接近,但这对我也不起作用。 https://github.com/greenrobot/greenDAO/issues/931

android gradle gradlew build.gradle greendao-generator

3
推荐指数
2
解决办法
1293
查看次数

greenDAO:找不到ftl-templates

我正在使用greenDAO for Android,我想编辑greenDAO生成器,因为它会覆盖我每次在数据库上更改内容时需要的@SerializedName.

所以我通过文件 - >新建 - >导入模块将https://github.com/greenrobot/greenDAO中的 greenDAO添加到我的Android Studio项目中,然后选择了GreenDaoGenerator模块.

接下来,我构建我的java模块来生成greenDAO数据库,它使用GreenDaoGenerator模块作为依赖项,我得到一个例外,找不到模板dao.ftl.

有人可以帮帮我吗?我是Android的新手,不检查,为什么它找不到该文件.

Exception in thread "main" java.io.FileNotFoundException: Template "dao.ftl" not found.
at freemarker.template.Configuration.getTemplate(Configuration.java:742)
at freemarker.template.Configuration.getTemplate(Configuration.java:665)
at de.greenrobot.daogenerator.DaoGenerator.<init>(DaoGenerator.java:65)
at com.example.GreenDaoCreater.main(GreenDaoCreater.java:39)
Run Code Online (Sandbox Code Playgroud)

编辑:这是项目结构的截图.我希望它有所帮助.

在此输入图像描述

android greendao greendao-generator

2
推荐指数
1
解决办法
3302
查看次数