2015-05-30 23 views
11

Tôi đã thực hiện tất cả các bước thích hợp để tạo APK phát hành. (Demonstration of steps required)Mã lỗi -7 khi cố gắng cài đặt APK phát hành

Thiết bị của tôi (Nexus 7 2012) được đặt để cho phép cài đặt từ các nguồn không xác định.

Tôi đã gửi qua email APK (app-release.apk) cho chính tôi và đã cố gắng mở nó từ Gmail, vì điều này sẽ hoạt động.

EDIT: Tôi xin lỗi, tôi cũng nên bao gồm rằng tôi đã gỡ cài đặt ứng dụng khỏi cài đặt> ứng dụng> (ứng dụng được đề cập)> nút "gỡ cài đặt".

Tuy nhiên, các ứng dụng ngay lập tức không tải, chỉ với những thông tin logcat sau:

05-30 14:44:41.689  466-497/? W/PackageManager﹕ Package edu.osu.expandablelistviewtest1 signatures do not match the previously installed version; ignoring! 
05-30 14:44:41.914  466-497/? I/art﹕ Explicit concurrent mark sweep GC freed 74971(3MB) AllocSpace objects, 22(1348KB) LOS objects, 33% free, 28MB/43MB, paused 9.752ms total 220.463ms 
05-30 14:44:41.927 20704-20704/? D/InstallAppProgress﹕ Installation error code: -7 
05-30 14:44:43.094 20704-20704/? I/InstallAppProgress﹕ Finished installing edu.osu.expandablelistviewtest1 

Tôi đã thử mọi chuỗi tìm kiếm tôi có thể nghĩ ra và không thể tìm thấy bất kỳ thông tin về lỗi -7 của ý nghĩa . Nhìn vào code on GitHub, chúng ta thấy đoạn mã sau:

public void handleMessage(Message msg) { 
    ... 
    if (msg.arg1 == PackageManager.INSTALL_SUCCEEDED) { 
    ... 
    } else if (msg.arg1 == PackageManager.INSTALL_FAILED_INSUFFICIENT_STORAGE){ 
    ... 
    } else { 
    // Generic error handling for all other error codes. 
    centerTextDrawable.setLevel(1); 
    centerExplanationLabel = getExplanationFromErrorCode(msg.arg1); 
    centerTextLabel = R.string.install_failed; 
    mLaunchButton.setVisibility(View.INVISIBLE); 
    } 
    ... 
    private int getExplanationFromErrorCode(int errCode) { 
    Log.d(TAG, "Installation error code: " + errCode); 
    switch (errCode) { 
    case PackageManager.INSTALL_FAILED_INVALID_APK: 
     return R.string.install_failed_invalid_apk; 
    case PackageManager.INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES: 
     return R.string.install_failed_inconsistent_certificates; 
    case PackageManager.INSTALL_FAILED_OLDER_SDK: 
     return R.string.install_failed_older_sdk; 
    case PackageManager.INSTALL_FAILED_CPU_ABI_INCOMPATIBLE: 
     return R.string.install_failed_cpu_abi_incompatible; 
    default: 
     return -1; 
    } 
    } 
    ... 
} 

... vì vậy chúng tôi không có cách nào để biết những gì các "-7" nghĩa là gì. (Ngoài ra, không có trường hợp chuyển đổi nào.)

Tôi đang mở cho bất kỳ ý tưởng/đề xuất nào. Cảm ơn bạn.

+0

Bạn đã cài đặt ứng dụng trước đó trên thiết bị của mình chưa? –

+0

Tôi đã gỡ cài đặt ứng dụng này khỏi cài đặt> ứng dụng> (ứng dụng được đề cập)> nút "gỡ cài đặt" – somecbusnerd

+0

Ngay cả sau khi gỡ cài đặt ứng dụng của bạn, bây giờ khi bạn cố gắng cài đặt, nó cũng cho cùng một lỗi? –

Trả lời

27

Vâng, tôi cảm thấy ngượng ngùng. Sau khi tất cả, vấn đề là trong phiên bản mới hơn của Android, gỡ cài đặt theo cách tôi đã đề cập ở trên chỉ gỡ cài đặt cho người dùng cụ thể đó.

Câu trả lời là đi tới cài đặt> ứng dụng> (ứng dụng được đề cập) và sau đó chọn "gỡ cài đặt cho tất cả người dùng" từ menu "..." ở phía trên bên phải.

Vì vậy, cho người tìm kiếm Google trong tương lai:

InstallAppProgress: Cài đặt mã lỗi: -7 rõ ràng có nghĩa là bạn phải hoàn toàn gỡ bỏ cài đặt một phiên bản trước của ứng dụng của bạn, chẳng hạn như các phiên bản trước đó debug vv

+1

Ngoài câu trả lời đúng này: Tôi đã ở trong bế tắc, rằng APK đã ký không thể được cài đặt (mã lỗi -7), nhưng phiên bản gỡ lỗi đã được gỡ cài đặt. Vì vậy, đầu tiên các phiên bản gỡ lỗi đã được cài đặt lại, điều này nên từ. Sau đó, xóa bằng "gỡ cài đặt cho tất cả người dùng". Sau đó, APK phát hành đã ký có thể được cài đặt. –

+0

Tôi không thể tìm ra cách tôi bỏ cài đặt một nửa ứng dụng của mình chỉ cho người dùng của tôi (người được cho là người duy nhất). Câu trả lời này đã cứu tôi rất nhiều thời gian. Cảm ơn bạn. –

+2

Cảm ơn người đàn ông, tôi đã tìm thấy giải pháp .. Một giải pháp khác là chạy 'adb uninstall com.ephesoft.snapdoc' .. – AnkitRox

3

Các lỗi hằng số mã cho PackageInstaller được xác định trong lớp PackageManager với các tiền tố như INSTALL_FAILED_.

(liên kết tương ứng với bản sửa đổi mã từ ngày 25 tháng 6 năm 2015, vì vậy khi bạn đọc mã này, mã có thể thay đổi.)

Các vấn đề liên quan