java - 在 Flutter 中从 Play 商店获取产品时应用内购买崩溃
问题描述
在安装和实施Flutter 团队提供的应用内购买插件后,我遇到了一个问题。到目前为止我做了什么:
- 在 Play 商店中添加了 2 个可见且活跃的产品。
- 提交构建以进行 alpha 测试,因为这是应用内购买工作所必需的。
InAppPurchaseConnection.enablePendingPurchases();
在应用启动时添加- 创建了对应用商店的一系列请求,其中最后一个因讨厌的日志而失败,我无法解决
bool available = await _iap.isAvailable();
if (!available) {
print('=========> The store cannot be reached or accessed.');
} else {
Set<String> _kIds = {'farm', 'forest'};
ProductDetailsResponse productsResponse = await _iap.queryProductDetails(_kIds);
List<ProductDetails> products = productsResponse.productDetails;
}
}
- 目前
queryProductDetails
每次都会崩溃,并显示以下日志:
E/AndroidRuntime( 9053): java.lang.NoSuchMethodError: No virtual method getIntroductoryPriceCycles()Ljava/lang/String; in class Lcom/android/billingclient/api/SkuDetails; or its super classes (declaration of 'com.android.billingclient.api.SkuDetails' appears in /data/app/com.my.fancy.app-6ImcBn8ELPgiO8hTXXp_3Q==/base.apk)
E/AndroidRuntime( 9053): at io.flutter.plugins.inapppurchase.Translator.fromSkuDetail(Translator.java:27)
E/AndroidRuntime( 9053): at io.flutter.plugins.inapppurchase.Translator.fromSkuDetailsList(Translator.java:49)
E/AndroidRuntime( 9053): at io.flutter.plugins.inapppurchase.MethodCallHandlerImpl$1.onSkuDetailsResponse(MethodCallHandlerImpl.java:185)
E/AndroidRuntime( 9053): at com.android.billingclient.api.zzj.run(com.android.billingclient:billing@@3.0.0:8)
E/AndroidRuntime( 9053): at android.os.Handler.handleCallback(Handler.java:873)
E/AndroidRuntime( 9053): at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime( 9053): at android.os.Looper.loop(Looper.java:193)
E/AndroidRuntime( 9053): at android.app.ActivityThread.main(ActivityThread.java:6746)
E/AndroidRuntime( 9053): at java.lang.reflect.Method.invoke(Native Method)
E/AndroidRuntime( 9053): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
E/AndroidRuntime( 9053): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
我已经尝试在多个示例项目上运行它,但它失败了。尝试了 Kotlin 和 Java 项目,只是想看看其中一个是否有问题,但没有运气。
编辑(修复了问题):问题是导致此问题的 build.gradle 文件中链接的 billingClient 的结果。一旦我从 gradle 文件中删除它,一切都开始按预期工作。
解决方案
这花了一段时间,但以上似乎都不适合我。我发现,因为我也在使用 RevenueCat,所以这两个依赖项发生了冲突。截至今天,将 purchase_flutter 解析为 1.2.1 而不是 1.4.3 为我解决了这个问题。
推荐阅读
- vim - 无法让 vim 8.0 终端 API 工作到 vim
- asp.net-core - 将接受语言标头复制到传出请求的简便方法?
- tensorflow - 如何训练 tesseract 以减少空输出的数量
- ios - 删除 ionic 3 中的 iOS 滚动反弹
- iphone - 如何将pdf文件传递给php
- javascript - Cordova 应用程序 - 键盘显示/打开之前的事件侦听器
- c++ - 如何在不设置完整路径的情况下访问 C++ 中的资源
- json - 更新 json 列需要太多时间
- json - 如何捕获 Apache Beam 中的内置转换引发的异常(在本例中为 JSON 解析)
- pandas - Pandas 动态 Groupby 和 Shift