通过Android APK部署时,AWS Amplify Ffltter的身份验证注册功能不起作用 [英] AWS Amplify Flutter's auth signup function is not working when deployed via Android APK

查看:0
本文介绍了通过Android APK部署时,AWS Amplify Ffltter的身份验证注册功能不起作用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在我的Ffltter应用程序中使用AWS的Amplify Auth的注册功能。这个 当我在Android Studio中运行代码并对其进行测试时,函数工作正常 仿真器/电话。我可以将新用户添加到Cognito并验证该用户。

但是,当我构建APK并尝试在同一模拟器/电话上运行该APK时, 注册功能在Logcat中抛出一些错误,注册不起作用 就像在调试期间一样。我不明白为什么这个错误没有 在我通过Android Studio测试代码时发生。

以下是错误:

2020-10-28 07:05:27.554 14035-14035/? E/MethodChannel#com.amazonaws.amplify/auth_cognito: Failed to handle method call
    e.d: null cannot be cast to non-null type java.lang.reflect.Method
        at com.amazonaws.amplify.amplify_auth_cognito.types.FlutterSignUpRequest.a(Unknown Source:203)
        at com.amazonaws.amplify.amplify_auth_cognito.types.FlutterSignUpRequest.<init>(Unknown Source:96)
        at com.amazonaws.amplify.amplify_auth_cognito.AuthCognito.i(Unknown Source:10)
        at com.amazonaws.amplify.amplify_auth_cognito.AuthCognito.a(Unknown Source:150)
        at d.a.b.a.j$a.a(Unknown Source:17)
        at io.flutter.embedding.engine.e.b.a(Unknown Source:57)
        at io.flutter.embedding.engine.FlutterJNI.handlePlatformMessage(Unknown Source:4)
        at android.os.MessageQueue.nativePollOnce(Native Method)
        at android.os.MessageQueue.next(MessageQueue.java:336)
        at android.os.Looper.loop(Looper.java:174)
        at android.app.ActivityThread.main(ActivityThread.java:7397)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:935)
2020-10-28 07:05:27.556 14035-14063/? E/flutter: [ERROR:flutter/lib/ui/ui_dart_state.cc(166)] Unhandled Exception: NoSuchMethodError: The method 'forEach' was called on null.
    Receiver: null
    Tried calling: forEach(Closure: (dynamic, dynamic) => Set<Set<dynamic>>)
    #0      Object.noSuchMethod (dart:core-patch/object_patch.dart:51)
    #1      AmplifyAuthCognitoMethodChannel._throwError (package:amplify_auth_cognito/method_channel_auth_cognito.dart:330)
    #2      AmplifyAuthCognitoMethodChannel.signUp (package:amplify_auth_cognito/method_channel_auth_cognito.dart:40)
    <asynchronous suspension>
    #3      AmplifyAuthCognito.signUp (package:amplify_auth_cognito/amplify_auth_cognito.dart:45)
    <asynchronous suspension>
    #4      _State._registerUser (package:confab_app/SignUp_Screen.dart:36)
    <asynchronous suspension>

以下是我的代码:

import 'package:flutter/material.dart';
import 'package:amplify_auth_cognito/amplify_auth_cognito.dart';
import 'package:amplify_core/amplify_core.dart';

class SignUpPage extends StatefulWidget {
  @override
  State<StatefulWidget> createState() => new _State();
}

class _State extends State<SignUpPage> {
  bool isSignUpComplete = false;
  TextEditingController nameController = TextEditingController();
  TextEditingController passwordController = TextEditingController();

  @override
  void dispose() {
    // Clean up the controller when the widget is removed from the
    // widget tree.
    nameController.dispose();
    passwordController.dispose();

    super.dispose();
  }

  void _registerUser() async
  {
    try {
      Map<String, dynamic> userAttributes = {
        "email": nameController.text,
        // additional attributes as needed
      };
      SignUpResult res = await Amplify.Auth.signUp(
          username: nameController.text.trim(),
          password: passwordController.text.trim(),
          options: CognitoSignUpOptions(
              userAttributes: userAttributes
          )
      );
      setState(() {
        isSignUpComplete = res.isSignUpComplete;
      });
      navigateToConfirmPage(context);

    } on AuthError catch (e) {
      print(e);
    }
  }

推荐答案

问题在于R8删除某些Amplify的文件。 在proguard_rules.pro文件中包括以下两个检查

-keep class com.amazonaws.** { *; }
-keep class com.amplifyframework.** { *; }

请注意:此错误仅在没有no-shrink标志的版本apk版本上出现。

这篇关于通过Android APK部署时,AWS Amplify Ffltter的身份验证注册功能不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