Falha na instalação do ADB com INSTALL_FAILED_TEST_ONLY

201

Estou com problemas para instalar um apk no meu dispositivo.

adb install <.apk>

O uso do comando acima retorna o seguinte:

5413 KB/s (99747 bytes in 0.017s)
        pkg: /data/local/tmp/AppClient.TestOnly.App3.apk
Failure [INSTALL_FAILED_TEST_ONLY]

Alguma idéia do que pode causar esse problema?

Definitivamente reconhece o dispositivo. Poderia ser um problema com o apk?

evoluir
fonte

Respostas:

274

Parece que você precisa modificar seu AndroidManifest.xml
Mudança android:testOnly="true"para android:testOnly="false"ou remover este atributo.

Se você deseja manter o atributo android:testOnly, truepode usar o pm installcomando com a -topção, mas pode ser necessário pusho apk no dispositivo primeiro.

$ adb push bin/hello.apk /tmp/
5210 KB/s (825660 bytes in 0.154s)

$ adb shell pm install /tmp/hello.apk 
    pkg: /tmp/hello.apk
Failure [INSTALL_FAILED_TEST_ONLY]

$ adb shell pm install -t /tmp/hello.apk 
    pkg: /tmp/hello.apk
Success

Consegui reproduzir o mesmo problema e o que foi resolvido acima.

Se o seu APK estiver fora do dispositivo (na área de trabalho), o comando abaixo o faria:

$ adb install -t hello.apk
Saurabh Meshram
fonte
63
Você não precisa empurrar adb e pm instalar, você pode especificar a opção -t logo após o adb instalar comando: adb instalar -t -r package.apk
marioc64
não há mais necessidade de enviar o apk adicionando -t funciona no adb install funciona bem, para o comando completo, verifique minha resposta abaixo.
AMIT
adb push bin/hello.apk /tmp/não funciona para mim, adb push ./debug.apk /sdcard/temp/debug.apktrabalhou
HendraWD
adb install -t app/build/outputs/apk/usUnitedStates/debug/app-usUnited-debug.apktrabalhou para mim.
Sulav Timsina
Obrigado. Isso resolveu meu problema. Meu aplicativo era um aplicativo do sistema. Assim -f era necessário. -f: Install package on the internal system memory.
Julian
95

Eu tive um problema semelhante Android Studio 3.0.0 Beta 7e não pude mais publicar na loja de jogos.

Conforme indicado aqui: https://developer.android.com/studio/run/index.html

Nota: o botão Executar cria um APK com testOnly = "true", o que significa que o APK pode ser instalado apenas via adb (usado pelo Android Studio). Se você deseja um APK depurável que as pessoas possam instalar sem adb, selecione sua variante de depuração e clique em Compilar> Compilar APK.

O mesmo vale para a compilação de versões, com Android Studio 3você precisa Build > Build APK(s)ter um apk de versão não testável que você pode enviar para a loja.

Gabriel Morin
fonte
6
Eu suspeito que agora (outubro / novembro de 2017) esta é a resposta correta para a maioria das pessoas que chegam aqui. Antes do AS 3, o APK produzido por "Run" era instalável mesmo fora do AS, não, não é.
noamtm
há atualização e há mais alguns ajustes .. demorei um pouco para descobrir: /
ruben
61

Adicione o -tsinalizador de instalação, como na imagem abaixo:

resposta está na caixa vermelha

sunqi228
fonte
O projeto de amostra que eu compilo usa 'com.android.tools.build:gradle:2.4.0-alpha7' e não é compilado com uma versão estável, apenas a adição de -t, conforme mencionado, resolveu o problema para mim.
BubbaGum
7
Por favor, explique o que -tfaz.
Rmtheis
3
em adb ajuda, você verá instalar com meios -t permitir pacotes de teste
xiaoyee
tela é lançado via clicando em Editar Configurações no menu módulo suspenso - entre Marca e executar, depurar botões na parte superior do IDE: developer.android.com/studio/run/rundebugconfig.html
Gene Bo
56

No meu caso, esse erro ocorreu na versão instável do gradle. Basta usar uma versão estável do gradle (nem alfa nem beta). E foi consertado para mim

Eugene Voronoy
fonte
1
Salvou o dia! Alterada a versão gradle de 2.4.0-alpha3 para 2.3.0
Reaz Murshed
1
O preço de aderir à borda sangrenta ... Obrigado!
Ryan R
Alguém pode confirmar que a configuração android: testOnly = "true" também o corrigirá para versões instáveis ​​do gradle?
GPS
43

