我在 android 中创建 amazon coginto 后出现错误

Posted

技术标签:

【中文标题】我在 android 中创建 amazon coginto 后出现错误【英文标题】:am getting error after i created amazon coginto in android 【发布时间】:2016-05-30 13:35:00 【问题描述】:

您好,我正在做一个项目,将数据同步到 amazon coginto 并且工作正常,并且也成功签署了 apk。

现在的问题是调试后出现错误

“AWS http 客户端类名 b 的后缀无法识别”

【问题讨论】:

你能提供堆栈跟踪吗? 【参考方案1】:

您可能打开了 Proguard 并混淆了类名。 SDK 根据类名进行反射。没有它,某些功能可能无法正常工作。配置请看指令https://github.com/aws/aws-sdk-android/blob/master/Proguard.md。

【讨论】:

谢谢!不幸的是,这些规则我仍然遇到同样的错误。【参考方案2】:

Girdhar G. Patel 的解决方案适用于 aws sdk 版本 1,答案的来源在这里:https://aws.amazon.com/blogs/mobile/using-proguard-with-the-aws-sdk-for-android/

如果您使用的是第二版,则需要不同的 proguard 配置才能使其正常工作: (来源:https://github.com/krschultz/android-proguard-snippets/blob/master/libraries/proguard-aws-2.1.5.pro)

# These options are the minimal options for a functioning application
# using Proguard and the AWS SDK 2.1.5 for Android

-keep class org.apache.commons.logging.**                *; 
-keep class com.amazonaws.org.apache.commons.logging.**  *; 
-keep class com.amazonaws.services.sqs.QueueUrlHandler   *; 
-keep class com.amazonaws.javax.xml.transform.sax.*      public *; 
-keep class com.amazonaws.javax.xml.stream.**            *; 
-keep class com.amazonaws.services.**.model.*Exception*  *; 
-keep class com.amazonaws.internal.**                    *; 
-keep class org.codehaus.**                              *; 
-keep class org.joda.time.tz.Provider                    *; 
-keep class org.joda.time.tz.NameProvider                *; 
-keepattributes Signature,*Annotation*,EnclosingMethod
-keepnames class com.fasterxml.jackson.**  *; 
-keepnames class com.amazonaws.**  *; 

-dontwarn com.fasterxml.jackson.databind.**
-dontwarn javax.xml.stream.events.**
-dontwarn org.codehaus.jackson.**
-dontwarn org.apache.commons.logging.impl.**
-dontwarn org.apache.http.conn.scheme.**
-dontwarn org.apache.http.annotation.**
-dontwarn org.ietf.jgss.**
-dontwarn org.joda.convert.**
-dontwarn com.amazonaws.org.joda.convert.**
-dontwarn org.w3c.dom.bootstrap.**

#SDK split into multiple jars so certain classes may be referenced but not used
-dontwarn com.amazonaws.services.s3.**
-dontwarn com.amazonaws.services.sqs.**

-dontnote com.amazonaws.services.sqs.QueueUrlHandler

【讨论】:

【参考方案3】:

我也有同样的问题。仅当我在 kitkat 和 JellyBean 设备上运行我的发行版 apk 时才遇到此问题。我在 proguard 文件中添加了以下规则并且它起作用了。

-keep class org.apache.commons.logging.**                *; 
-keep class com.amazonaws.services.sqs.QueueUrlHandler   *; 
-keep class com.amazonaws.javax.xml.transform.sax.*      public *; 
-keep class com.amazonaws.javax.xml.stream.**            *; 
-keep class com.amazonaws.services.**.model.*Exception*  *; 
-keep class org.codehaus.**                              *; 
-keepattributes Signature,*Annotation*

-dontwarn javax.xml.stream.events.**
-dontwarn org.codehaus.jackson.**
-dontwarn org.apache.commons.logging.impl.**
-dontwarn org.apache.http.conn.scheme.**

-dontwarn com.amazonaws.util.json.**

-keepnames class com.amazonaws.**
-keepnames class com.amazon.**

-keep class com.amazonaws.services.**.*Handler

-dontwarn com.fasterxml.jackson.**
-dontwarn org.apache.commons.logging.**

-dontwarn org.apache.http.**

-dontwarn com.amazonaws.http.**
-dontwarn com.amazonaws.metrics.**

【讨论】:

以上是关于我在 android 中创建 amazon coginto 后出现错误的主要内容,如果未能解决你的问题,请参考以下文章

带有 facebook 身份验证的 Amazon cognito 身份管理

无法使用 Psycopg2 在 Amazon Redshift 中创建表

生成带有日期和小时的时间序列并在 Amazon Redshift 中创建表

在 Amazon S3 中将在 aws3 存储桶中创建的文件夹设为公共或私有文件夹

我可以在包含 UI 和逻辑/代码的 Android 中创建一个独立的“用户控件”吗?

我在 Flutter 中创建了一个 android 通知 channel_id,但是,将 FCM 发送到该通道不会导致振动或声音