Amplify.Auth.fetchAuthSession() 压缩 apk 时 userPoolTokens 为 null
Amplify.Auth.fetchAuthSession() userPoolTokens is null when shrinking the apk
我正在使用 flutter 的放大库连接到我的 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);
}
但是当我使用以下命令构建带有 flutter 的 apk 时,我的代码中断了。
flutter build apk
因为 result.userPoolTokens
突然为空,我得到一个 NoSuchMethodError
。 getter 'idToken' 被调用为 null。但是,如果我禁用收缩并使用以下命令构建 apk,一切都会再次运行。
flutter build apk --no-shrink
所以我认为这与收缩有关,我更愿意收缩我的应用程序,因为收缩后的 apk 明显更小。
非常感谢任何帮助。
这可能是由于对 R8 收缩器应用的规则不充分。
Amplify Android 库在 2021 年 1 月 22 日刚刚发布的版本 1.6.10(参见 release notes)之前没有出售任何 consumer-rules.pro
。
Amplify Flutter最新版本是0.0.2-dev.1, and it consumes version 1.6.8 of the Android library. I've raised an issue on their GitHub repository,更新到1.6.10。
同时,您可以尝试在您的顶级应用程序项目中应用这些规则。
-keep class com.amazon.** { *; }
-keep class com.amazonaws.** { *; }
-keep class com.amplifyframework.** { *; }
我正在使用 flutter 的放大库连接到我的 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);
}
但是当我使用以下命令构建带有 flutter 的 apk 时,我的代码中断了。
flutter build apk
因为 result.userPoolTokens
突然为空,我得到一个 NoSuchMethodError
。 getter 'idToken' 被调用为 null。但是,如果我禁用收缩并使用以下命令构建 apk,一切都会再次运行。
flutter build apk --no-shrink
所以我认为这与收缩有关,我更愿意收缩我的应用程序,因为收缩后的 apk 明显更小。
非常感谢任何帮助。
这可能是由于对 R8 收缩器应用的规则不充分。
Amplify Android 库在 2021 年 1 月 22 日刚刚发布的版本 1.6.10(参见 release notes)之前没有出售任何 consumer-rules.pro
。
Amplify Flutter最新版本是0.0.2-dev.1, and it consumes version 1.6.8 of the Android library. I've raised an issue on their GitHub repository,更新到1.6.10。
同时,您可以尝试在您的顶级应用程序项目中应用这些规则。
-keep class com.amazon.** { *; }
-keep class com.amazonaws.** { *; }
-keep class com.amplifyframework.** { *; }