Depois de pesquisar e navegar o dia todo, o único que funciona é adicionar

android.injected.testOnly=false

para o arquivo gradle.properties

Linyun Liu
fonte
28

Eu concordo com Elisey. Eu recebi esse mesmo erro depois de abrir meu projeto na visualização 2.4 e depois abrir o mesmo projeto no android studio 2.3

Corrigido o problema alterando esta linha no build.gradle de

classpath 'com.android.tools.build:gradle:2.4.0-alpha5'

para

classpath 'com.android.tools.build:gradle:2.3.1'
Patrick Maroney
fonte
18

O Android studio 3.0 gera apenas o teste APK.

Resolvi o problema adicionando a propriedade "android: testOnly" à tag do manifesto do Android.

 <application
    .....
    android:testOnly="false"
    android:theme="@style/AppTheme">

E, em seguida, gerou o APK no Android studio3.0 menu: Build -> Build APK (s) .

Mais informações: https://commonsware.com/blog/2017/10/31/android-studio-3p0-flag-test-only.html

Hardian
fonte
12

adicione esta linha ao seu 'gradle.properties'

android.injected.testOnly=false
nick lee
fonte
Obrigado! Isso também corrigirá o problema do corredor da colher!
Basim Sherif
11

Nenhum post anterior resolveu meu problema. Aqui está o que está acontecendo comigo:
eu normalmente carrego o aplicativo no android studio clicando no botão "Executar". Quando você faz isso, o Android cria um aplicativo bom para depuração, mas não para instalação. Se você tentar instalar usando:

adb install -r yourapk

você receberá uma mensagem que diz:

Falha [INSTALL_FAILED_TEST_ONLY]

Quando isso acontecer, você precisará reconstruir o apk primeiro limpando a compilação e selecione Compilar-> Compilar APK. Veja a imagem abaixo:

construir android apk

Este APK está pronto para ser instalado através do comando adb install ou de qualquer outro método

Espero que isto ajude

David

us_david
fonte
Você é um salva-vidas. Eu estava tendo problemas com a compilação de versão (keystore com defeito) e queria distribuir compilações de depuração para meus testadores.
drulabs 23/08/19
Se você estiver usando appium, precisará especificar os "allowTestPackages": "true"recursos do seu esquema e2e.
Joshua Pinter
9

No meu caso, foi fazendo o upload de um APK que, apesar de ter sido assinado com certificado de produção e ser uma variante de lançamento, foi gerado pelo botão de execução do Android Studio. Problema resolvido após a geração do APK da Gradle ou da opção de menu Build APK.

lujop
fonte
1
Isso começou a acontecer com o Android Studio 3.0, e sua sugestão foi corrigida para mim.
Sky Kelsey
9

Se você quiser testar o apk, basta adicionar a -topção de linha de comando.

Comando de exemplo:

adb install -t .\app-debug.apk
Louis CAD
fonte
4

Eu vejo a resposta aceita, mas você não precisa realmente enviar o apk e, em seguida, executar o comando no adb shell direct adb install com -t flag realmente funciona

adb install -t "caminho para apk no seu computador"

anexando uma captura de tela para referência insira a descrição da imagem aqui

amIT
fonte
3

O mais fácil de resolver isso, sem reverter para uma versão gradle mais antiga, é adicionar a opção '-t' nas configurações de execução (para a instalação com pm).

testOnly = 'false' não teve nenhum efeito. O erro é causado pela versão alfa do plugin gradle, que faz o depuração do APK 'apenas para fins de teste'. A opção -t permite que esse APK seja instalado. A configuração na configuração de execução faz com que você instale automaticamente o APK como de costume.

3c71
fonte
3

isso funciona para mim adb install -t myapk.apk

Vardaan Sharma
fonte
2

Não sei se será útil para alguém ou não, mas recebi esta mensagem de erro quando tentei criar e instalar meu projeto acidentalmente com a versão test gradle plugin ( 'gradle:2.4.0-alpha5') na versão estável do Android Studio ( 2.3e não na 2.4 preview 5versão I baixado e instalado antes).

Quando percebi meu erro, lancei a versão prévia do Android Studio e ele construiu e instalou meu projeto sem nenhum problema.

Elisey Rodriguez Moraga
fonte
1

Embora eu tenha certeza de que a resposta de Saurabh funcionará para a maioria das outras pessoas, eu queria identificar as etapas extras que eu tinha que tomar para instalar meu apk.

