Điều này có nghĩa là gì: Thất bại [INSTALL_FAILED_CONTAINER_ERROR]?


129

Tôi cố gắng triển khai ứng dụng của mình và đôi khi gặp lỗi này:

Failure 
[INSTALL_FAILED_CONTAINER_ERROR] 

Tôi đã cố gắng google nó nhưng không tìm thấy lỗi có nghĩa là gì hoặc nguyên nhân gây ra. Tôi triển khai thông qua IDE (IntelliJ), tệp sẽ được sao chép vào thiết bị sang / data / local / tmp (Huawei Ideos chưa được phân phối, chạy 2.2), nhưng trình quản lý gói dường như không thích nó. Trước khi cài đặt apk, tôi đã gỡ ứng dụng khỏi thiết bị trước đó. Tôi cũng đảm bảo không có tệp cũ dưới / data / local / tmp trên thiết bị. Bây giờ tôi vẫn nhận được lỗi này. Gói phải được ký bằng khóa gỡ lỗi, vì tôi triển khai qua IDE bằng cách 'chạy' ứng dụng.

$ 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]

Nó có nghĩa là gì và làm thế nào để giải quyết nó?

Chỉnh sửa / Cập nhật:

Tôi có thể tránh lỗi khi không cho phép cài đặt ứng dụng trên sdcard, cài đặt

android:installLocation="internalOnly"

trong bảng kê khai. Nó ổn để phát triển, nhưng để sản xuất, nó không thực sự như tôi muốn - vì ứng dụng của tôi khá lớn với 17mb; do đó tôi thích nó là trên sdcard. Làm thế nào để có thể cài đặt nó vào bộ nhớ ngoài mà không cần root máy (vì đây là cách duy nhất tôi có thể xóa /mnt/secure/asec/smdl2tmp1.asec, dường như cũng là một giải pháp).


Chỉ tò mò thôi: bạn có thể cài đặt nó pm install -f com.company.shopkhông?
Jakub Czaplicki

Có một số biến thể của INSTALL_FAILED_CONTAINER_ERRORvấn đề, đối với một số người trong số họ xem câu trả lời của tôi ở đây: stackoverflow.com/a/30343659/313113
cắn

Đối với tôi, nó đơn giản như trình giả lập "hết dung lượng" (???) và tôi phải xóa dữ liệu trong Trình quản lý AVD.
EpicPandaForce

Câu trả lời:


44

xóa tệp này khỏi thiết bị của bạn

/mnt/secure/asec/smdl2tmp1.asec

Chỉnh sửa / Cập nhật bởi Mathias Conradt (OP):

Nếu bạn không có quyền truy cập root, bạn cần gắn sdcard và xóa nó qua pc:

/.android_secure/smdl2tmp1.asec

3
nhưng thiết bị của tôi chưa được đăng ký và nhìn vào thư mục bảo mật, chỉ có root mới có quyền truy cập. Tôi đã có thể chạy ứng dụng trước đây, chỉ sau một thời gian, không thể chạy nó và nó gây ra lỗi trên.
Mathias Conradt

1
btw - cũng có một thư mục / mnt / asec / mà tôi có thể truy cập mà không cần root, nhưng nó trống rỗng
Mathias Conradt

3
@Jazz Điều này xảy ra với tôi hôm nay. Tôi thực sự muốn biết tại sao / cái này là về cái gì Xóa tập tin thủ công? Tại sao nhật thực không thể làm điều này? Đây có phải là một lỗi điện thoại?
Erik

1
tôi đang có vấn đề này tôi không thể xem các tập tin / thư mục bằng máy Mac của mình. Còn cách nào khác không?
Ngủ

14
Điều này làm việc, nhưng bạn có thể giải thích, tại sao nó làm? Có gì trong tập tin smdl2tmp1.asec bí ẩn?
Alexander Pacha

222

Thay đổi vị trí cài đặt từ

android:installLocation="preferExternal"

vào

android:installLocation="auto"

trong AndroidManifest.xml của dự án của bạn.


12
Đây là những gì đã làm cho tôi. Cảm ơn!
Jim McKeeth

Vâng, điều này đã làm điều đó cho tôi quá. Cảm ơn!
Senthil Kumaran

22
nhưng tôi muốn thích hơn ...? Làm thế nào để khắc phục điều này?
Aiden Fry

2
@Sameer không, điều này cũng xảy ra trên các thiết bị thực - nhưng không nhất quán. Những thiết bị chính là thiết bị HTC Desire S và Nexus.
Aiden Fry

1
@AidenFry Sử dụng giải pháp user2445968 nếu bạn muốn giữ preferExternal.
LG

32

Nếu bạn đang sử dụng trình giả lập, hãy chỉnh sửa nó và thêm bộ nhớ. Tôi đã gặp một vấn đề giống như vấn đề này và tất cả những gì tôi đã làm là chỉnh sửa bộ nhớ AVD của tôi từ 200 MB thành 1000 MB và vấn đề dường như biến mất ... Chúc may mắn.


Vâng, nó đã xảy ra với tôi. Thumbs up :)
NaXir

