Flutter集成RazorPay测试模式运行报错:找不到classes.dex条目
解决Flutter集成RazorPay时“Failed to find entry 'classes.dex'”报错
1. 清理项目缓存并重建
执行以下命令彻底清理缓存后重新构建:
flutter clean cd android && ./gradlew clean flutter pub get flutter run
2. 升级RazorPay依赖版本
当前razorpay_flutter: ^1.4.0可能与高版本Gradle/Android SDK存在兼容问题,修改pubspec.yaml升级到最新稳定版:
dependencies: flutter: sdk: flutter cupertino_icons: ^1.0.8 razorpay_flutter: ^1.5.1 # 替换为最新稳定版本 http: ^1.4.0
3. 优化Android Dex构建配置
在app/build.gradle.kts中添加Dex相关配置,确保生成正确的classes.dex文件:
android { // ...现有配置 dexOptions { javaMaxHeapSize "4g" } buildTypes { release { signingConfig = signingConfigs.getByName("debug") multiDexKeepProguard file('multidex-config.pro') } debug { multiDexKeepProguard file('multidex-config.pro') } } }
在app目录下创建multidex-config.pro文件,添加RazorPay类的保留规则:
-keep class com.razorpay.** {*;} -dontwarn com.razorpay.**
4. 移除无关权限请求
代码中bluetoothConnect权限与支付功能无关,可能引入额外依赖冲突,删除相关代码:
- 移除
pubspec.yaml中的permission_handler依赖 - 删除
Main.dart中以下代码:
// 移除权限请求方法 Future<void> requestBluetoothPermission() async { if (await Permission.bluetoothConnect.isDenied) { await Permission.bluetoothConnect.request(); } } // 移除_checkOpen方法中的权限调用 void _checkOpen() async { // 去掉这一行:await requestBluetoothPermission(); var options = { // ...现有配置 }; // ...现有代码 }
5. 验证Gradle插件兼容性
确保项目级android/build.gradle.kts中的插件版本与gradle-8.9匹配:
plugins { id("com.android.application") version "8.4.0" apply false id("org.jetbrains.kotlin.android") version "1.9.20" apply false id("dev.flutter.flutter-gradle-plugin") version "1.0.0" apply false }
内容的提问来源于stack exchange,提问作者PARAS Infotech
相关产品推荐
相关产品推荐

