L'installazione di ADB non riesce con INSTALL_FAILED_TEST_ONLY


201

Sto riscontrando problemi con l'installazione di un apk sul mio dispositivo.

adb install <.apk>

L'uso del comando sopra restituisce quanto segue:

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

Qualche idea su cosa potrebbe causare questo problema?

Riconosce sicuramente il dispositivo. Potrebbe essere un problema con l'apk?

Risposte:


274

Sembra che tu debba modificare la AndroidManifest.xml
modifica android:testOnly="true"in android:testOnly="false"o rimuovere questo attributo.

Se si desidera mantenere l'attributo in android:testOnlyquanto trueè possibile utilizzare il pm installcomando con -topzione, ma potrebbe essere necessario prima pushl'apk al dispositivo.

$ 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

Sono stato in grado di riprodurre lo stesso problema e quanto sopra risolto.

Se l'APK si trova all'esterno del dispositivo (sul desktop), il comando seguente lo farebbe:

$ adb install -t hello.apk

63
Non è necessario adb push e pm install, è possibile specificare l'opzione -t subito dopo il comando adb install: adb install -t -r package.apk
marioc64

non c'è più bisogno di spingere l'apk aggiungendo -t funziona in adb install funziona bene, per il comando completo controlla la mia risposta qui sotto.
Amit

adb push bin/hello.apk /tmp/non funziona per me, ha adb push ./debug.apk /sdcard/temp/debug.apkfunzionato
HendraWD

adb install -t app/build/outputs/apk/usUnitedStates/debug/app-usUnited-debug.apkha funzionato per me.
Sulav Timsina,

Grazie. Ciò ha risolto il mio problema. La mia app era un'app di sistema. Quindi -f era necessario. -f: Install package on the internal system memory.
Julian

95

Ho avuto un problema simile con Android Studio 3.0.0 Beta 7e non potevo più pubblicare sul Play Store.

Come indicato qui: https://developer.android.com/studio/run/index.html

Nota: il pulsante Esegui crea un APK con testOnly = "true", il che significa che l'APK può essere installato solo tramite adb (utilizzato da Android Studio). Se desideri un APK debuggable che le persone possano installare senza adb, seleziona la variante di debug e fai clic su Genera> Genera APK.

Lo stesso vale per la versione di rilascio, con cui Android Studio 3devi andare Build > Build APK(s)per avere un apk di versione non testabile che puoi inviare allo store.


6
Sospetto che proprio ora (ottobre / novembre 2017) questa sia la risposta corretta per la maggior parte delle persone che arrivano qui. Prima di AS 3, l'APK prodotto da "Run" era installabile anche al di fuori di AS, no.
Noamtm,

c'è un aggiornamento e c'è ancora qualche modifica ... mi ci è voluto un po 'per capirlo: /
ruben,

61

Aggiungi -tflag di installazione, come nello screenshot qui sotto:

la risposta è nella casella rossa


Il progetto di esempio che compilo usa 'com.android.tools.build:gradle:2.4.0-alpha7' e non viene compilato con una versione stabile, aggiungendo solo -t, come detto, risolto il problema per me.
BubbaGum,

7
Per favore, spiega cosa -tfa.
rmtheis il

3
nella guida di adb, vedrai l'installazione con -t significa consentire i pacchetti di test
xiaoyee,

la schermata viene avviata facendo clic su Modifica configurazioni nel menu a discesa del modulo - tra Crea ed Esegui, pulsanti Debug nella parte superiore dell'IDE: developer.android.com/studio/run/rundebugconfig.html
Gene Bo

56

Nel mio caso questo errore era in versione graduale instabile. Usa solo una versione stabile di Gradle (non alfa, nemmeno beta). Ed è stato risolto per me


1
Salvato il giorno! Modificata la versione graduale da 2.4.0-alpha3 a 2.3.0
Reaz Murshed

1
Il prezzo di aderire al limite del sanguinamento ... Grazie!
Ryan R,

Qualcuno può confermare che l'impostazione di android: testOnly = "true" lo risolverà anche per versioni pendolari instabili?
GPS,

43

Dopo aver cercato e navigato tutto il giorno, l'unico funziona è l'aggiunta

android.injected.testOnly=false

nel file gradle.properties


28

Sono d'accordo con Elisey. Ho avuto questo stesso errore dopo aver aperto il mio progetto nell'anteprima 2.4 e aver aperto lo stesso progetto in Android Studio 2.3

Risolto il problema cambiando questa riga in build.gradle da

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

per

classpath 'com.android.tools.build:gradle:2.3.1'


13

aggiungi questa riga a "gradle.properties"

android.injected.testOnly=false

Grazie! Questo risolverà anche il problema del corridore cucchiaio!
Basim Sherif

11

Nessuno dei post precedenti ha risolto il mio problema. Ecco cosa sta succedendo con me:
solito carico l'app da Android Studio facendo clic sul pulsante "Esegui". Quando lo fai, Android creerà un'app che è buona per il debug ma non per l'installazione. Se si tenta di installare utilizzando:

adb installa -r yourapk

riceverai un messaggio che dice:

Errore [INSTALL_FAILED_TEST_ONLY]

Quando ciò accade, dovrai ricostruire l'apk pulendo prima la build, quindi seleziona Build-> Build APK. Vedi l'immagine qui sotto:

costruire apk Android

Questo APK è pronto per essere installato tramite il comando di installazione adb o altri metodi

Spero che questo ti aiuti

David


Sei un salvavita. Ho avuto problemi con la build di rilascio (keystore difettoso) e volevo distribuire build di debug ai miei tester.
drulabs

Se stai usando appium, devi specificare "allowTestPackages": "true"le capacità del tuo schema e2e.
Joshua Pinter,

