在OnePlus 6上调试我的Flutter应用程序时,我收到很多奇怪的消息。单击按钮,滑动等等时,这些消息就会出现。我在使用Android Pie。
一些消息:
E/libc (10995): Access denied finding property
"vendor.debug.egl.swapinterval"
W/1.gpu (10995): type=1400 audit(0.0:2806794): avc: denied { read } for
name="u:object_r:vendor_default_prop:s0" dev="tmpfs" ino=21671
scontext=u:r:untrusted_app_27:s0:c512,c768
tcontext=u:object_r:vendor_default_prop:s0 tclass=file permissive=0
E/libc (10995): Access denied finding property
"vendor.debug.egl.swapinterval"
E/libc (10995): Access denied finding property
"vendor.debug.egl.swapinterval"
E/libc (10995): Access denied finding property
"vendor.debug.egl.swapinterval"
E/libc (10995): Access denied finding property
"vendor.debug.egl.swapinterval"
W/1.gpu (10995): type=1400 audit(0.0:2806805): avc: denied { read } for
我如何摆脱它们,该应用程序似乎运行正常。很难阅读所有这些杂乱的print()消息。
答案 0 :(得分:3)
解决方法是使用Flutter的软件渲染器,与Flutter的默认硬件加速的OpenGL渲染器相比,它以降低图形性能为代价来消除这些错误:
$ flutter run --enable-software-rendering
不过,请注意,这不是Flutter错误。这是OnePlus 6(可能还有Google Pixel 3)上Android Pie上的系统库(libEGL,libgralloc?)的问题,最终需要设备供应商和/或Google进行修复。 some indications表示,至少在2018年10月下旬,安装最新的系统更新可能已为某些用户解决了此问题。
基于commit,该问题旨在解决Google的新Pixel 3 XL设备(代号“ crosshatch”)上的相同问题,潜在的问题似乎是Android Pie本身或Android的供应商自定义引入了对vendor.debug.egl.swapinterval
构建属性的新依赖关系,但是安全策略拒绝了此属性访问。解决方法是更改安全策略,以允许启动动画和应用程序访问此属性。
什么是vendor.debug.egl.swapinterval
?它控制显示帧率。引用eglSwapInterval
API的Khronos Group文档,此时间间隔:
指定在发生缓冲区交换之前显示的最小视频帧数。
正如在XDA论坛上的粗略搜索所示,多年来,修改器一直是tweaking这个参数。
答案 1 :(得分:3)
如果Flutter 1.2.1升级后现在(2019年3月)使用OnePlus设备(甚至可能是其他设备)发生这种情况,您可以按照接受的答案中的说明使用“ --enable-software-rendering”解决方法由Arto Bendiken或这个:
查看位于项目文件夹($ PROJECT_FOLDER / android / app /)中的 build.gradle 文件,然后查看 compileSdkVersion 和 targetSdkVersion >。如果这些数字设置为 28 ,请将其降低至 27 (如果需要,则降低至)。 Flutter 1.2.1生成的项目将这些变量设置为28(Android 9 Pie)。
说明:
Some users表示升级到ROM的较新版本已解决了该问题。我使用此设备:
设备:OnePlus 6T(ONEPLUS A6013)
内部版本:A6013_41_190123
OxygenOS:9.0.12
有人写道,该问题已在9.0.3版本中修复,该版本早于我的9.0.12版本。
问题是,我将此设备与Flutter 1.0.0一起使用时没有任何问题,并且在Flutter 1.2.1升级(和新的项目生成)之后,这种情况开始发生。较早的项目仍然可以解决此问题,因此我检查了一些文件是否存在差异,并发现build.gradle有所不同。换句话说,默认情况下Flutter 1.2.1的目标是Android 9 Pie。它可能仍与OnePlus tho有关,因为我尝试在装有Android 8的Moto G手机上运行该应用程序,但该问题不存在。 (即使将compile / targetSdkVersion设置为28)。