Приложения не устанавливаются с восстановлением adb

9

У меня нерутованное устройство Android 7.0 (NVIDIA Shield Tablet), для которого ранее была создана резервная копия

adb backup -apk -shared -all -nosystem -f mybackup.ab

Но восстанавливая это с

adb restore mybackup.ab

результаты в том /Android/data, и т. д. восстанавливаются, но приложения не устанавливаются из файлов apk, ошибок нет.

Мне пришлось извлечь apk-файлы из mybackup.ab и установить их вручную с помощью adb install <...>.apk. После этого все было хорошо.

Я совершенно уверен, что у меня ранее была похожая проблема с 6.0. и Гелий / Углерод прежде, но думал, что это было определенным для метода резервного копирования, который я выбрал.

В чем проблема adb restore? Это потому что устройство без рута? Почему тогда adb installработает как положено?

Настой Эстус
источник
Вы когда-нибудь находили решение? Это один из лучших результатов поиска по этой проблеме.
Скайлар Итнер
1
@SkylarMT Пока нет. Все еще должны использовать adb installв партии. Надеюсь, что кто-то может помочь в этом.
Estus Колба
У меня был частичный успех при использовании Titanium Backup для восстановления файла резервной копии adb. Требуется рут и не все, но он восстановил более половины установленных приложений.
Скайлар Итнер
Посмотрите, поможет ли это решение
beeshyams

Ответы:

4

Я решил это с помощью следующего скрипта

#!/bin/bash
killall adb > /dev/null 2>&1
set -e

if [ $# -ne 1 ]; then
  echo "Usage: $0 <package-name-without-ab>"
  exit 1
fi

export PATH=/opt/jdk1.8.0_152_jce/jre/bin:$PATH
ab=$1.ab
java -jar /opt/android-backup-extractor-20160710-bin/abe.jar unpack $ab $ab.tar apw; tar -xf $ab.tar --wildcards '*.apk' --strip-components=3
mv base.apk $ab.apk
rm $ab.tar
adb install $ab.apk

adb restore $ab

echo "Ready"

Кроме того, вам нужен Android-Backup-Extractor. Как бы то ни было, по моему опыту резервное копирование adb все еще не совсем безопасно. Прежде всего, некоторые приложения могут устанавливать флажки, чтобы они не создавали резервные копии. И восстановление работает только иногда и не уверен, например, если вы меняете устройство. Обидно, что в 2018 году только Titanium Backup отлично работает, если у вас рутованный телефон.

Нильс
источник
Я бы проголосовал за это дважды, если бы мог! 3 дня, пытаясь заставить это работать - это добилось цели. Номинируйте вас как «героя недели» :) // Ссылка: BQ Aquaris X5 Plus на Nougat / LOS 14.1.
Иззи
Huawei Backup также хорошо работает на телефонах Huawei. Но далеко от
Титаниума
2

Команда adb restoreне установлена ​​.apk назад. На самом деле, эта команда только для обратной записи системы и файлов данных. - Android-разработчик

Если вы хотите автоматизировать процесс установки приложений:

  1. Добавить все извлеченные .apk в одну папку
  2. Тип for %f in (C:\_apk folder location_\*.apk) do adb install "%f" ПРИМЕЧАНИЕ. Если у вас есть файлы .apk, в именах которых есть «пробелы», adb не распознает пробелы, перезапишите их с помощью _ или чего-либо еще.
МАТТ Белис
источник
Можете ли вы указать ссылку на эту информацию, если она верна? Так как adb backupрезервное копирование всего, включая apks, я ожидаю, что это adb restoreделает противоположное. Потому что иначе кажется, что apks просто тратит место в файле .ab.
Estus Flask
В таблице 1.> Команды резервного копирования и восстановления на android dev site - это adb restoreкоманда, описанная как «Восстановить содержимое устройства из файла». Она интерпретируется для меня как распаковка файлов и помещается только в устройство, а не в установочные пакеты. это имеет смысл, я думаю, для установки была определена команда adb install(не обязательно иметь функцию установки в других командах), но я согласен, что это было бы хорошо :)
MaTT Belis
@MaTTBelis «Восстановить содержимое из файла» для меня означает восстановить все, что содержит файл (включая установку APK, если он есть). И до ММ он делал именно это (я использую это с Android 4, когда он был представлен). Проблемы начались только с Android 7, где ошибка, кажется, мешает установке APK. На некоторых устройствах вы обнаруживаете в logcat, что он пытается именно это (но не может этого сказать). На самом деле, для этих устройств ответ Нильса работает.
Иззи