Como instalo corretamente um aplicativo do sistema, devido ao .apk?

30

Eu removi um aplicativo do sistema (com.android.mms) e tenho o .apk necessário para restaurá-lo, mas ele não é instalado pelos canais padrão (a execução do .apk me dá "aplicativo não instalado"). Qual é a maneira correta de instalar o .apk de um aplicativo de sistema?

Dmitriy Likhten
fonte

Respostas:

41

Você precisará enviar o .apk ao telefone, à partição do sistema, para a pasta /system/appou /system/priv-appao usar o Android 4.3 adb. Você pode encontrar mais informações adbaqui: http://android-dls.com/wiki/index.php?title=ADB .

Para escrever para /systemvocê, provavelmente você precisará remontá-lo para leitura e gravação:

adb shell
su
mount -o rw,remount /system

Ou faça-o inteiramente a partir do ADB do host:

adb root
adb remount

Agora você pode colocar o .apk:

adb push my-app.apk /sdcard/
adb shell
su
cd /sdcard
mv my-app.apk /system/app
# or when using Android 4.3 or higher
mv my-app.apk /system/priv-app

Depois, se os sinalizadores ainda não estiverem definidos, altere as permissões. Todos os aplicativos do sistema precisam ter as permissões rw-r--r--. Você também pode alterá-los via ADB com o comando chmod 644 /path_to/your_file. Embora seja bastante antigo, isso pode ajudar

Depois de colocar o, .apkvocê precisa reiniciar o seu dispositivo. Por exemplo, com adb reboot.

jonesdavide
fonte
Sim, imaginei que esse seria o caminho a seguir, tentei, diz assinatura ruim. Eu usei o Mms.apk que faz parte do .zip rom que usei para instalar o android atual em execução.
Dmitriy Likhten 13/09/10
2
Bela resposta. Obrigado. Um comentário, não consegui "mv my-app.apk / system / app". Recebi um erro "falha no 'XXX.apk' - link entre dispositivos". Eu era capaz de CP e RM do apk como descrito na android.stackexchange.com/questions/75920/...
Michael Levy
11
Considere o uso cpem vez de mvporque você está se movendo entre diferentes sistemas de arquivos e não é suportada em todas as mvversões
Andres
isso não atualiza as permissões do Android com o local do apk, necessário para pacotes que usam o apk
paIncrease
5

Carl Parker escreve sobre isso no Android Authority :
(parcialmente reproduzido aqui, caso a postagem original seja desativada)

Para aplicativos instalados no dispositivo

  • Supondo que você tenha instalado o aplicativo no seu dispositivo, acesse o link da Google Play Store do aplicativo e anote as palavras após "? Id =" e ignore o restante.
  • Conecte seu dispositivo ao computador via cabo USB.
  • Abra o prompt de comando no seu computador e digite os seguintes comandos:
adb remount 
adb shell 
su 
cd /data/app/ 
  • Digite o comando ls appfilename*(onde "appfilename" é o ID do aplicativo na Google Play Store; inclua o asterisco no final). Este comando exibirá o nome do arquivo APK completo do aplicativo.
  • Digite o seguinte comando:
mv apk_full_filename_here /system/app/apk_full_filename_here 
exit 
exit 
adb reboot 
  • O dispositivo agora será reiniciado. Seu aplicativo agora está salvo como um aplicativo do sistema.

Para aplicativos cujos APKs estão no disco rígido do PC

  • Abra um prompt de comando no seu computador e navegue até o local do arquivo APK.
  • Ative a depuração USB no seu dispositivo e conecte-o ao computador via cabo USB.
  • Digite os seguintes comandos:
adb remount
adb push apk-filename-here /system/app/
adb shell chmod 644 /system/app/apk-filename-here
adb reboot

O seu telefone irá reiniciar automaticamente. Seu aplicativo agora será salvo como um aplicativo do sistema.

Mindwin
fonte
3

Observe que, ao jogar com o adb, você instalará os aplicativos pelo nome do arquivo do pacote (ou seja, no prompt de comando, digite> adb install myFile.apk)

mas você os desinstalará pelo nome do pacote (> adb uninstall com.this.that.otherthing)

Você não poderá instalar um pacote até desinstalar o antecessor.

Isso ajudará a adicionar adb ao seu PATH para que você possa simplesmente ir para o diretório em que está o arquivo .apk e digitar adb install myFile.apk.

Dr.Dredel
fonte
Obrigado! Não sabia sobre a mecânica de desinstalação :)
Dmitriy Likhten
Ainda não tentei com aplicativos do sistema, mas o /system/bin/pmutilitário apps (Gerenciador de Pacotes) funcionou para mim. Como pm install -r myFile.apk( -rpara "substituir"). Dessa forma, você não precisa desinstalar e saber o nome do pacote.
Alexander Malakhov
0

Você precisa ter o SDK do Android instalado (ou pelo menos uma ferramenta chamada adb). Além disso, você precisa permitir "instalações fora do mercado" no seu dispositivo.

Depois disso, você muda para a pasta que contém o arquivo com um console. Em seguida, conecte seu telefone (via USB) e executeadb install appname.apk

surfista de teclado
fonte
Veja os comentários de outras respostas. Já tem instalações não mercantis habilitado desde que eu tinha Swype instalado :)
Dmitriy Likhten