在我的OnePlus 6上调试我的颤动应用程序时,我收到了很多奇怪的消息。当我点击按钮,滑动等时会出现这些消息。我在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()消息。
解决方法是使用Flutter的软件渲染器,与Flutter的默认硬件加速OpenGL渲染器相比,它以降低图形性能为代价来消除这些错误:
$ flutter run --enable-software-rendering
但要清楚,这不是一个颤动的错误。系统库(libEGL,libgralloc?)在OnePlus 6(也许是Google Pixel 3)上的Android Pie上存在问题,最终需要设备供应商和/或Google进行修复。有some indications安装最新的系统更新可能已经解决了一些用户的问题,至少,从2018年10月底开始。
基于commit,旨在解决谷歌的新Pixel 3 XL设备(代号“crosshatch”)相同的问题,潜在的问题似乎是Android Pie本身或Android的供应商定制引入了对vendor.debug.egl.swapinterval
构建属性的新依赖,但安全策略拒绝此属性访问。修复方法是更改安全策略以允许引导动画和应用程序访问此属性。
什么是vendor.debug.egl.swapinterval
?它控制显示帧速率。引用eglSwapInterval
API的Khronos Group文档,此时间间隔为:
指定在发生缓冲区交换之前显示的最小视频帧数。
作为对XDA论坛的粗略搜索,多年来modders一直是tweaking这个参数。
如果您在Flutter 1.2.1升级后使用OnePlus设备(可能甚至是其他设备)现在(2019年3月)发生这种情况,您可以使用Arto Bendiken接受的答案中所述的“--enable-software-rendering”解决方法或者这个:
查看位于项目文件夹($ 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 氧气: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相关,因为我尝试在Android 8的某些Moto G手机上运行应用程序并且问题不在那里。 (即使将compile / targetSdkVersion设置为28)。