Échec de l'installation d'ADB avec INSTALL_FAILED_TEST_ONLY

201

J'ai des problèmes pour installer un apk sur mon appareil.

adb install <.apk>

L'utilisation de la commande ci-dessus renvoie les éléments suivants:

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

Une idée sur ce qui pourrait causer ce problème?

Il reconnaît définitivement l'appareil. Serait-ce un problème avec l'apk?

evve
la source

Réponses:

274

On dirait que vous devez modifier votre AndroidManifest.xml
changement android:testOnly="true"pour android:testOnly="false"ou supprimer cet attribut.

Si vous souhaitez conserver l'attribut android:testOnly, truevous pouvez utiliser la pm installcommande avec -toption, mais vous devrez peut-être d'abord pushl'apk sur le périphérique.

$ 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

J'ai pu reproduire le même problème et ce qui précède l'a résolu.

Si votre APK est en dehors de l'appareil (sur votre bureau), la commande ci-dessous le ferait:

$ adb install -t hello.apk
Saurabh Meshram
la source
63
Vous n'avez pas besoin d'adb push et pm install, vous pouvez spécifier le commutateur -t juste après la commande adb install: adb install -t -r package.apk
marioc64
plus besoin de pousser l'apk en ajoutant -t fonctionne dans adb install fonctionne très bien, pour la commande complète, vérifiez ma réponse ci-dessous.
amIT
adb push bin/hello.apk /tmp/ne fonctionne pas pour moi, a adb push ./debug.apk /sdcard/temp/debug.apktravaillé
HendraWD
adb install -t app/build/outputs/apk/usUnitedStates/debug/app-usUnited-debug.apktravaillé pour moi.
Sulav Timsina
Merci. Cela a résolu mon problème. Mon application était une application système. Ainsi -f était nécessaire. -f: Install package on the internal system memory.
Julian
95

J'ai rencontré un problème similaire Android Studio 3.0.0 Beta 7et je ne pouvais plus publier sur le Play Store.

Comme indiqué ici: https://developer.android.com/studio/run/index.html

