Apa artinya ini: Kegagalan [INSTALL_FAILED_CONTAINER_ERROR]?

129

Saya mencoba untuk menggunakan aplikasi saya dan terkadang mendapatkan kesalahan ini:

Failure 
[INSTALL_FAILED_CONTAINER_ERROR] 

Saya mencoba untuk google tetapi tidak menemukan apa artinya kesalahan atau apa yang disebabkannya. Saya menggunakan via IDE (IntelliJ) file tersebut akan disalin ke perangkat ke / data / local / tmp (Huawei Ideos tanpa root, menjalankan 2.2), tetapi manajer paket sepertinya tidak menyukainya. Sebelum menginstal apk, saya sudah menghapus aplikasi dari perangkat sebelumnya. Saya juga memastikan tidak ada file lama di bawah / data / local / tmp pada perangkat. Masih saya mendapatkan kesalahan ini sekarang. Paket harus ditandatangani dengan kunci debug, karena saya menggunakan via IDE dengan 'menjalankan' aplikasi.

$ pwd 
/data/local/tmp 
$ ls -l 
-rw-rw-rw- shell    shell    17257686 2011-04-21 20:31 
com.company.shop 
$ pm install -r com.company.shop 
        pkg: com.company.shop 
Failure [INSTALL_FAILED_CONTAINER_ERROR]

Apa artinya dan bagaimana mengatasinya?

Edit / Perbarui:

Saya dapat menghindari kesalahan saat tidak mengizinkan aplikasi diinstal pada sdcard, pengaturan

android:installLocation="internalOnly"

dalam manifes. Tidak apa-apa untuk pengembangan, tetapi untuk produksi, itu tidak benar-benar apa yang saya inginkan - karena aplikasi saya cukup besar dengan 17MB; oleh karena itu saya lebih suka menggunakan sdcard. Bagaimana cara menginstalnya pada memori eksternal tanpa rooting (karena ini adalah satu-satunya cara saya bisa menghapus /mnt/secure/asec/smdl2tmp1.asec, yang tampaknya menjadi salah satu solusi juga).

Mathias Conradt
sumber
Karena penasaran: dapatkah Anda menginstalnya pm install -f com.company.shop?
Jakub Czaplicki
Ada beberapa variasi INSTALL_FAILED_CONTAINER_ERRORmasalah, untuk beberapa dari mereka lihat jawaban saya di sini: stackoverflow.com/a/30343659/313113
bitek
Bagi saya, itu sesederhana emulator "kehabisan ruang" (???) dan saya harus menghapus data di AVD Manager.
EpicPandaForce

Jawaban:

44

hapus file ini dari perangkat Anda

/mnt/secure/asec/smdl2tmp1.asec

Edit / Perbarui oleh Mathias Conradt (OP):

Jika Anda tidak memiliki akses root, Anda perlu me-mount sdcard dan menghapusnya melalui pc:

/.android_secure/smdl2tmp1.asec
Mathias Conradt
sumber
3
tetapi perangkat saya tidak dicabut, dan melihat folder yang aman, hanya root yang memiliki akses. Saya dapat menjalankan aplikasi sebelumnya, hanya sekarang sejak beberapa saat, tidak dapat menjalankannya dan memberikan kesalahan di atas.
Mathias Conradt
1
btw - ada juga folder / mnt / asec / yang bisa saya jangkau dengan non-root, tapi itu kosong
Mathias Conradt
3
@Jazz Ini terjadi padaku hari ini. Saya benar-benar ingin tahu mengapa / tentang apa ini. Hapus file secara manual? Mengapa gerhana tidak bisa melakukan ini? Apakah ini bug telepon?
Erik
1
Saya mengalami masalah ini. saya tidak dapat melihat file / folder menggunakan Mac saya. adakah cara lain?
SleepNot
14
Ini berhasil, tetapi bisakah Anda menjelaskan, mengapa bisa? Apa yang ada di file smdl2tmp1.asec yang misterius?
Alexander Pacha
222

Ubah lokasi pemasangan dari

android:installLocation="preferExternal"

ke

android:installLocation="auto"

di AndroidManifest.xml proyek Anda.

Ren
sumber
12
Inilah yang melakukannya untuk saya. Terima kasih!
Jim McKeeth
Ya, ini juga untuk saya. Terima kasih!
Senthil Kumaran
22
tetapi saya ingin preferEternal ...? Bagaimana cara memperbaikinya?
Aiden Fry
2
@Sameer nggak, ini juga terjadi pada perangkat nyata - tetapi tidak konsisten. Yang utama adalah perangkat HTC Desire S dan Nexus.
Aiden Fry
1
@AidenFry Gunakan solusi user2445968 jika Anda ingin menyimpan preferExternal.
LG
32

Jika Anda menggunakan emulator, edit dan tambahkan lebih banyak memori. Saya mempunyai masalah seperti ini dan yang saya lakukan hanyalah mengedit memori AVD saya dari 200 MB menjadi 1000 MB dan masalahnya sepertinya hilang ... Semoga Sukses.

