解决 Flutter 3.19.3打包app 在 OPPO 审核不通过的问题
问题描述
在使用 Flutter 3.19.3 版本时,应用在启动时会调用 PROCESS_TEXT
相关的函数,而这个函数实际上是处理文本的。然而,在 OPPO 的审核过程中,这个调用导致了审核不通过。
通过对比发现,降级到 Flutter 3.16.2 后,不做任何代码修改,重新打包后审核通过。
问题根源
在 Flutter 3.19.3 版本中,启动时会调用以下函数,导致审核不通过:
Intent { act=android.intent.action.PROCESS_TEXT typ=text/plain }
at android.app.ApplicationPackageManager.queryIntentActivitiesAsUser()
at android.app.ApplicationPackageManager.queryIntentActivities(ApplicationPackageManager.java:914)
at io.flutter.plugin.text.ProcessTextPlugin.cacheResolveInfos(Unknown Source:53)
at io.flutter.plugin.text.ProcessTextPlugin.queryTextActions(Unknown Source:4)
at io.flutter.embedding.engine.systemchannels.ProcessTextChannel$1.onMethodCall(Unknown Source:45)
at io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler.onMessage(Unknown Source:17)
at io.flutter.embedding.engine.dart.DartMessenger.invokeHandler(Unknown Source:18)
at io.flutter.embedding.engine.dart.DartMessenger.lambda$dispatchMessageToQueue$0$io_flutter-embedding-engine-dart-DartMessenger(Unknown Source:45)
at io.flutter.embedding.engine.dart.DartMessenger$$ExternalSyntheticLambda0.run(Unknown Source:12)
at android.os.Handler.handleCallback(Handler.java:790)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6554)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:558)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:810)
代码的位置
解决方案
1. 降级 Flutter 版本
首先,记录当前的 Flutter 版本为 3.19.3,方便后续恢复
然后降级到 Flutter 3.16.2,具体的 git 版本为 9e1c857886f07d342cf106f2cd588bcd5e031bb2
。
2. 修改3.19.3 Flutter 源码
降级后,某些新插件可能无法使用,所以我没有使用此种方式。为了快速解决问题,还是在3.19.3,我查看源码并进行以下修改:
-
在 Flutter 层修改
editable_text.dart
文件,路径为/flutter/packages/flutter/lib/src/widgets/editable_text.dart
。 -
将以下行代码注释掉,这样引擎在启动时就不会自动初始化。由于应用没有使用到相关功能,直接注释即可。如果需要使用,可以将其修改为主动调用,交由上层去调用。
// 文件:/flutter/packages/flutter/lib/src/widgets/editable_text.dart
// 注释掉相关的初始化代码
3. 提交审核
修改完成后,重新打包并提交审核。经过测试,问题解决,审核通过!
结语
此次问题的根源在于 Flutter 3.19.3 的启动行为影响了审核。通过降级和修改源码的方式,我们成功解决了问题。OPPO 的自测工具非常有用,推荐大家在提交审核前使用。自测工具地址
希望对您有帮助