Instalasi ADB Gagal Dengan INSTALL_FAILED_TEST_ONLY

201

Saya mengalami masalah dalam menginstal apk ke perangkat saya.

adb install <.apk>

Menggunakan perintah di atas mengembalikan yang berikut:

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

Adakah yang tahu apa yang menyebabkan masalah ini?

Itu pasti mengenali perangkat. Mungkinkah itu masalah dengan apk?

evve
sumber

Jawaban:

274

Sepertinya Anda perlu mengubah AndroidManifest.xml
Ubah android:testOnly="true"untuk android:testOnly="false"atau menghapus atribut ini.

Jika Anda ingin mempertahankan atribut android:testOnlykarena trueAnda dapat menggunakan pm installperintah dengan -topsi, tetapi Anda mungkin perlu pushapk ke perangkat terlebih dahulu.

$ 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

Saya bisa mereproduksi masalah yang sama dan di atas menyelesaikannya.

Jika APK Anda berada di luar perangkat (pada desktop Anda), maka perintah di bawah ini akan melakukannya:

$ adb install -t hello.apk
Saurabh Meshram
sumber
63
Anda tidak perlu adb push dan install pm, Anda dapat menentukan -t switch hanya setelah perintah install adb: adb install -t -r package.apk
marioc64
tidak perlu menekan apk lagi menambahkan -t berfungsi di adb install berfungsi dengan baik, untuk perintah lengkap periksa jawaban saya di bawah ini.
amit
adb push bin/hello.apk /tmp/tidak bekerja untuk saya, adb push ./debug.apk /sdcard/temp/debug.apkberhasil
HendraWD
adb install -t app/build/outputs/apk/usUnitedStates/debug/app-usUnited-debug.apkbekerja untukku.
Sulav Timsina
Terima kasih. Itu memecahkan masalah saya. Aplikasi saya adalah aplikasi sistem. Jadi -f diperlukan. -f: Install package on the internal system memory.
Julian
95

Saya memiliki masalah yang sama dengan Android Studio 3.0.0 Beta 7dan tidak dapat mempublikasikan lagi ke play store.

Seperti yang dinyatakan di sini: https://developer.android.com/studio/run/index.html

Catatan: Tombol Run membangun APK dengan testOnly = "true", yang berarti APK hanya dapat diinstal melalui adb (yang digunakan Android Studio). Jika Anda ingin APK yang dapat di-debuggable yang dapat dipasang orang tanpa adb, pilih varian debug Anda dan klik Build> Build APK.

Hal yang sama berlaku untuk rilis build, dengan Android Studio 3Anda harus pergi Build > Build APK(s)untuk memiliki apk rilis yang tidak dapat diuji yang dapat Anda kirim ke toko.

Gabriel Morin
sumber
6
Saya menduga bahwa sekarang (Oktober / November 2017) ini adalah jawaban yang benar bagi kebanyakan orang yang datang ke sini. Sebelum AS 3, APK yang diproduksi oleh "Run" dapat diinstal bahkan di luar AS, bukan itu.
noamtm
ada pembaruan dan ada beberapa lagi tweak .. butuh beberapa saat untuk mencari tahu: /
ruben
61

Tambahkan -tbendera instal, seperti pada tangkapan layar di bawah ini:

jawabannya ada di kotak merah

sunqi228
sumber
Proyek sampel yang saya kompilasi menggunakan 'com.android.tools.build:gradle:.4.0-alpha7' dan tidak mengkompilasi dengan versi stabil, hanya menambahkan -t seperti yang disebutkan memecahkan masalah untuk saya.
BubbaGum
7
Tolong jelaskan apa yang -tterjadi.
rmtheis
3
dalam bantuan adb, Anda akan melihat menginstal dengan -t berarti mengizinkan paket pengujian
xiaoyee
layar diluncurkan melalui mengklik Edit Konfigurasi pada menu dropdown modul - antara tombol Make and Run, Debug di atas IDE: developer.android.com/studio/run/rundebugconfig.html
Gene Bo
56

Dalam kasus saya kesalahan ini dalam versi gradle tidak stabil. Cukup gunakan versi stabil gradle (bukan alpha, bahkan beta). Dan itu sudah diperbaiki untuk saya

Eugene Voronoy
sumber
1
Selamat hari itu! Mengubah versi gradle dari 2.4.0-alpha3 ke 2.3.0
Reaz Murshed
1
Harga menempel ke tepi pendarahan ... Terima kasih!
Ryan R
Adakah yang bisa mengonfirmasi pengaturan Android: testOnly = "true" akan memperbaikinya juga untuk versi gradle yang tidak stabil?
GPS
43

