Flutter集成Microsoft Azure SSO登录遇ClassNotFoundException崩溃求解决
Flutter AppAuth集成Azure SSO Android端崩溃(ClassNotFoundException)解决办法
这个崩溃是因为Android找不到flutter_appauth库的CallbackActivity类,以下是具体解决步骤:
检查AndroidManifest.xml配置
必须在AndroidManifest.xml里声明CallbackActivity,还要适配Android 12+的导出要求,代码示例:<activity android:name="com.linusu.flutter_appauth.CallbackActivity" android:exported="true"> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <!-- 替换成你Azure配置里的redirectUri对应的scheme,比如msal开头的客户端ID --> <data android:scheme="msalYOUR_CLIENT_ID" /> </intent-filter> </activity>验证flutter_appauth依赖版本
确认pubspec.yaml里的依赖是最新稳定版,避免旧版本的兼容性问题,比如:dependencies: flutter_appauth: ^6.1.0执行
flutter pub get更新依赖。清理并重建项目
- 运行
flutter clean清理项目缓存 - 执行
flutter build apk --debug(或release版本)重新构建 - 也可以在Android Studio里点击
File > Invalidate Caches... > Invalidate and Restart,彻底清理缓存后重启
- 运行
处理多Dex与混淆问题
如果应用开启了多Dex,要确保CallbackActivity被包含在主Dex中:- 在android/app/build.gradle里开启multiDex:
android { defaultConfig { multiDexEnabled true } } - 若开启了代码混淆,在proguard-rules.pro里添加规则避免类被混淆:
-keep class com.linusu.flutter_appauth.** { *; }
- 在android/app/build.gradle里开启multiDex:
内容的提问来源于stack exchange,提问作者Yogesh Kumawat
相关产品推荐
相关产品推荐

