Instalacja ADB kończy się niepowodzeniem przy INSTALL_FAILED_TEST_ONLY

200

Mam problemy z instalacją aplikacji na moim urządzeniu.

adb install <.apk>

Użycie powyższego polecenia zwraca następujące informacje:

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

Masz pomysł, co może powodować ten problem?

Zdecydowanie rozpoznaje urządzenie. Czy to może być problem z aplikacją?

evve
źródło

Odpowiedzi:

273

Wygląda na to trzeba zmodyfikować AndroidManifest.xml
Zmiana android:testOnly="true"do android:testOnly="false"lub usunąć ten atrybut.

Jeśli chcesz zachować ten atrybut, android:testOnlyponieważ truemożesz użyć pm installpolecenia z -topcją, ale najpierw może być konieczne użycie pushapk na urządzeniu.

$ 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

Byłem w stanie odtworzyć ten sam problem i powyższe go rozwiązałem.

Jeśli Twój pakiet APK znajduje się poza urządzeniem (na pulpicie), wykonaj poniższe polecenie:

$ adb install -t hello.apk
Saurabh Meshram
źródło
63
Nie musisz instalować adb push i pm install, możesz podać przełącznik -t zaraz po poleceniu adb install: adb install -t -r package.apk
marioc64
nie trzeba już naciskać apk dodając -t działa w instalacji adb działa poprawnie, dla pełnego polecenia sprawdź moją odpowiedź poniżej.
amIT
adb push bin/hello.apk /tmp/nie działa dla mnie, adb push ./debug.apk /sdcard/temp/debug.apkpracował
HendraWD,
adb install -t app/build/outputs/apk/usUnitedStates/debug/app-usUnited-debug.apkpracował dla mnie.
Sulav Timsina
Dzięki. To rozwiązało mój problem. Moja aplikacja była aplikacją systemową. Zatem -f był potrzebny. -f: Install package on the internal system memory.
Julian
95

Miałem podobny problem Android Studio 3.0.0 Beta 7i nie mogłem już publikować w sklepie z zabawkami.

Jak stwierdzono tutaj: https://developer.android.com/studio/run/index.html

Uwaga: przycisk Uruchom buduje pakiet APK z testOnly = „true”, co oznacza, że ​​pakiet APK można zainstalować tylko przez adb (z którego korzysta Android Studio). Jeśli chcesz debugowalny pakiet APK, który ludzie mogą zainstalować bez adb, wybierz wariant debugowania i kliknij opcję Kompiluj> Kompiluj APK.

To samo dotyczy kompilacji wersji - Android Studio 3musisz udać się Build > Build APK(s)do aplikacji, której nie można przetestować, którą możesz przesłać do sklepu.

Gabriel Morin
źródło
6
Podejrzewam, że w tej chwili (październik / listopad 2017 r.) Jest to poprawna odpowiedź dla większości osób, które tu przyjeżdżają. Przed AS 3 APK wyprodukowany przez „Run” można było zainstalować nawet poza AS, nie, nie jest.
noamtm
jest aktualizacja i jest jeszcze kilka drobnych poprawek .. zajęło mi trochę czasu, aby się zorientować: /
ruben
61

Dodaj -tflagę instalacji, jak na zrzucie ekranu poniżej:

odpowiedź znajduje się w czerwonym polu

sunqi228
źródło
Przykładowy projekt, który kompiluję, używa „com.android.tools.build:gradle:2.4.0-alpha7” i nie kompiluje się ze stabilną wersją, tylko dodanie -t, jak wspomniano, rozwiązało problem.
BubbaGum,
7
Proszę wyjaśnić, co -trobi.
rmtheis
3
w pomocy adb zobaczysz instalację z -t oznacza zezwolenie na pakiety testowe
xiaoyee
ekran jest uruchamiany poprzez kliknięcie Edytuj konfiguracje w menu rozwijanym modułu - pomiędzy Make i Run, przyciskami Debuguj u góry IDE: developer.android.com/studio/run/rundebugconfig.html
Gene Bo
56

W moim przypadku ten błąd był w niestabilnej wersji stopniowej. Wystarczy użyć stabilnej wersji gradle (nie alfa, nawet beta). I zostało to naprawione dla mnie

Eugene Voronoy
źródło
1
Ocalił dzień! Zmieniono wersję wersji z 2.4.0-alpha3 na
2.3.0
1
Cena trzymania się krwawej krawędzi ... Dzięki!
Ryan R
Czy ktoś może potwierdzić, że ustawienie Androida: testOnly = "true" naprawi to również w przypadku niestabilnych wersji stopni?
GPS
43

Po całodziennym wyszukiwaniu i przeglądaniu działa tylko dodawanie

