Тайм-аут восстановления BackupManagerService приводит к принудительной остановке

Со вчерашнего дня на моем Nexus 5 работает Lollipop, и приложение, над которым я работаю, останавливается без каких-либо сбоев.

При каждом выходе устройство регистрирует следующее:

11-20 00:23:32.679: I/ActivityManager(723): START u0 {flg=0x14008000 cmp=com.mycompany.android/.app.LoginActivity} from uid 10549 on display 0
11-20 00:23:32.713: W/ActivityManager(723): Duplicate finish request for ActivityRecord{2cd672e4 u0 com.mycompany.android/.app.StartupActivity t39 f}
11-20 00:23:32.926: I/ActivityManager(723): Displayed com.mycompany.android/.app.LoginActivity: +223ms
11-20 00:23:45.734: I/ActivityManager(723): Force stopping com.mycompany.android appid=10549 user=-1: uninstall pkg
11-20 00:23:45.734: I/ActivityManager(723): Killing 24090:com.mycompany.android/u0a549 (adj 0): stop com.mycompany.android
11-20 00:23:45.793: W/ActivityManager(723): Force removing ActivityRecord{5367f0c u0 com.mycompany.android/.app.LoginActivity t39}: app died, no saved state
11-20 00:23:45.846: W/ActivityManager(723): Spurious death for ProcessRecord{33eaa703 24090:com.mycompany.android/u0a549}, curProc for 24090: null
11-20 00:23:45.853: I/ActivityManager(723): Force stopping com.mycompany.android appid=10549 user=0: pkg removed
11-20 00:23:46.188: D/BackupManagerService(723): Received broadcast Intent { act=android.intent.action.PACKAGE_REMOVED dat=package:com.mycompany.android flg=0x4000010 (has extras) }
11-20 00:24:23.646: E/BackupManagerService(723): Timeout restoring application com.mycompany.android
11-20 00:24:23.647: W/BackupManagerService(723): Tried to clear data for com.mycompany.android but not found
11-20 00:26:49.647: V/BackupManagerService(723): restoreAtInstall pkg=com.mycompany.android token=a restoreSet=3319d18fd0806258
11-20 00:26:50.025: I/BackupTransportService(1752): Current restore app : com.mycompany.android
11-20 00:26:50.027: I/BackupManagerService(723): Next restore package: RestoreDescription{com.mycompany.android : KEY_VALUE}
11-20 00:26:50.028: V/BackupManagerService(723): Package com.mycompany.android restore version [0] is compatible with installed version [0]
11-20 00:26:50.028: W/BackupManagerService(723): Signature mismatch restoring com.mycompany.android
11-20 00:26:50.236: D/BackupManagerService(723): Received broadcast Intent { act=android.intent.action.PACKAGE_ADDED dat=package:com.mycompany.android flg=0x4000010 (has extras) }
11-20 00:26:50.240: D/BackupManagerService(723): Now staging backup of com.mycompany.android

Похоже, что система решает принудительно остановить мое приложение, потому что время восстановления истекло. Это также происходит, когда приложение правильно подписано.

Реализация, связанная с BackupManager, работала нормально до версии 4.4.2.

В настоящее время я проверяю, не работает ли вызов каких-либо API-интерфейсов BackupManager с этой неожиданной/тихой принудительной остановкой. На данный момент это выглядит нормально.

Любое предложение?


person david    schedule 19.11.2014    source источник
comment
Похоже, что один и тот же ключ backupmanager не следует использовать с сертификатами отладки и выпуска.   -  person david    schedule 10.12.2014
comment
Вы когда-нибудь что-нибудь здесь выясняли?   -  person Alex Black    schedule 01.03.2015
comment
Ничего такого. Я не пробовал ответ 3dmg.   -  person david    schedule 01.03.2015
comment
Вчера я столкнулся с точно такой же проблемой с моим приложением AndStatus на эмуляторе Android 5.0. Исправлено android:allowBackup=false, как предложил 3dmg.   -  person yvolk    schedule 06.08.2015
comment
Я столкнулся с той же проблемой на пониженной версии Nexus 5 с Android 5.1 при проведении инструментальных тестов. Похоже, Play Market пытается обновить приложение во время тестового запуска. Гугл - какая жалость...   -  person Art    schedule 24.04.2016
comment
@Art, я также видел, как это происходило на Nexus 5 под управлением Android 6. Я проводил некоторые инструментальные модульные тесты. Когда тесты завершены и пройдены, я вижу какие-то странные сообщения в Logcat, например ActivityManager: Force stopping =com.mycompany finished inst WindowState: WIN DEATH: Window{ u0 com.mycompany/com.mycompany.Activity EXITING} ActivityManager: Spurious death for ProcessRecord{ 0:com.mycompany}, curProc for 1234: null ActivityManager: Force stopping com.mycompany.test ...: uninstall pkg. Затем я понимаю, что платформа Android только что удалила мое приложение! Все само собой. Очень странный.   -  person Mr-IDE    schedule 18.11.2016


Ответы (1)


С помощью gradle в Android Studio вы можете создать каталог отладки с файлом AndroidManifest.xml для вашей сборки отладки, чтобы отключить BackupManager:

    <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools">

    <application
        android:allowBackup="false"
        tools:replace="android:allowBackup">

    </application>
</manifest>
person 3dmg    schedule 19.02.2015