Setelah mencari dan menelusuri sepanjang hari, satu-satunya yang berfungsi adalah menambahkan

android.injected.testOnly=false

ke file gradle.properties

Linyun Liu
sumber
28

Saya setuju dengan Elisey. Saya mendapat kesalahan yang sama setelah membuka proyek saya di pratinjau 2.4 dan kemudian membuka proyek yang sama di android studio 2.3

Memperbaiki masalah dengan mengubah baris ini di build.gradle dari

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

untuk

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

Android studio 3.0 hanya menghasilkan APK uji.

Saya telah memecahkan masalah dengan menambahkan properti "android: testOnly" ke tag manifes android.

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

Dan kemudian menghasilkan menu APK oleh Android studio3.0: Build -> Build APK (s) .

Info lebih lanjut: https://commonsware.com/blog/2017/10/31/android-studio-3p0-flag-test-only.html

Hardian
sumber
13

tambahkan baris ini ke 'gradle.properties' Anda

android.injected.testOnly=false
nick lee
sumber
Terima kasih! Ini juga akan memperbaiki masalah pelari sendok!
Basim Sherif
11

Tidak ada pos sebelumnya yang memecahkan masalah saya. Inilah yang terjadi dengan saya:
Saya biasanya memuat aplikasi dari studio android dengan mengklik tombol "Run". Ketika Anda melakukan ini, android akan membuat aplikasi yang bagus untuk debug tetapi tidak untuk instalasi. Jika Anda mencoba menginstal menggunakan:

adb instal -r yourapk

Anda akan mendapatkan pesan yang mengatakan:

Gagal [INSTALL_FAILED_TEST_ONLY]

Ketika ini terjadi, Anda harus membangun kembali apk dengan terlebih dahulu membersihkan build, lalu pilih Build-> Build APK. Lihat gambar di bawah:

membangun apk Android

APK ini siap diinstal baik melalui perintah install adb atau metode lainnya

Semoga ini membantu

David

us_david
sumber
Anda adalah penyelamat. Saya mengalami masalah dengan rilis rilis (rusak keystore) dan ingin mendistribusikan debug membangun ke penguji saya.
drulab
Jika Anda menggunakan appium, Anda perlu menentukan "allowTestPackages": "true"kemampuan skema e2e Anda.
Joshua Pinter
9

Dalam kasus saya adalah dengan mengunggah APK, yang meskipun ditandatangani dengan sertifikat produksi dan merupakan varian rilis, dihasilkan oleh tombol run play dari Android studio. Masalah terpecahkan setelah membuat APK dari Gradle atau dari opsi menu Build APK.

lujop
sumber
1
Ini mulai terjadi dengan Android Studio 3.0, dan saran Anda memperbaikinya untuk saya.
Sky Kelsey
9

Jika Anda ingin menguji apk, cukup tambahkan -topsi baris perintah.

Contoh perintah:

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

Saya melihat jawaban yang diterima tetapi Anda tidak harus benar-benar menekan apk dan kemudian menjalankan perintah pada adb shell langsung menginstal adb dengan -t flag benar-benar berfungsi

adb install -t "path to apk in ur computer"

melampirkan tangkapan layar untuk referensi masukkan deskripsi gambar di sini

AMIT
sumber
3

Cara termudah untuk menyelesaikan ini, tanpa kembali ke versi gradle yang lebih lama adalah dengan menambahkan opsi '-t' dalam konfigurasi run (untuk pm install).

testOnly = 'false' tidak berpengaruh apa pun. Kesalahan ini disebabkan oleh versi alfa dari plugin gradle yang membuat debug APK 'untuk tujuan pengujian saja'. Opsi -t memungkinkan APK tersebut diinstal. Mengaturnya dalam konfigurasi yang berjalan membuatnya APK secara otomatis menginstal Anda seperti biasa.

3c71
sumber
3

ini bekerja untuk saya adb install -t myapk.apk

Vardaan Sharma
sumber
2

Saya tidak tahu apakah itu akan berguna bagi siapa pun atau tidak, tapi saya mendapat pesan kesalahan ini, ketika saya tidak sengaja mencoba membangun dan menginstal proyek saya dengan plugin test gradle ( 'gradle:2.4.0-alpha5') versi dalam versi Android Studio yang stabil ( 2.3, tidak dalam2.4 preview 5 versi I telah diunduh dan diinstal sebelumnya).

Ketika saya menyadari kesalahan saya, saya meluncurkan pratinjau versi Android Studio dan itu membangun dan menginstal proyek saya tanpa masalah.

