缩小apk时,Amplify.Auth.fetchAuthSession() userPoolTokens为空
Posted
技术标签:
【中文标题】缩小apk时,Amplify.Auth.fetchAuthSession() userPoolTokens为空【英文标题】:Amplify.Auth.fetchAuthSession() userPoolTokens is null when shrinking the apk 【发布时间】:2021-05-01 10:31:33 【问题描述】:我正在使用用于颤振的放大库来连接到我的 aws 后端。成功调用Amplify.Auth.signIn()
后,我使用Amplify.Auth.fetchAuthSession()
访问当前凭据。像这样:
final result = await Amplify.Auth.fetchAuthSession(
options: CognitoSessionOptions(getAWSCredentials: true),
);
if (!result.isSignedIn) return const None();
if (result is CognitoAuthSession)
return Some(result.userPoolTokens.idToken);
但是当我使用以下命令构建一个带有颤振的 apk 时,我的代码会中断。
flutter build apk
因为result.userPoolTokens
突然为空,我得到一个NoSuchMethodError
。在 null 上调用了 getter 'idToken'。但是,如果我禁用收缩并使用以下命令构建 apk,一切都会再次运行。
flutter build apk --no-shrink
所以我认为这与缩小有关,我更愿意缩小我的应用程序,因为缩小的 apk 明显更小。
不胜感激。
【问题讨论】:
【参考方案1】:这可能是由于 R8 收缩器应用的规则不充分。
Amplify android 库直到 2021 年 1 月 22 日发布的 1.6.10 版(参见 release notes)才提供任何 consumer-rules.pro
。
Amplify Flutter 的最新版本是0.0.2-dev.1,它使用 1.6.8 版本的 Android 库。我已经提出an issue on their GitHub repository,以更新到 1.6.10。
同时,您可以尝试在您的***应用项目中应用这些规则。
-keep class com.amazon.** *;
-keep class com.amazonaws.** *;
-keep class com.amplifyframework.** *;
【讨论】:
以上是关于缩小apk时,Amplify.Auth.fetchAuthSession() userPoolTokens为空的主要内容,如果未能解决你的问题,请参考以下文章