Cài đặt thủ công APK cập nhật không thành công với “chữ ký không khớp với phiên bản đã cài đặt trước đó”


81

Tôi đã xây dựng một ứng dụng ngớ ngẩn để chia sẻ giữa một vài người bạn. Không cần phải đưa nó lên cửa hàng ứng dụng.

Tôi đã tạo apk(đã ký) đầu tiên , tải nó lên máy chủ web và tất cả đều hoạt động tốt.

Một vấn đề nhỏ phát sinh, tôi đã sửa nó, xây dựng lại, ký với cùng một kho khóa và tải lên lại. Có vẻ như bây giờ tôi không thể cài đặt từ mới apk. Trình gỡ lỗi cho tôi biết:

signatures do not match the previously installed version

Vì vậy, tôi đã gỡ cài đặt phiên bản cũ bằng cách mở ngăn kéo ứng dụng và kéo nó vào nút "gỡ cài đặt". Khi mở "Cài đặt -> Ứng dụng", tôi không thấy nó ở đâu nữa. Tôi không thấy bất kỳ dấu vết nào của ứng dụng trên thiết bị của mình.

Tuy nhiên, tôi vẫn nhận được thông báo lỗi trên.

Có thể một số thông tin vẫn còn sót lại trên thiết bị ở đâu đó? Có cách nào tôi có thể xác minh điều đó không?


Câu trả lời:


166

Có Có thể xảy ra nếu bằng cách nào đó ứng dụng cũ của bạn không bị xóa 100% hoặc dữ liệu của nó không bị xóa.

Thử:

adb uninstall "com.yourapp.yourapp"

Nếu bạn không biết chính xác những gì nên thay thế cho "com.yourapp.yourapp", thì bạn chỉ cần mở Android studio, Chạy ứng dụng của bạn trong khi ứng dụng được kết nối với thiết bị và sau đó nhìn vào cửa sổ Gỡ lỗi.

Nó nói rằng:

 Waiting for device.
 Target device: samsung-sm_t531-xxxxxxxxx
 Uploading file
 local path: C:\Users\myapp\app\build\outputs\apk\myapp.apk
 remote path: /data/local/tmp/com.myapp.myapp
 Installing com.myapp.myapp
 DEVICE SHELL COMMAND: pm install -r "/data/local/tmp/com.myapp.myapp"
 pkg: /data/local/tmp/com.myapp.myapp
 Success

com.myapp.myapp trong trường hợp này là tên của gói bạn phải sử dụng để gỡ cài đặt.


1
Đây thực sự là một vấn đề. Tôi đã triển khai nó một lần trên điện thoại trực tiếp từ Android Studio. Có vẻ như phiên bản này đã không được gỡ bỏ đúng cách. Câu hỏi cuối cùng: có cách nào để làm điều này từ Android Studio không? Hoặc chạy adb trực tiếp từ đó?
exhuma

Có, chỉ cần cố gắng học cách thực thi các lệnh shell từ ứng dụng Android của bạn. Chủ đề này là một điểm khởi đầu tốt: stackoverflow.com/questions/20932102/…
Ehsan

không không không. Không chạy lệnh từ ứng dụng của tôi;) Tôi tự hỏi liệu mình có thể chạy adbtrực tiếp từ "Android Studio" hay không.
exhuma,

2
Điều này rất tốt khi bạn là nhà phát triển .. Nhưng đối với bất kỳ người dùng cuối nào, nếu vấn đề tương tự xảy ra thì bạn cần làm theo: Vấn đề là trong các phiên bản Android mới hơn, việc gỡ cài đặt theo một cách nào đó 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> Vào bên trong ứng dụng cụ thể và sau đó chọn "gỡ cài đặt cho tất cả người dùng" từ mục menu "..." ở phía trên bên phải.
AnkitRox

Xảy ra với tôi vì tôi đã thay đổi tên gói. gỡ cài đặt đã là một mẹo nhỏ
Guy Sopher

23

Tôi đã gặp vấn đề tương tự và adb uninstallgiải pháp không hiệu quả với tôi.

Những gì làm việc là

  • Trên thiết bị của bạn, đi tới Cài đặt-> Ứng dụng
  • Chọn ứng dụng của bạn và trong menu, chọn "Gỡ cài đặt cho tất cả người dùng"

Ngay cả khi tôi đã gỡ cài đặt ứng dụng trước đó, nó vẫn nằm trong danh sách ở đó.


Có, điều này cũng có thể xảy ra nếu bạn có nhiều tài khoản người dùng trên thiết bị của mình và ứng dụng được cài đặt trên nhiều tài khoản. Nếu bạn gỡ cài đặt nó cho một người dùng, nó chỉ được "hủy liên kết" khỏi tài khoản đó. Nhưng nó vẫn còn trên đĩa. Nó sẽ chỉ được gỡ bỏ hoàn toàn khi mỗi người dùng đã gỡ cài đặt nó.
exhuma

1
"Gỡ cài đặt cho tất cả người dùng" hoạt động hoàn hảo. Đã xóa tất cả những người dùng khác)))
Inoy

tôi chỉ thấy "gỡ cài đặt" chứ không phải "gỡ cài đặt cho tất cả người dùng" bằng cách sử dụng trình giả lập pixel 3 29
Julie Pixie

6

Đối với tôi, nếu ứng dụng được dùng để phân phối, adb giải pháp là không cần thiết: bạn không thể yêu cầu bạn bè của ai đó cài đặt sdk android trên máy của họ!

Cách thực hiện ở đây là chỉnh sửa AndroidManifest.xmlvà tăng android:versionCodethuộc tính trong <manifest>thẻ (là phần tử gốc).

Điều này sẽ cập nhật ứng dụng đã cài đặt của bạn


1
Sự cố thực sự do tôi cài đặt ứng dụng trên thiết bị thông qua android studio trong quá trình phát triển. Việc xây dựng lại APK mới và phân phối nó hoàn toàn tốt cho mọi người, trừ tôi. Vì vậy, giải pháp adb là OK.
exhuma

4

Nếu bạn thấy điều này trong khi thực hiện kiểm tra được kết nối, hãy đảm bảo bao gồm .test khi gỡ cài đặt qua adb vì gỡ cài đặt qua ứng dụng -> cài đặt không loại bỏ gói kiểm tra

adb uninstall your.broken.package.test

nếu bạn chỉ gỡ cài đặt qua

adb uninstall your.broken.package

gói thử nghiệm của bạn sẽ vẫn ở đó. Đây chỉ là điều tôi nhận thấy khi sử dụng dòng lệnh gradle, chưa gặp sự cố này trong android studio


3

Gỡ cài đặt ứng dụng cũ khỏi điện thoại hoặc trình mô phỏng của bạn và thử chạy lại.


Đây không phải là một câu trả lời. SO nói rằng anh ấy đã thử điều này và vấn đề vẫn còn đó.
BenRoob

1

Tôi đã gặp lỗi đó khi cố gắng cài đặt bản phát hành trong khi ký chứng chỉ của nó.

đã sửa với: app Gradle task uninstallRelease và sau đó installRelease lại


0

Đối với những người dùng Unity đến câu hỏi này, câu trả lời tốt nhất thực sự là câu trả lời ở trên của @Ehsan

adb uninstall "com.yourapp.yourapp"

Tôi đã cài đặt phiên bản trước đó trên thiết bị Android của mình, sau đó được chọn Development Buildtrong Unity> Build Settings khiến APK sử dụng chữ ký khác. Nếu bạn cài đặt thông qua Android GUI, nó không thực sự xóa mọi thứ nên bạn phải sử dụng ADB.

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.