Os aplicativos não estão instalados com a restauração adb

9

Eu tenho um dispositivo Android 7.0 não raiz (NVIDIA Shield Tablet), que foi previamente copiado com

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

Mas restaurá-lo com

adb restore mybackup.ab

resulta em que /Android/dataetc são restaurados, mas os aplicativos não são instalados a partir de arquivos apk, sem erros.

Eu tive que extrair arquivos apk do mybackup.ab e instalá-los manualmente em lote com adb install <...>.apk. Depois disso tudo estava bem.

Tenho certeza de que já tive problemas semelhantes com o 6.0. e Hélio / Carbono antes, mas pensei que era específico para o método de backup que eu escolhi.

Qual é o problema adb restore? É porque o dispositivo não tem raiz? Por que adb installfunciona como esperado então?

Estus Flask
fonte
Você já encontrou uma solução? Este é um dos principais resultados de pesquisa para esse problema.
Skylar Ittner
11
@SkylarMT Ainda não. Ainda tem que usar adb installem lote. Espero que alguém possa ajudar nisso.
Estus Flask
Eu tive sucesso parcial usando o Titanium Backup para restaurar o arquivo de backup adb. Ele requer raiz e não conseguiu tudo, mas restaurou mais da metade dos aplicativos que eu havia instalado.
Skylar Ittner
Veja se esta solução ajuda
beeshyams

Respostas:

4

Eu o resolvi com o seguinte script

#!/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"

Você também precisa do extrator de backup android. No entanto, na minha experiência, o backup adb ainda não é realmente seguro. Primeiro, alguns aplicativos podem definir um sinalizador, para que não sejam backup. E a restauração funciona apenas algumas vezes e não tem certeza, por exemplo, se você alterar o dispositivo. É uma pena que em 2018 apenas o Titanium Backup faça um bom trabalho, se você tiver um telefone root.

niels
fonte
Eu votaria isso duas vezes, se pudesse! 3 dias tentando fazê-lo funcionar - isso fez o truque. Nomear você como "herói da semana" :) // Referência: BQ Aquaris X5 Plus no Nougat / LOS 14.1.
Izzy
O Huawei Backup também faz um bom trabalho nos telefones Huawei. Mas longe de Titanium :-(
niels
2

Os comandos adb restorenão são instalados .apk back. Na verdade, este comando é apenas o sistema de gravação e arquivos de dados. - site de desenvolvimento Android

Se você deseja automatizar o processo de instalação de aplicativos:

  1. Adicione todos os .apk extraídos a uma pasta
  2. Digite for %f in (C:\_apk folder location_\*.apk) do adb install "%f" NOTA: Se você tiver arquivos .apk com "espaços" em seus nomes, o adb não reconhecerá os espaços reescrevê-los com _ ou qualquer outra coisa.
MaTT Belis
fonte
Você pode especificar a referência para essas informações, se estiver correta? Como adb backupfaz o backup de tudo, incluindo os aplicativos, eu esperaria que fizesse adb restoreo contrário. Porque, caso contrário, parece que os aplicativos perdem espaço no arquivo .ab.
Estus Flask
Na tabela 1.> Comandos de backup e restauração no site de desenvolvimento do Android, oadb restore comando é descrito como "Restaurar o conteúdo do dispositivo do arquivo". Ele é interpretado por mim como arquivos descompactados e colocados apenas no dispositivo, não em pacotes de instalação. faz sentido, eu acho, para a instalação foi definir comando adb install(que não é necessariamente instalar funkcionality em outros comandos), mas eu concordo que seria bom :)
Matt Belis
@MaTTBelis "Restaurar conteúdo do arquivo" para mim significa restaurar tudo o que o arquivo contém (que inclui a instalação do APK, se houver). E até o MM fez exatamente isso (estou usando isso desde o Android 4, quando foi introduzido). Os problemas começaram apenas no Android 7, onde um erro parece impedir a instalação do APK. Em alguns dispositivos, você encontra no logcat que ele tenta exatamente isso (mas falha sem dizer isso). Na verdade, para esses dispositivos, a resposta de Nils funciona.
Izzy