Elisey Rodriguez Moraga
sumber
1

Meskipun saya yakin jawaban Saurabh akan bekerja untuk sebagian besar orang lain, saya memang ingin mengidentifikasi langkah-langkah tambahan yang harus saya ambil untuk menginstal apk saya.

Saya mencoba mendorong ke perangkat dengan hasil berikut:

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

Setelah melihat sekeliling untuk mengubah izin filesystem RW saya akhirnya menjalankan perintah berikut:

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

Saya mendapatkan ini ketika saya mencoba untuk mendorong lagi:

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

Saya bisa mendorong ke sdcard:

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

Pada titik mana saya bisa menjalankan perintah 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
sumber
1
Saya harus menambahkan bahwa beberapa di antaranya mungkin tidak diperlukan untuk yang lain.
evve
Hargai upaya ekstra !.
Saurabh Meshram
1

Temuan saya adalah seperti di bawah ini. Jika saya kompilasi menggunakan Android Studio UI, dan APK yang dihasilkan, saya tidak bisa adil

adb install <xxx.apk>

Itu akan menghasilkan Failure [INSTALL_FAILED_TEST_ONLY]

Saya perlu mengkompilasinya menggunakan yaitu gradle ./gradlew app:assembleRelease. Maka hanya apk yang dihasilkan, maka itu hanya dapat diinstal.

Ini karena Android Studio UI Compile, hanya menghasilkan apk pengujian untuk perangkat tertentu, sedangkan ./gradlew app:assembleReleaseperintah adalah generasi apk sebenarnya yang harus diinstal pada semua perangkat (dan mengunggah ke playstore)

Elye
sumber
Mengacu pada medium.com/@elye.project/… untuk memahami lebih baik masalah ini.
Elye
1

Sebagaimana disebutkan dalam dokumentasi :

Android Studio secara otomatis menambahkan atribut ini ketika Anda mengklik Jalankan

Jadi, untuk dapat menginstal apk adb install <path to apk file>Anda dengan Anda harus merakit build from terminal: ./gradlew assembleDebugdan instal dengan adb. Atau jalankan ./gradlew installDebuguntuk membangun dan menginstal pada perangkat secara bersamaan.

ultraon
sumber
1

Bagi saya itu telah berhasil menjalankan tugas gradle 'bersih' (di bawah: aplikasi, di panel Gradle, biasanya terletak di sebelah kanan) dan menjalankan lagi proyek.

jbourne
sumber
1

Bangun distribusi .apk Anda dari Android Studio sebagai berikut

Build -> Build Apk ( untuk build yang tidak ditandatangani) Build -> Generate Signed APK (untuk build yang ditandatangani)

Opsi ini membangun APK dengan android: opsi testOnly = "false" yang memungkinkan Anda untuk menginstal APK secara ekspansif ke perangkat oleh commond.

adb instal yourBuilT.apk

Abhinandan
sumber
1

Apa yang berhasil untuk saya lakukan Refresh all Gradle projectsdari Gradlebilah alat dari menu kanan.

PFB tangkapan layar dari Android Studio.

  1. Pilih Gradlebilah alat dari menu kanan.
  2. Pilih Refreshikonnya

Ini menyelesaikan masalah bagi saya.

Tangkapan layar dari Android Studio

sunil
sumber
Terima kasih sobat. Itu dimulai setelah memutakhirkan android gradle ke 4. Menyebarkan aplikasi langsung dari android studio berfungsi dengan baik tetapi tidak jika menggunakan terminal (adb instal dll.) Setelah menyegarkan gradle seperti yang Anda sebutkan itu berfungsi.
user3193413
@ user3193413 Senang mendengar posting itu membantu
sunil
0

Saya mencoba proyek eksternal, dengan beberapa apk.

Perintah dari Studio, tampak seperti

adb install-multiple -r ....

Solusi -

  • pilih konsol
  • perintah penuh dengan -t
Stoyan Mihaylov
sumber
0

pertama-tama hapus versi yang tidak stabil:

adb uninstall nama-paket-bermasalah

; lalu instal ulang apk.

Pnemonik
sumber
0

Android 3.6.2.

Build >> Build / Bundle apk >> Build apk

Ini bekerja dengan baik.masukkan deskripsi gambar di sini

Yogendra
sumber
0

Dalam kasus saya, menggunakan Android Studio 4.0, di bawah ini menyelesaikan masalah;

Tambahkan ke file 'gradle.properties';

android.injected.testOnly=false 
Samantha
sumber