android.injected.testOnly=false

do pliku gradle.properties

Linyun Liu
źródło
28

Zgadzam się z Elisey. Ten sam błąd wystąpił po otwarciu mojego projektu w podglądzie 2.4, a następnie otwarciu tego samego projektu w Android Studio 2.3

Naprawiono problem przez zmianę tej linii w build.gradle z

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

do

classpath 'com.android.tools.build:gradle:2.3.1'
Patrick Maroney
źródło
18

Android studio 3.0 generuje tylko testowy APK.

Rozwiązałem problem, dodając właściwość „android: testOnly” do tagu manifestu Androida.

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

A następnie wygenerował APK przez menu Android studio3.0: Kompilacja -> Kompilacja APK (ów) .

Więcej informacji: https://commonsware.com/blog/2017/10/31/android-studio-3p0-flag-test-only.html

Hardian
źródło
12

dodaj ten wiersz do swojego „gradle.properties”

android.injected.testOnly=false
Nick Lee
źródło
Dzięki! To naprawi również problem z łyżką!
Basim Sherif
11

Żaden z poprzednich postów nie rozwiązał mojego problemu. Oto, co się ze mną dzieje:
normalnie ładuję aplikację ze studia Android, klikając przycisk „Uruchom”. Gdy to zrobisz, Android utworzy aplikację, która jest dobra do debugowania, ale nie do instalacji. Jeśli spróbujesz zainstalować przy użyciu:

adb install -r twoapk

dostaniesz komunikat:

Błąd [INSTALL_FAILED_TEST_ONLY]

Kiedy tak się stanie, będziesz musiał przebudować apk, najpierw wyczyść kompilację, a następnie wybierz Kompiluj> Kompiluj APK. Zobacz poniższy obrazek:

zbuduj apk dla Androida

Ten pakiet APK jest gotowy do zainstalowania za pomocą polecenia adb install lub dowolnych innych metod

Mam nadzieję że to pomoże

David

us_david
źródło
Jesteś ratownikiem. Miałem problemy z kompilacją wydania (wadliwy magazyn kluczy) i chciałem rozpowszechniać kompilacje debugowania wśród moich testerów.
drulabs
Jeśli używasz appium, musisz określić "allowTestPackages": "true"możliwości schematu e2e.
Joshua Pinter
9

W moim przypadku było to przesłanie pliku APK, który mimo że został podpisany certyfikatem produkcyjnym i był wariantem wydania, został wygenerowany przez przycisk Uruchom odtwarzanie ze studia Android. Problem rozwiązany po wygenerowaniu pakietu APK z poziomu Gradle lub z opcji menu kompilacji APK.

lujop
źródło
1
Zaczęło się to dziać z Android Studio 3.0, a twoja sugestia naprawiła to dla mnie.
Sky Kelsey,
9

Jeśli chcesz przetestować apk, po prostu dodaj -topcję wiersza poleceń.

Przykładowe polecenie:

adb install -t .\app-debug.apk
Louis CAD
źródło
4

Widzę zaakceptowaną odpowiedź, ale tak naprawdę nie musisz wypychać apk, a następnie uruchomić komendę w powłoce adb. Bezpośrednia instalacja adb z flagą -t faktycznie działa

adb install -t "ścieżka do apk na twoim komputerze"

załączanie zrzutu ekranu w celach informacyjnych wprowadź opis zdjęcia tutaj

amIT
źródło
3

Najłatwiejszym rozwiązaniem tego problemu, bez powrotu do starszej wersji stopni, jest dodanie opcji „-t” w konfiguracjach uruchamiania (dla instalacji po południu).

testOnly = „fałsz” nie miał żadnego wpływu. Błąd jest spowodowany przez wersję alfa wtyczki gradle, która sprawia, że ​​debugowanie APK jest „tylko do celów testowych”. Opcja -t pozwala na zainstalowanie takiego APK. Ustawienie go w konfiguracji uruchamiania powoduje, że automatycznie instaluje pakiet APK w zwykły sposób.

3c71
źródło
3

to działa dla mnie adb install -t myapk.apk

Vardaan Sharma
źródło
2

Nie wiem, czy będzie to przydatne dla kogokolwiek, czy nie, ale dostałem ten komunikat o błędzie, gdy przypadkowo próbowałem zbudować i zainstalować mój projekt za pomocą wersji testowej wtyczki ( 'gradle:2.4.0-alpha5') w stabilnej wersji Android Studio ( 2.3nie w 2.4 preview 5wersji I pobrane i zainstalowane wcześniej).

