In Ihrem Prozess sind zu viele Dateideskriptoren oder Sockets geöffnet, und wenn das Betriebssystemlimit erreicht ist, wird Ihre App gelöscht.
Es ist sehr unwahrscheinlich, dass Ihre App legitim alle Ressourcen verbraucht, es ist wahrscheinlich ein Leck. Vermutlich verpassen Sie einen Close() -Aufruf für einen Socket oder eine Dateiressource.
Ich habe dieses Problem auf verschiedenen Android-Geräten mit dem gleichen Code. Die häufigste Fehlersignatur war:
01-27 15:50:52.431 I/DEBUG ( 172): pid: 12444, tid: 19014, oom: 0, name: DrmRequestHandl >>> YOUR_PACKAGE_NAME <<<
01-27 15:50:52.431 I/DEBUG ( 172): signal 6 (SIGABRT), code -6 (SI_TKILL), fault addr --------
01-27 15:50:52.517 I/DEBUG ( 172): Abort message: 'FORTIFY_SOURCE: FD_SET: file descriptor >= FD_SETSIZE. Calling abort().'
Sie können die Beschreiber Grenze auf Ihrem Gerät calling überprüfen:
adb shell ulimit -n
Als ersten Schritt, das Problem zu lösen, müssen Sie möglicherweise, um herauszufinden, welche Art von Ressourcen sind undicht. Sie können den Prozess-ID der App heraus von:
adb shell ps
Dann den Prozess-ID verwenden, während der App noch laufen, können Sie für die offenen Deskriptoren überprüfen (Sie Root-Zugriff benötigen):
adb shell ls -l /proc/[YOUR_PROCESS_ID]/fd
Für die 12345-Prozess es so etwas wie wäre:
adb shell ls -l /proc/12345/fd
Diese Deskriptoren listet. Bei älteren Android-Versionen können Sie 1024 Elemente in der Liste haben, bei Lollipop habe ich 2048 als Standardlimit gesehen.
Und wie können wir den Fehler ohne Code überprüfen? – BabyDuck
Übrigens, wenn Sie auf dieses Problem stoßen, kann es mithilfe der Google Play Services ProviderInstaller-API behoben werden. Weitere Informationen zur Verwendung finden Sie in diesem Artikel: https://developer.android.com/training/articles/security-gms-provider.html – kroot