9

Nel mio caso è stato caricando un APK, che sebbene fosse firmato con un certificato di produzione ed era una variante di rilascio, è stato generato dal pulsante di esecuzione di esecuzione da Android Studio. Problema risolto dopo la generazione dell'APK dall'opzione di menu Gradle o Build APK.


1
Questo è iniziato con Android Studio 3.0 e il tuo suggerimento lo ha risolto per me.
Sky Kelsey

9

Se vuoi testare l'apk, aggiungi semplicemente -t opzione della riga di comando.

Esempio di comando:

adb install -t .\app-debug.apk

4

Vedo la risposta accettata ma in realtà non è necessario spingere l'apk e quindi eseguire il comando su adb shell installazione adb diretta con -t flag effettivamente funziona

adb install -t "percorso dell'apk nel tuo computer"

allegando uno screenshot per riferimento inserisci qui la descrizione dell'immagine


3

Il modo più semplice per risolverlo, senza tornare a una versione gradle precedente, è aggiungere l'opzione '-t' nelle configurazioni di esecuzione (per l'installazione di pm).

testOnly = 'false' non ha avuto alcun effetto. L'errore è causato dalla versione alpha del plugin gradle che rende l'APK di debug "solo a scopo di test". L'opzione -t consente di installare tale APK. L'impostazione nella configurazione di esecuzione consente di installare automaticamente l'APK come al solito.



2

Non so se sarà utile per nessuno o no, ma ho ricevuto questo messaggio di errore, quando ho accidentalmente provato a compilare e installare il mio progetto con la versione test gradle plugin ( 'gradle:2.4.0-alpha5') nella versione stabile di Android Studio ( 2.3, non in2.4 preview 5 versione I scaricato e installato prima).

Quando ho realizzato il mio errore, ho lanciato l'anteprima della versione di Android Studio e ho creato e installato il mio progetto senza alcun problema.


1

Anche se sono sicuro che la risposta di Saurabh funzionerà per la maggior parte delle altre persone, volevo identificare i passaggi extra che dovevo fare per installare il mio apk.

Ho provato a spingere verso il dispositivo con il seguente risultato:

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

Dopo essermi guardato intorno per cambiare le autorizzazioni RW del filesystem ho finito per eseguire i seguenti comandi:

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

L'ho preso quando ho provato a spingere di nuovo:

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

Sono stato in grado di spingere sulla sdcard:

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

A quel punto sono stato in grado di eseguire il comando di 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

1
Dovrei aggiungere che parte di questo potrebbe non essere necessario per altri.
evve

Apprezzo lo sforzo extra !.
Saurabh Meshram

1

La mia scoperta è la seguente. Se eseguo la compilazione utilizzando l'interfaccia utente di Android Studio e l'APK generato, non posso semplicemente

adb install <xxx.apk>

Genererà Failure [INSTALL_FAILED_TEST_ONLY]

Ho bisogno di compilarlo usando il gradle ie ./gradlew app:assembleRelease. Quindi solo l'apk generato, quindi può solo essere installato.

Questo perché la compilazione dell'interfaccia utente di Android Studio genera solo apk di prova per un determinato dispositivo, mentre ./gradlew app:assembleRelease comando è l'apk di generazione effettiva da installare su tutti i dispositivi (e caricarlo su Playstore)


Si riferisce a medium.com/@elye.project/… per comprendere meglio il problema.
Elye,

1

Come menzionato nella documentazione :

Android Studio aggiunge automaticamente questo attributo quando fai clic su Esegui

Quindi, per poter installare il tuo apk con adb install <path to apk file>devi assemblare build dal terminale: ./gradlew assembleDebuge installare con adb. O semplicemente esegui ./gradlew installDebugper compilare e installare sul dispositivo contemporaneamente.


1

Per me ha funzionato eseguendo il task gradle 'clean' (sotto: app, nel riquadro Gradle, solitamente situato a destra) ed eseguendo nuovamente il progetto.


1

Crea la tua distribuzione .apk da Android Studio come segue

Build -> Build Apk (s) (per build senza segno) Build -> Genera APK firmato (per build firmata)

Questa opzione crea l'APK con Android: testOnly = opzione "false" che ti consente di installare l'APK in modo esplicito nel dispositivo dal comune.

adb installa yourBuilT.apk


1

Ciò che ha funzionato per me è esibirsi Refresh all Gradle projectsdalla Gradlebarra degli strumenti dal menu a destra.

PFB lo screenshot da Android Studio.

  1. Seleziona la Gradlebarra degli strumenti dal menu a destra.
  2. Seleziona l' Refreshicona

Questo ha risolto il problema per me.

Schermata di Android Studio


Grazie compagno. È iniziato dopo aver aggiornato Android Gradle a 4. La distribuzione dell'app direttamente da Android Studio funziona bene, ma non se si utilizza il terminale (installazione adb, ecc.) Dopo aver aggiornato il Gradle come hai detto, ha funzionato.
user3193413

@ user3193413 Mi fa piacere sapere che il post è stato di aiuto
sunil

0

Ho provato un progetto esterno, con apk multipli.

Sembrava il comando di Studio

adb install-multiple -r ....

Soluzione -

  • seleziona console
  • asta comando con -t

0

rimuovere prima la versione instabile:

adb uninstall problematico-package-name

; e quindi reinstallare l'apk.


0

Android 3.6.2.

Build >> Build / Bundle apk >> Build apk

Funziona benissimo.inserisci qui la descrizione dell'immagine


0

Nel mio caso, usando Android Studio 4.0, di seguito ho risolto il problema;

Aggiungi al file 'gradle.properties';

android.injected.testOnly=false 
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.