【发布时间】:2019-02-14 06:18:12
【问题描述】:
在将二进制文件上传到 Google Play 后,我的应用程序在 Android 根据Pre-Launch Report 在其中一个测试设备上启动时被关闭。
问题似乎是资源泄漏,原因如下:
com.google.android.apps.mtaas.crawler.controller.remote.RemotePlatform
我发现 MTaaS 最有可能代表 Mobile Testing as a Service。
测试框架泄漏资源导致测试中止,我是否正确?
如何阻止 MTaaS 泄露?
Strict Mode 中来自 Galaxy S9 的完整设备日志:
注意:这是一个基于 NDK 的应用程序,几乎没有 Java 代码,并且不依赖于 FireBase。
E/StrictMode(14355): A resource was acquired at attached stack trace but never released. See java.io.Closeable for information on avoiding resource leaks.
E/StrictMode(14355): java.lang.Throwable: Explicit termination method 'close' not called
E/StrictMode(14355): at dalvik.system.CloseGuard.open(CloseGuard.java:223)
E/StrictMode(14355): at android.os.ParcelFileDescriptor.<init>(ParcelFileDescriptor.java:192)
E/StrictMode(14355): at android.os.ParcelFileDescriptor.<init>(ParcelFileDescriptor.java:181)
E/StrictMode(14355): at android.os.ParcelFileDescriptor.createPipe(ParcelFileDescriptor.java:425)
E/StrictMode(14355): at com.google.android.apps.mtaas.crawler.common.base.IOUtils.makeParcelAsync(IOUtils.java:1)
E/StrictMode(14355): at com.google.android.apps.mtaas.crawler.platform.ScreenState.writeScreenElementsToParcel(ScreenState.java:141)
E/StrictMode(14355): at com.google.android.apps.mtaas.crawler.platform.ScreenState.writeToParcel(ScreenState.java:60)
E/StrictMode(14355): at com.google.android.apps.mtaas.crawler.platform.ParcelableScreenState.writeToParcel(ParcelableScreenState.java:6)
E/StrictMode(14355): at android.os.Parcel.writeParcelable(Parcel.java:1746)
E/StrictMode(14355): at android.os.Parcel.writeValue(Parcel.java:1652)
E/StrictMode(14355): at android.os.Parcel.writeArrayMapInternal(Parcel.java:793)
E/StrictMode(14355): at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1506)
E/StrictMode(14355): at android.os.Bundle.writeToParcel(Bundle.java:1181)
E/StrictMode(14355): at android.os.Parcel.writeBundle(Parcel.java:833)
E/StrictMode(14355): at android.os.Message.writeToParcel(Message.java:594)
E/StrictMode(14355): at android.os.IMessenger$Stub$Proxy.send(IMessenger.java:84)
E/StrictMode(14355): at android.os.Messenger.send(Messenger.java:57)
E/StrictMode(14355): at com.google.android.apps.mtaas.crawler.controller.remote.RemotePlatform.sendMessage(RemotePlatform.java:39)
E/StrictMode(14355): at com.google.android.apps.mtaas.crawler.controller.remote.RemotePlatform.sendActionResultsMessage(RemotePlatform.java:64)
E/StrictMode(14355): at com.google.android.apps.mtaas.crawler.controller.remote.RemotePlatform.handlePerformActionMessage(RemotePlatform.java:24)
E/StrictMode(14355): at com.google.android.apps.mtaas.crawler.controller.remote.RemotePlatform.access$300(RemotePlatform.java:88)
E/StrictMode(14355): at com.google.android.apps.mtaas.crawler.controller.remote.RemotePlatform$ControllerMessageHandler.handleMessage(RemotePlatform.java:8)
E/StrictMode(14355): at android.os.Handler.dispatchMessage(Handler.java:105)
E/StrictMode(14355): at android.os.Looper.loop(Looper.java:164)
E/StrictMode(14355): at android.os.HandlerThread.run(HandlerThread.java:65)
W/System.err(14355): StrictMode VmPolicy violation with POLICY_DEATH; shutting down.
【问题讨论】:
标签: java android testing google-play-console resource-leak