Remarque: le bouton Exécuter crée un fichier APK avec testOnly = "true", ce qui signifie que le fichier APK ne peut être installé que via adb (qu'Android Studio utilise). Si vous voulez un APK débogable que les gens peuvent installer sans adb, sélectionnez votre variante de débogage et cliquez sur Build> Build APK (s).

Il en va de même pour la version de la version, avec Android Studio 3vous devez aller à Build > Build APK(s)pour avoir une apk de version non testable que vous pouvez soumettre au magasin.

Gabriel Morin
la source
6
Je soupçonne qu'en ce moment (octobre / novembre 2017), c'est la bonne réponse pour la plupart des gens qui arrivent ici. Avant AS 3, l'APK produit par "Run" était installable même en dehors d'AS, non ce n'est pas le cas.
noamtm
il y a une mise à jour et il y a un peu plus de tweak .. m'a pris un certain temps pour le comprendre: /
ruben
61

Ajoutez un -tindicateur d'installation, comme sur la capture d'écran ci-dessous:

la réponse est dans la case rouge

sunqi228
la source
L'exemple de projet que je compile utilise 'com.android.tools.build:gradle:2.4.0-alpha7' et ne compile pas avec une version stable, l'ajout de -t comme mentionné a résolu le problème pour moi.
BubbaGum
7
Veuillez expliquer ce qui se -tpasse.
rmtheis
3
dans l'aide adb, vous verrez installer avec -t signifie autoriser les packages de test
xiaoyee
l'écran est lancé en cliquant sur Modifier les configurations dans le menu déroulant du module - entre Make et Run, les boutons de débogage en haut de l'IDE: developer.android.com/studio/run/rundebugconfig.html
Gene Bo
56

Dans mon cas, cette erreur était en version Gradle instable. Utilisez simplement une version stable de gradle (pas alpha, ni même bêta). Et c'était réglé pour moi

Eugene Voronoy
la source
1
Sauvé la journée! Changement de la version gradle de 2.4.0-alpha3 à 2.3.0
Reaz Murshed
1
Le prix du collage au bord du saignement ... Merci!
Ryan R
Quelqu'un peut-il confirmer que la configuration d'Android: testOnly = "true" le corrigera également pour les versions de Gradle instables?
GPS
43

Après avoir cherché et parcouru toute la journée, le seul qui fonctionne est l'ajout

android.injected.testOnly=false

dans le fichier gradle.properties

Linyun Liu
la source
28

Je suis d'accord avec Elisey. J'ai obtenu cette même erreur après avoir ouvert mon projet dans l'aperçu 2.4, puis ouvert le même projet dans Android Studio 2.3

Correction du problème en changeant cette ligne dans build.gradle de

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

à

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

Android studio 3.0 génère uniquement des fichiers APK de test.

J'ai résolu le problème en ajoutant la propriété "android: testOnly" à la balise du manifeste Android.

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

Et puis généré le menu APK par Android studio3.0: Build -> Build APK (s) .

Plus d'informations: https://commonsware.com/blog/2017/10/31/android-studio-3p0-flag-test-only.html

Hardian
la source
13

ajoutez cette ligne à votre 'gradle.properties'

android.injected.testOnly=false
Nick Lee
la source
Merci! Cela résoudra également le problème du coureur de cuillère!
Basim Sherif
11

Aucun des articles précédents ne résout mon problème. Voici ce qui m'arrive:
je charge normalement l'application depuis le studio Android en cliquant sur le bouton "Exécuter". Lorsque vous faites cela, Android crée une application qui est bonne pour le débogage mais pas pour l'installation. Si vous essayez d'installer en utilisant:

adb install -r yourapk

vous obtiendrez un message qui dit:

Échec [INSTALL_FAILED_TEST_ONLY]

Lorsque cela se produit, vous devrez reconstruire l'apk en nettoyant d'abord la build, puis sélectionnez Build-> Build APK. Voir l'image ci-dessous:

construire apk android

Ce fichier APK est prêt à être installé via la commande d'installation adb ou toute autre méthode

J'espère que cela t'aides

David

us_david
la source
Tu es un sauveur. J'avais des problèmes avec la version de la version (magasin de clés défectueux) et je voulais distribuer les versions de débogage à mes testeurs.
drulabs
Si vous utilisez appium, vous devez spécifier "allowTestPackages": "true"vos capacités de schéma e2e.
Joshua Pinter
9

Dans mon cas, c'était en téléchargeant un APK, qui bien qu'il ait été signé avec un certificat de production et était une variante de version, a été généré par le bouton de lecture du studio Android. Problème résolu après la génération de l'APK à partir de Gradle ou de l'option de menu Build APK.

lujop
la source
1
Cela a commencé à se produire avec Android Studio 3.0, et votre suggestion l'a corrigé pour moi.
Sky Kelsey
9

Si vous souhaitez tester l'apk, ajoutez simplement l' -toption de ligne de commande.

Exemple de commande:

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

Je vois la réponse acceptée, mais vous n'avez pas besoin d'appuyer sur l'apk, puis d'exécuter la commande sur le shell adb, l'installation directe d'adb avec l'option -t fonctionne réellement

adb install -t "chemin vers apk sur votre ordinateur"

joindre une capture d'écran pour référence entrez la description de l'image ici

amIT
la source
3

Le plus simple pour résoudre ce problème, sans revenir à une ancienne version gradle, est d'ajouter l'option '-t' dans les configurations d'exécution (pour l'installation de pm).

testOnly = 'false' n'a eu aucun effet. L'erreur est causée par la version alpha du plugin gradle qui fait déboguer l'APK `` à des fins de test uniquement ''. L'option -t permet d'installer ce fichier APK. Le paramétrer dans la configuration d'exécution le fait installer automatiquement votre APK comme d'habitude.

3c71
la source
3

cela fonctionne pour moi adb install -t myapk.apk

Vardaan Sharma
la source
2

