Flutter安卓集成Stripe报错:stripe_android:compileDebugKotlin执行失败
Flutter v3 安卓端集成Stripe支付构建失败问题
问题背景
- 项目Chrome Web环境可正常构建运行,安卓端配置严格参照Flutter Stripe官方文档完成,已将minSdk版本修改为21
- 在Infinix X5515F设备上以debug模式启动
lib/main.dart时触发编译错误,最终构建失败
现有配置内容
1. 文件路径:/android/app/src/main/res/values/styles.xml
<resources> <!-- 系统关闭深色模式时,进程启动阶段应用的Android窗口主题 --> <style name="LaunchTheme" parent="@android:style/Theme.Light.NoTitleBar"> <!-- 启动页展示的闪屏,Flutter绘制第一帧时会自动移除 --> <item name="android:windowBackground">@drawable/launch_background</item> </style> <!-- 进程启动完成后应用的Android窗口主题,决定Flutter UI初始化阶段、运行时Flutter UI下层的窗口颜色,仅在Flutter Android V2嵌入模式下生效 --> <style name="NormalTheme" parent="Theme.MaterialComponents"> <item name="android:windowBackground">?android:colorBackground</item> </style> </resources>
2. 文件路径:android/app/src/main/res/values-night/styles.xml
<?xml version="1.0" encoding="utf-8"?> <resources> <!-- 系统开启深色模式时,进程启动阶段应用的Android窗口主题 --> <style name="LaunchTheme" parent="Theme.AppCompat.Light.NoActionBar"> <!-- 启动页展示的闪屏,Flutter绘制第一帧时会自动移除 --> <item name="android:windowBackground">@drawable/launch_background</item> </style> <!-- 进程启动完成后应用的Android窗口主题,决定Flutter UI初始化阶段、运行时Flutter UI下层的窗口颜色,仅在Flutter Android V2嵌入模式下生效 --> <style name="NormalTheme" parent="Theme.MaterialComponents"> <item name="android:windowBackground">?android:colorBackground</item> </style> </resources>
3. 文件路径:MainActivity.kt
package com.example.ecomm import io.flutter.embedding.android.FlutterFragmentActivity class MainActivity: FlutterFragmentActivity() { }
4. 项目Gradle依赖配置
dependencies { classpath 'com.android.tools.build:gradle:7.1.2' }
报错日志
Kotlin编译阶段抛出如下错误:
e: /home/diljith/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/stripe_android-2.5.0/android/src/main/kotlin/com/flutter/stripe/StripeAubecsDebitPlatformViewFactory.kt: (13, 1): Class 'StripeAubecsDebitPlatformViewFactory' is not abstract and does not implement abstract base class member public abstract fun create(p0: Context?, p1: Int, p2: Any?): PlatformView defined in io.flutter.plugin.platform.PlatformViewFactory e: /home/diljith/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/stripe_android-2.5.0/android/src/main/kotlin/com/flutter/stripe/StripeAubecsDebitPlatformViewFactory.kt: (19, 5): 'create' overrides nothing e: /home/diljith/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/stripe_android-2.5.0/android/src/main/kotlin/com/flutter/stripe/StripeSdkCardFormPlatformViewFactory.kt: (12, 1): Class 'StripeSdkCardFormPlatformViewFactory' is not abstract and does not implement abstract base class member public abstract fun create(p0: Context?, p1: Int, p2: Any?): PlatformView defined in io.flutter.plugin.platform.PlatformViewFactory e: /home/diljith/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/stripe_android-2.5.0/android/src/main/kotlin/com/flutter/stripe/StripeSdkCardFormPlatformViewFactory.kt: (18, 5): 'create' overrides nothing e: /home/diljith/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/stripe_android-2.5.0/android/src/main/kotlin/com/flutter/stripe/StripeSdkCardPlatformViewFactory.kt: (12, 1): Class 'StripeSdkCardPlatformViewFactory' is not abstract and does not implement abstract base class member public abstract fun create(p0: Context?, p1: Int, p2: Any?): PlatformView defined in io.flutter.plugin.platform.PlatformViewFactory e: /home/diljith/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/stripe_android-2.5.0/android/src/main/kotlin/com/flutter/stripe/StripeSdkCardPlatformViewFactory.kt: (18, 5): 'create' overrides nothing e: /home/diljith/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/stripe_android-2.5.0/android/src/main/kotlin/com/flutter/stripe/StripeSdkGooglePayButtonPlatformViewFactory.kt: (12, 1): Class 'StripeSdkGooglePayButtonPlatformViewFactory' is not abstract and does not implement abstract base class member public abstract fun create(p0: Context?, p1: Int, p2: Any?): PlatformView defined in io.flutter.plugin.platform.PlatformViewFactory e: /home/diljith/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/stripe_android-2.5.0/android/src/main/kotlin/com/flutter/stripe/StripeSdkGooglePayButtonPlatformViewFactory.kt: (18, 5): 'create' overrides nothing
最终构建失败详情:
- 错误原因:执行任务
:stripe_android:compileDebugKotlin失败,存在Kotlin编译错误 - 排查提示:可添加
--stacktrace参数运行获取堆栈信息、添加--info或--debug参数输出更多日志、添加--scan参数获取完整构建分析报告 - 构建结果:总耗时26s,BUILD FAILED,Gradle任务
assembleDebug执行失败,退出码1,进程被sigterm信号终止
问题原因
*stripe_android 2.5.0版本内置的PlatformView工厂类实现,和Flutter v3版本的PlatformViewFactory抽象方法签名不兼容:Flutter v3更新了create方法的参数空安全定义,旧版本Stripe SDK的override方法签名不匹配,直接触发Kotlin编译报错。
解决方案
二选一即可:
- 方案1(推荐):升级flutter_stripe到最新稳定版本,新版SDK已完成Flutter v3的API适配。修改
pubspec.yaml中flutter_stripe的版本约束,执行依赖拉取后清理缓存重新编译:
flutter clean flutter pub get flutter run
- 方案2:若暂时无法升级Stripe SDK,手动对齐项目Kotlin版本为和AGP 7.1.2兼容的1.6.21版本。打开
android/build.gradle,在buildscript配置块中添加Kotlin版本声明,引入对应Gradle插件:
buildscript { ext.kotlin_version = '1.6.21' repositories { google() mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:7.1.2' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } }
修改完成后执行flutter clean清理构建缓存,重新编译即可。
内容的提问来源于stack exchange,提问作者Diljith_work v
相关产品推荐
相关产品推荐