Kiedy zdałem sobie sprawę z mojego błędu, uruchomiłem podgląd wersji Android Studio, która bez problemu zbudowała i zainstalowała mój projekt.

Elisey Rodriguez Moraga
źródło
1

Chociaż jestem pewien, że odpowiedź Saurabha zadziała u większości innych osób, chciałem zidentyfikować dodatkowe kroki, które musiałem podjąć, aby zainstalować apk.

Próbowałem przesłać do urządzenia z następującym rezultatem:

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

Po rozejrzeniu się w celu zmiany uprawnień RW systemu plików skończyłem na wykonywaniu następujących poleceń:

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

Dostałem to, gdy spróbowałem ponownie naciskać:

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

Byłem w stanie przeforsować kartę SD:

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

W tym momencie mogłem wykonać polecenie Saurabha:

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
źródło
1
Powinienem dodać, że niektóre z nich mogą nie być konieczne dla innych.
evve
Doceń dodatkowy wysiłek!
Saurabh Meshram
1

Moje odkrycie jest jak poniżej. Jeśli skompiluję przy użyciu interfejsu Android Studio, a wygenerowany plik APK, nie mogę tego zrobić

adb install <xxx.apk>

To wygeneruje Failure [INSTALL_FAILED_TEST_ONLY]

Muszę go skompilować za pomocą gradla tj ./gradlew app:assembleRelease. Następnie tylko wygenerowany apk, wtedy można go tylko zainstalować.

Wynika to z faktu, że kompilacja interfejsu użytkownika Android Studio generuje tylko testowy plik APK dla określonego urządzenia, podczas gdy ./gradlew app:assembleReleasepolecenie to faktyczne generowanie pliku APK do zainstalowania na każdym urządzeniu (i przesłanie do sklepu playstore)

Elye
źródło
Odsyła do medium.com/@elye.project/…, aby lepiej zrozumieć problem.
Elye
1

Jak wspomniano w dokumentacji :

Android Studio automatycznie dodaje ten atrybut po kliknięciu przycisku Uruchom

Tak więc, aby móc zainstalować apk adb install <path to apk file>, musisz skompilować kompilację z terminala: ./gradlew assembleDebugi zainstalować z adb. Lub po prostu uruchom, ./gradlew installDebugaby zbudować i zainstalować na urządzeniu jednocześnie.

ultraon
źródło
1

Dla mnie zadziałało wykonanie zadania stopniowego „wyczyść” (pod: app, w okienku Gradle, zwykle znajduje się po prawej stronie) i uruchom ponownie projekt.

jbourne
źródło
1

Zbuduj swoją dystrybucję .apk z Android Studio w następujący sposób

Kompilacja -> Kompilacja aplikacji (dla kompilacji bez podpisu) Kompilacja -> Generowanie podpisanego pakietu AP (dla kompilacji z podpisem)

Ta opcja buduje APK z Androidem: testOnly = "false" opcja, która pozwala zainstalować APK w sposób widoczny na urządzeniu przez komunię.

adb zainstaluj plik yourBuilT.apk

Abhinandan
źródło
1

Co pracował dla mnie jest prowadzenie Refresh all Gradle projectsz Gradlepaska narzędzi z menu po prawej stronie.

PFB zrzut ekranu z Android Studio.

  1. Wybierz Gradlepasek narzędzi z prawego menu.
  2. Wybierz Refreshikonę

To rozwiązało problem.

Zrzut ekranu z Android Studio

sunil
źródło
Dzięki stary. Zaczęło się po uaktualnieniu Androida do wersji 4. Wdrożenie aplikacji bezpośrednio z Android Studio działa dobrze, ale nie przy użyciu terminala (instalacja adb itp.). Po odświeżeniu stopnia, jak wspomniałeś, działało.
user3193413,
@ user3193413 Miło było usłyszeć, że post był pomocny
sunil
0

Próbowałem zewnętrznego projektu, z wieloma apk.

Wyglądało na to polecenie ze Studio

adb install-multiple -r ....

Rozwiązanie -

  • wybierz konsolę
  • polecenie aste za pomocą -t
Stoyan Mihaylov
źródło
0

najpierw usuń niestabilną wersję:

adb uninstall problematyczna-nazwa-pakietu

; a następnie ponownie zainstaluj apk.

Pnemoniczny
źródło
0

Android 3.6.2.

Kompilacja >> Kompilacja / Pakiet apk >> Kompilacja apk

Działa dobrze.wprowadź opis zdjęcia tutaj

Jogendra
źródło
0

W moim przypadku przy użyciu Android Studio 4.0 poniższe rozwiązanie rozwiązało problem;

Dodaj do pliku „gradle.properties”;

android.injected.testOnly=false 
Samantha
źródło