Dan
sumber
Ya itu terjadi sama dengan saya. Jempol ke atas :)
NaXir
Selain menambah memori saya juga harus menghapus data pengguna dan hanya setelah itu, ukuran baru tercermin dan kesalahan hilang.
Varun
2
Boleh saya kira Anda merujuk ke Penyimpanan Internal, dan bukan RAM?
Jonny
1
Saya meningkatkan memori AVD saya, dan kemudian menghapus data !! dan sekarang berhasil.
Temui Vora
7

Ini berarti ada instalasi sebelumnya yang rusak. Jika Anda menginstal pada eksternal saya sarankan Anda memformat kartu sd coba lagi.

Dalbator
sumber
6

Saya memiliki kesalahan ini berulang kali. Saya telah menemukan cara paling sederhana untuk menghindari kesalahan secara keseluruhan adalah dengan hanya memformat kartu SD. Menggunakan telepon atau alat internal emulator. Saya telah menemukan bahwa kartu SD yang dihasilkan secara otomatis atau bahkan membuat sdcard.iso Anda gagal dan menyebabkan kesalahan ini kecuali dibentuk oleh alat android internal.

pengguna2445968
sumber
1
Selamat Datang di Stack Overflow! Terima kasih untuk kiriman Anda! Tolong jangan gunakan tanda tangan / tagline dalam posting Anda. Kotak pengguna Anda dianggap sebagai tanda tangan Anda, dan Anda dapat menggunakan profil Anda untuk memposting informasi tentang diri Anda sendiri. FAQ tentang tanda tangan / tagline
Andrew Barber
Diselesaikan ini dengan solusi yang sama, karena masalahnya disebabkan oleh penulisan kesalahan ke SDCard, itu lebih baik daripada workaorund dari Rene jika Anda ingin tetap android: installLocation = "preferExternal".
LG
Konfirmasi. Kesalahan pada SD adalah alasan bagi saya. Saya mengujinya menghapus "prefer external" dari manifes - sudah terpasang ok.
djdance
4

Bagi saya ini disebabkan oleh kurangnya ruang pada kartu SD emulator saya. Saya bekerja dengan proyek yang cukup besar dan saya pikir 40 mb sudah cukup, tetapi saya mengubahnya menjadi 200 mb dan masalahnya hilang.

noisecapella
sumber
4

Memiliki kesalahan yang sama dengan berbagai .apkdi Cyanogenmod 12.1 (Android 5.1.1) pada Note 8 saya dengan partisi kedua untuk Link2SD. Saya dapat menginstal aplikasi dengan memaksa instalasi melalui adb sebagai root:

adb root
adb install -f myapp.apk
Tobi G.
sumber
3

Saya mendapat pesan kesalahan ini dari Android 5.0.1. Saya telah mengubah lokasi pemasangan yang disukai menjadi "Kartu SD yang dapat dilepas" melalui Pengaturan-> Aplikasi-> Lokasi Instalasi Pilihan.

Saya mengubah opsi kembali ke "Biarkan sistem memutuskan" dan pesan kesalahan hilang.

nyxee
sumber
1
Ini sepertinya menjadi solusi bagi saya menjalankan Cyanogenmod 12 (Android 5.0.2). Pembukaan itu tampaknya memaksa aplikasi untuk memasang pada kartu SD yang dapat dilepas meskipun manifes aplikasi menentukan bahwa itu tidak dapat diinstal di sana.
Sam
1

Bagi saya, itu bahasa perangkat. Saya menggunakan bahasa Arab untuk menguji aplikasi saya. Lalu saya mendapat kesalahan ini. Mengembalikan bahasa itu berhasil.

Elyess Abouda
sumber
1

android: installLocation = "auto" berfungsi .. !!

Jika Tidak, Sekali periksa ukuran ruang penyimpanan eksternal Anda. [Memori yang tersedia> ukuran aplikasi] Jika ruang penyimpanan tidak cukup maka kesalahan ini juga terjadi.

Mallikarjungouda Annigeri
sumber
0

Saya punya masalah serupa dengan emulator. Itu hilang ketika saya mengubah jenis CPU emulator dari ARM ke Intel.

Wytas
sumber
Ini tidak benar-benar membantu OP dengan masalah mereka, karena kekhawatiran mereka membuatnya bekerja pada perangkat dunia nyata, banyak yang masih menggunakan CPU ARM.
James Green
0

dalam beberapa situasi, menghapus libs/android-support-v4.jarmenghasilkan kesalahan ini.

Amir Saniyan
sumber
0

Bagi saya, penghapusan beberapa aplikasi menyelesaikan masalah. Ketika penyimpanan lokal memiliki cukup memori, penyebaran APK selesai dengan sukses. Tapi biasanya saya cukup me-restart gadget, dan instalasi selesai. Juga, beberapa program seperti Master Bersih dapat membantu. Cukup sering bersihkan proses yang tidak berguna dan tutup program dengan Clean Master dan dapatkan memori yang cukup.

CoolMind
sumber
0

Restart perangkat saya memperbaiki masalah untuk saya.

theOzmic
sumber