【问题标题】:DynamoDbMapperException: No method annotated?DynamoDbMapperException:没有方法注释?
【发布时间】:2015-09-12 13:28:58
【问题描述】:

在我的 Android 应用程序中,我使用 DynamoDb。我创建了一个类,它与一个数据库表映射。应用程序在调试中正常运行。但是如果我导出 apk 并运行应用程序,我会得到 DynamoDbMapperException:

Caused by: com.amazonaws.mobileconnectors.dynamodbv2.dynamodbmapper.DynamoDBMappingException: No method annotated with interface com.amazonaws.mobileconnectors.dynamodbv2.dynamodbmapper.DynamoDBHashKey for class class com.example.myclass.

我使用 Eclipse 和 proguard 来导出 apk。我猜 proguard 会导致问题,因为没有 proguard 的 apk 可以正常工作。 这是我的 Proguard 配置:

-keepattributes *Annotation*
-keep public class com.example.myclass

请帮帮我!我不知道如何解决这个问题。

【问题讨论】:

    标签: android proguard amazon-dynamodb


    【解决方案1】:

    您使用的是 DynamoDB 表吗?

    你需要一个类的哈希键,你应该用@DynamoDBHashKey注释字段,你不小心把它注释为@DynamoDBIndexHashKey吗?如果是这样,你应该把它改回来。

    类似的参考可以在这里找到

    Android Amazon DynamoDb error in basic action

    编辑: 尝试改变

    -keep public class com.example.myclass
    

    -keep public class com.example.myclass {
        *;
    }
    

    【讨论】:

    • 我确实有一个 DynamoDbHashKey。我的班级在调试中正常工作。只有在导出 apk 文件后我才得到错误。
    • 非常感谢!我也找到了答案。你的答案是正确的。 { *;} 部分是否允许将变量和方法保留在类中?
    • 是的,完全正确。如果您只需要字段,您可以指定 而不是 *,您可以参考 Proguard 文档了解更多详细信息。
    猜你喜欢
    • 2018-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-29
    • 2011-09-07
    • 2018-09-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多