Ngoài việc tăng bộ nhớ, tôi cũng phải xóa dữ liệu người dùng và chỉ sau đó, kích thước mới được phản ánh và lỗi đã biến mất.
Varun

2
Tôi có thể đoán rằng bạn tham khảo Bộ nhớ trong chứ không phải RAM không?
Jonny

1
Tôi đã tăng bộ nhớ AVD của mình và sau đó xóa sạch dữ liệu !! và bây giờ nó đang hoạt động.
Gặp Vora

7

Điều này có nghĩa là đã có một cài đặt trước đó bị hỏng. Nếu bạn cài đặt bên ngoài, tôi khuyên bạn nên định dạng lại thẻ sd.


6

Tôi đã có lỗi này nhiều lần. Tôi đã tìm thấy cách đơn giản nhất để tránh lỗi hoàn toàn là chỉ cần định dạng thẻ SD. Sử dụng điện thoại hoặc các công cụ giả lập nội bộ. Tôi đã thấy rằng các thẻ SD được tạo tự động hoặc thậm chí tạo sdcard.iso của riêng bạn không thành công và gây ra lỗi này trừ khi được tạo bởi các công cụ Android nội bộ.


1
Chào mừng bạn đến với Stack Overflow! Cảm ơn bài viết của bạn! Vui lòng không sử dụng chữ ký / khẩu hiệu trong bài viết của bạn. Hộp người dùng của bạn được tính là chữ ký của bạn và bạn có thể sử dụng hồ sơ của mình để đăng bất kỳ thông tin nào về bản thân bạn muốn. Câu hỏi thường gặp về chữ ký / khẩu hiệu
Andrew Barber

Đã giải quyết vấn đề này với cùng một giải pháp, vì vấn đề là do lỗi ghi vào SDCard, nó tốt hơn so với công việc của Rene f mà bạn muốn giữ cho android: installLocation = "preferExternal".
LG

Xác nhận. Lỗi trên SD là lý do cho tôi. Tôi đã thử nghiệm loại bỏ "thích bên ngoài" khỏi tệp kê khai - cài đặt ok.
djdance

4

Đối với tôi điều này là do thiếu không gian trên thẻ SD của trình giả lập của tôi. Tôi đã làm việc với một dự án khá lớn và tôi đã nghĩ 40 mb là đủ, nhưng tôi đã thay đổi nó thành 200 mb và vấn đề đã biến mất.


4

Có cùng một lỗi với .apkCyanogenmod 12.1 (Android 5.1.1) trên Note 8 của tôi với phân vùng thứ hai cho Link2SD. Tôi đã có thể cài đặt ứng dụng bằng cách buộc cài đặt qua adb với quyền root:

adb root
adb install -f myapp.apk

3

Tôi nhận được thông báo lỗi này từ Android 5.0.1. Tôi đã thay đổi vị trí cài đặt ưu tiên thành "Thẻ SD rời" thông qua Cài đặt-> Ứng dụng-> Vị trí cài đặt ưu tiên.

Tôi đã thay đổi tùy chọn trở lại thành "Để hệ thống quyết định" và thông báo lỗi biến mất.


1
Đây dường như là giải pháp cho tôi chạy Cyanogenmod 12 (Android 5.0.2). Việc mở đó dường như buộc ứng dụng phải cài đặt trên thẻ SD có thể tháo rời mặc dù bảng kê khai của ứng dụng đã chỉ định rằng nó không thể được cài đặt ở đó.
Sam

1

Đối với tôi, đó là ngôn ngữ thiết bị. Tôi đã viết ngôn ngữ sang tiếng Ả Rập để kiểm tra ứng dụng của mình. Sau đó tôi đã nhận được lỗi này. Hoàn nguyên ngôn ngữ đã làm mánh khóe.


1

android: installLocation = "auto" hoạt động .. !!

Nếu không, Sau khi kiểm tra kích thước không gian lưu trữ ngoài của bạn. [Bộ nhớ khả dụng> kích thước ứng dụng] Nếu không gian lưu trữ không đủ thì lỗi này cũng bị ném.


0

Tôi đã có vấn đề tương tự với trình giả lập. Nó đã biến mất khi tôi thay đổi loại CPU của trình giả lập từ ARM sang Intel.


Điều này không thực sự giúp OP giải quyết vấn đề của họ, vì mối quan tâm của họ là khiến nó hoạt động trên các thiết bị trong thế giới thực, rất nhiều trong số đó vẫn sử dụng CPU ARM.
James Green

0

trong một số tình huống, loại bỏ các libs/android-support-v4.jarlỗi này tạo ra.


0

Đối với tôi, việc gỡ cài đặt một số ứng dụng đã giải quyết được vấn đề. Khi bộ nhớ cục bộ đã có đủ bộ nhớ, việc triển khai APK đã hoàn thành thành công. Nhưng thông thường tôi chỉ cần khởi động lại một tiện ích và cài đặt hoàn tất. Ngoài ra, một số chương trình như Clean Master có thể giúp đỡ. Đơn giản là thường xuyên xóa sạch các quy trình bất thường và đóng các chương trình với Clean Master và nhận đủ bộ nhớ.


0

Khởi động lại thiết bị của tôi đã khắc phục sự cố cho tôi.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.