Je ne sais pas si ça va être utile pour quelqu'un ou non, mais j'ai reçu ce message d'erreur, quand j'ai accidentellement essayé de construire et d'installer mon projet avec la version test gradle plugin ( 'gradle:2.4.0-alpha5') dans la version stable d'Android Studio ( 2.3, pas dans2.4 preview 5 version I 'avait téléchargé et installé auparavant).

Quand j'ai réalisé mon erreur, j'ai lancé l'aperçu de la version Android Studio et il a construit et installé mon projet sans aucun problème.

Elisey Rodriguez Moraga
la source
1

Bien que je suis sûr que la réponse de Saurabh fonctionnera pour la plupart des autres personnes, je voulais identifier les étapes supplémentaires que je devais prendre pour installer mon apk.

J'ai essayé de pousser vers l'appareil avec le résultat suivant:

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

Après avoir regardé autour de moi pour modifier les autorisations du système de fichiers RW, j'ai fini par exécuter les commandes suivantes:

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

J'ai obtenu ceci quand j'ai essayé de pousser à nouveau:

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

J'ai pu pousser vers la carte SD:

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

À ce stade, j'ai pu exécuter le commandement 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
evve
la source
1
Je dois ajouter que certains de ces éléments peuvent ne pas être nécessaires pour d'autres.
evve
Appréciez l'effort supplémentaire!.
Saurabh Meshram
1

Ma conclusion est comme ci-dessous. Si je compile à l'aide de l'interface utilisateur d'Android Studio et que l'APK est généré, je ne peux pas simplement

adb install <xxx.apk>

Cela va générer Failure [INSTALL_FAILED_TEST_ONLY]

J'ai besoin de le compiler en utilisant le gradle ie ./gradlew app:assembleRelease. Ensuite, seul l'apk généré, alors il ne peut être installé.

En effet, la compilation de l'interface utilisateur d'Android Studio ne génère que des apk de test pour un appareil particulier, tandis que la ./gradlew app:assembleReleasecommande est la génération d'apk réelle à installer sur tous les appareils (et à télécharger sur Playstore)

Elye
la source
Fait référence à medium.com/@elye.project/… pour mieux comprendre le problème.
Elye
1

Comme mentionné dans la documentation :

Android Studio ajoute automatiquement cet attribut lorsque vous cliquez sur Exécuter

Donc, pour pouvoir installer votre apk avec adb install <path to apk file>vous devez assembler la construction depuis le terminal: ./gradlew assembleDebuget installer avec adb. Ou exécutez simplement ./gradlew installDebugpour construire et installer simultanément sur l'appareil.

ultraon
la source
1

Pour moi, cela a fonctionné exécuter la tâche gradle «propre» (sous: application, dans le volet Gradle, généralement situé à droite) et relancer le projet.

jbourne
la source
1

Créez votre distribution .apk à partir d'Android Studio comme suit

Build -> Build Apk (s) (pour la build non signée) Build -> Generate Signed APK (pour la build signée)

Cette option construit l'APK avec android: testOnly = "false" option qui vous permet d'installer l'APK de manière expresse dans l'appareil par la commond.

adb installe yourBuilT.apk

Abhinandan
la source
1

Ce qui a fonctionné pour moi, c'est de le faire Refresh all Gradle projectsdans la Gradlebarre d'outils du menu de droite.

PFB la capture d'écran d'Android Studio.

  1. Sélectionnez la Gradlebarre d'outils dans le menu de droite.
  2. Sélectionnez l' Refreshicône

Cela a résolu le problème pour moi.

Capture d'écran d'Android Studio

sunil
la source
Merci mon pote. Cela a commencé après la mise à niveau d'Android Gradle vers 4. Le déploiement de l'application directement depuis Android Studio fonctionne correctement, mais pas si vous utilisez le terminal (installation d'Adb, etc.) Après avoir actualisé le Gradle comme vous l'avez mentionné, cela a fonctionné.
user3193413
@ user3193413 Ravi d'entendre que le message a été utile
sunil
0

J'ai essayé un projet externe, avec plusieurs apk.

La commande de Studio, ressemblait à

adb install-multiple -r ....

Solution -

  • sélectionner la console
  • commande aste avec -t
Stoyan Mihaylov
la source
0

supprimez d'abord la version instable:

adb uninstall nom-package problématique

; puis réinstallez l'apk.

Pnémonique
la source
0

Android 3.6.2.

Build >> Build / Bundle apk >> Build apk

Son fonctionne bien.entrez la description de l'image ici

Yogendra
la source
0

Dans mon cas, en utilisant Android Studio 4.0, ce qui suit a résolu le problème;

Ajouter au fichier «gradle.properties»;

android.injected.testOnly=false 
Samantha
la source