Tentei enviar para o dispositivo com o seguinte resultado:

? adb push AppClient.TestOnly.App3.apk \tmp\
failed to copy 'AppClient.TestOnly.App3.apk' to '\tmp\': Read-only file system

Depois de olhar ao redor para alterar as permissões RW do sistema de arquivos, acabei executando os seguintes comandos:

? adb shell
255|shell@android:/ $ su
shell@android:/ # mount -o remount,rw /
mount -o remount,rw /

Eu consegui isso quando tentei empurrar novamente:

? adb push AppClient.TestOnly.App3.apk /tmp
failed to copy 'AppClient.TestOnly.App3.apk' to '/tmp': Permission denied

Eu era capaz de enviar para o sdcard:

? adb push AppClient.TestOnly.App3.apk /sdcard/
3178 KB/s (99747 bytes in 0.030s)

Nesse ponto, eu fui capaz de executar o comando de Saurabh:

shell@android:/ # pm install -t /sdcard/AppClient.TestOnly.App3.apk
pm install -t /sdcard/AppClient.TestOnly.App3.apk
        pkg: /sdcard/AppClient.TestOnly.App3.apk
Success
evoluir
fonte
1
Devo acrescentar que parte disso pode não ser necessária para outras.
evve 13/08/14
Aprecie o esforço extra!
Saurabh Meshram 14/08/14
1

Minha descoberta é como abaixo. Se eu compilar usando a interface do usuário do Android Studio e o APK gerado, não posso apenas

adb install <xxx.apk>

Vai gerar Failure [INSTALL_FAILED_TEST_ONLY]

Eu preciso compilá-lo usando o ie gradle ./gradlew app:assembleRelease. Em seguida, apenas o apk gerado, então ele só pode ser instalado.

Isso ocorre porque a Android Studio UI Compile gera apenas apk de teste para um dispositivo específico, enquanto o ./gradlew app:assembleReleasecomando é a geração real do apk a ser instalada em todos os dispositivos (e carregada no playstore)

Elye
fonte
Refere-se a medium.com/@elye.project/... para entender melhor a questão.
Elye
1

Conforme mencionado na documentação :

O Android Studio adiciona automaticamente esse atributo quando você clica em Executar

Portanto, para poder instalar seu apk, adb install <path to apk file>você precisa montar o build a partir do terminal: ./gradlew assembleDebuge instalar com o adb. Ou simplesmente execute ./gradlew installDebugpara criar e instalar no dispositivo simultaneamente.

ultraon
fonte
1

Para mim, funcionou, execute a tarefa gradle 'clean' (em: app, no painel Gradle, geralmente localizado à direita) e execute novamente o projeto.

jbourne
fonte
1

Crie sua distribuição .apk no Android Studio da seguinte forma

Compilar -> Compilar Apk (s) (para compilação não assinada) Compilar -> Gerar APK assinado (para compilação assinada)

Essa opção cria o APK com o android: testOnly = "false", que permite instalar o APK de maneira rápida no dispositivo pelo commond.

adb instale o seuBuilT.apk

Abhinandan
fonte
1

O que funcionou para mim é executar a Refresh all Gradle projectspartir da Gradlebarra de ferramentas no menu direito.

PFB a captura de tela do Android Studio.

  1. Selecione a Gradlebarra de ferramentas no menu direito.
  2. Selecione o Refreshícone

Isso resolveu o problema para mim.

Captura de tela do Android Studio

tomar sol
fonte
Obrigado companheiro. Ele começou após a atualização do android gradle para 4. A implantação do aplicativo diretamente do android studio funciona bem, mas não se você estiver usando o terminal (instalação do adb etc.). Após atualizar o gradle, como você mencionou, ele funcionou.
user3193413
@ user3193413 agradável de ouvir a mensagem foi de ajuda
Sunil
0

Eu tentei projeto externo, com vários apk.

O comando do Studio parecia

adb install-multiple -r ....

Solução -

  • selecionar console
  • comando aste com -t
Stoyan Mihaylov
fonte
0

primeiro remova a versão instável:

adb uninstall nome do pacote problemático

; e reinstale o apk.

Pnemônico
fonte
0

Android 3.6.2.

Build >> Build / Bundle apk >> Compilação apk

Está funcionando bem.insira a descrição da imagem aqui

Yogendra
fonte
0

No meu caso, usando o Android Studio 4.0, o abaixo resolveu o problema;

Adicione ao arquivo 'gradle.properties';

android.injected.testOnly=false 
Samantha
fonte