2017-02-08 20 views
1

ПроблемыКак отлаживать APK, установленный с Play Store (без удаления сохраненных пользовательских данных)

Я работаю с Android приложением, где пользовательские данные сохраняются в базу данных, зашифрованных с помощью SQLCipher. Хранилище ключей хранится в хранилище ключей. Возникает проблема с конкретным устройством (вероятно, с данными, которые сохраняются). Я могу потенциально получить доступ к устройству, которое испытывает эту проблему, однако, из того, что я могу найти, информация, которую я могу извлечь из указанного устройства, очень ограничена. Можно ли каким-либо образом связать отладчик с текущим APK, который загружен на устройство или каким-то образом заменить его на отладочную версию, не теряя данные пользователя?

Устройство работает под управлением андроида 6.0.1 и я использую Android Studio

То, что я нашел, пытаясь отладить выпуск APK

При подключении андроид планшет загружается с APK, который был загружен из PlayStore единственными данными, которые я могу видеть, являются журналы регистрации от конкретного приложения, использующие logcat (Android Studio). Когда я пытаюсь отладить приложение, Android Studio говорит мне сначала удалить существующий APK, прежде чем я смогу загрузить отлаживаемый APK. Однако это приведет к удалению существующих данных, которых я не хочу.

Другие вещи, которые я пытался решить мою исходную задачу

Пытаться получить конкретного пользователя, чтобы отправить мне свою проблемную базу данных

Это не будет работать, так как не имеют доступа к закрытому ключу, поэтому я не смог бы расшифровать данные, даже если бы получил файл.

Попробуйте получить конкретный пользователь выслать логи приложения

Это не будет работать, так как с Android 4.1, приложение конкретных журналы являются частными только теми конкретными приложениями (если устройство не укоренено, которой устройства, о котором идет речь, нет, а укоренение - это не вариант). Это фактически приводит к другому, слегка связанному, вопросу, который у меня есть. Почему я могу видеть журналы конкретных приложений в logcat, даже если они не видны при просмотре журналов на некорневом устройстве через приложение, такое как CatLog?

+0

Брус установки отладки версии на проблемном устройстве и воспроизвести ошибку?Если это корневой телефон, вы можете сохранить поврежденную БД, переустановить приложение и перезаписать БД – X3Btel

ответ

2

Вы можете установить отлаживаемый APK, просто подписавшись с вашими ключами освобождения вместо отладочных и убедитесь, что установлен флаг Debug. Я всегда это делаю, так как становится больно продолжать деинсталляцию и переустановку разных версий, особенно при обмене между разными компьютерами с различными отладочными хранилищами.

Установка APK, подписанная с вашими ключами освобождения, будет просто выполнять обновление на месте и оставить все данные приложения невредимыми, даже если установлен флаг отладки.

например

buildTypes { 

    debug { 
     minifyEnabled false 
     debuggable true 
     signingConfig signingConfigs.release 
    } 

    release { 
     minifyEnabled false 
     signingConfig signingConfigs.release 
    } 

} 

Вы можете получить журналы с устройства пользователя, так долго, как журнал был создан вашим собственным приложением. Вашему собственному процессу разрешен доступ к вашим собственным записям журналов приложений.

Read logcat programmatically within application