วิธีจัดการกับ INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES โดยไม่ถอนการติดตั้ง


277

ฉันพยายามติดตั้ง apk ใหม่

$adb install -r new.apk

และมันแสดงให้เห็นข้อผิดพลาด:

Failure [INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES]

ทางออกหนึ่งคือถอนการติดตั้งและติดตั้ง new.apk ซึ่งใช้งานได้ดี

แต่ฉันสงสัยว่าฉันสามารถสร้าง apk อีกครั้งและติดตั้งใหม่โดยไม่ต้องถอนการติดตั้ง เช่น. เปลี่ยนการกำหนดค่าบางอย่างใน AndroidManifest.xml หรือไม่ลงชื่อใน APK ฯลฯ

มันจะดีมากถ้าคุณสามารถบอกความหมายทั้งหมดของ "INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES" ได้


ลองแก้ปัญหาด้วยการเรียกใช้ apk ของคุณบนอุปกรณ์จริงมันใช้ได้กับฉันเสมอ
Kyle

มันไม่ทำงานสำหรับฉัน ^ @ Mr.Derpin Thoughton
Crime_Master_GoGo

สิ่งนี้สามารถเกิดขึ้นได้เมื่อลงชื่อแอพสองครั้งและการอัปเกรดนั้นลงชื่อในลำดับย้อนกลับ ดูstackoverflow.com/a/13618894/5276890สำหรับข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้
Roy Falk

คำตอบ:


319

หมายความว่าสำเนาใบสมัครใหม่ของคุณ (บนเครื่องพัฒนาของคุณ) ได้รับการลงนามด้วยคีย์การเซ็นชื่อที่แตกต่างจากสำเนาใบสมัครเก่าของคุณ (ติดตั้งบนอุปกรณ์ / ตัวจำลอง) ตัวอย่างเช่นหากนี่คืออุปกรณ์คุณอาจวางสำเนาเก่าจากเครื่องพัฒนาอื่น (เช่นเครื่องของนักพัฒนาอื่น ๆ ) หรือรหัสเก่าได้รับการลงนามด้วยรหัสการผลิตของคุณและรหัสใหม่จะถูกลงชื่อด้วยรหัสการดีบักของคุณ


6
@atourney: คุณจะต้องคัดลอกที่เก็บคีย์ของเครื่องก่อนหน้า (เช่นdebug.keystore) ไปยังเครื่องใหม่ของคุณ
CommonsWare

12
โปรดทราบว่าไม่ได้debug.keystoreอยู่ในไดเรกทอรีโครงการของคุณ มันเป็นเรื่องปกติใน~/.android/ไดเรกทอรีของคุณ (ดูdeveloper.android.com/guide/publishing/… )
ohhorob

3
หนึ่งจะให้ชื่อที่แตกต่างแพคเกจ debug? (เช่น {PRODUCT_NAME} Dev)
sandstrom

6
@ChristianBongiorno: ประสานที่เก็บคีย์ของคุณ (เช่นdebug.keystore) เลือกหนึ่งตัวเพื่อเป็นที่เก็บคีย์หลักของคุณคัดลอกไปยังเครื่องนักพัฒนาซอฟต์แวร์อื่นทั้งหมดแทนที่ที่เก็บคีย์ที่มีอยู่
คอมมอนส์

2
อย่าลืมสร้างโครงการของคุณใหม่หลังจากคัดลอกไฟล์ไปด้วย ฉันย้ายไฟล์และส่งแอปพลิเคชันไปยังอุปกรณ์อีกครั้ง (แต่มันยังคงใช้งานแบบเก่าdebug.keystore) เมื่อฉันสร้างโครงการขึ้นใหม่ (โดยใช้ Build-> สร้างใหม่ใน Android Studio) คีย์ต่าง ๆ ก็จะถูกซิงค์
Benjamin Kaiser

48

ฉันวิ่งเข้าไปในขณะนี้ในการทดสอบ Xoom ใหม่ ก่อนหน้านี้ฉันเคยติดตั้งแอพของฉันจาก Marketplace ต่อมาในขณะที่พยายามทดสอบแอพเวอร์ชันใหม่ฉันพบข้อผิดพลาดนี้

ฉันแก้ไขโดยการลบแอพที่ติดตั้งผ่าน Marketplace (เพียงกดค้างไว้แล้วลากไปที่ถังขยะ) หลังจากนั้นฉันก็สามารถปรับใช้เวอร์ชันการพัฒนาของฉันได้โดยไม่มีปัญหาใด ๆ


12
ใช่ถอนการติดตั้งจะแก้ปัญหาการอนุญาตนี้ ฉันสงสัยว่าฉันสามารถแก้ปัญหานี้ได้หรือไม่โดยไม่ถอนการติดตั้ง
Johnny

มีโทรศัพท์ใหม่และลืมเรื่องนี้ไป ฉันจะทำเครื่องหมายวิธีนี้ถึงสองครั้ง :)
แอนโธนีฮอร์น

22

สิ่งนี้เกิดขึ้นกับฉันเมื่อนักพัฒนาคนอื่นในทีมสร้างแอพของเราบนอุปกรณ์ฮาร์ดแวร์ที่ฉันพยายามปรับใช้ การถอนการติดตั้งแอพจากฮาร์ดแวร์ช่วยแก้ไขปัญหาของฉัน


16
ที่ดี! adb uninstall <package name>ทำงานหลังคำสั่ง ขอบคุณ
Paul

ฉันมีกรณีที่ไม่ซ้ำกันมากขึ้น แต่คำตอบนี้นำไปสู่การแก้ปัญหา ฉันมีแอปที่ติดตั้งผ่าน Cordova CLI ในพื้นที่และติดตั้งจากการสร้าง PG ฉันต้องถอนการติดตั้งแอพทั้งสองเพื่อให้ข้อผิดพลาดหายไป
DemitryT

@ พอลของคุณยอดเยี่ยม - King Paul I ในขณะที่ฉันไม่ใช่ผู้ถามดั้งเดิมคำสั่งของคุณใช้ได้กับฉัน ฉันขอแนะนำให้คุณโพสต์สิ่งนั้นเป็นคำตอบได้หรือไม่?
barlop

1
@barlop: ฉันโพสต์คำตอบด้วยคำสั่งเพื่อให้ผู้อื่นเห็นได้ง่ายขึ้นซึ่งอาจพบปัญหานี้ด้วย ขอบคุณ
พอล

3
ฉันไม่เข้าใจว่าทำไมคำตอบนี้มี upvotes เขาพูดอย่างชัดเจนว่า "โดยไม่ถอนการติดตั้ง"! -
คริสเตียน

20

นี่คือคำสั่งให้ถอนการติดตั้งแอพจากอุปกรณ์โดยใช้ adb:

adb uninstall <package name>

8
คำถามคือเกี่ยวกับวิธีการแก้ไขปัญหาโดยไม่ต้องถอนการติดตั้ง
Janaka Bandara

2
ฉันไม่เข้าใจว่าทำไมคำตอบนี้มี upvotes เขาพูดอย่างชัดเจนว่า "โดยไม่ถอนการติดตั้ง"!
Christian

ไม่มีการตั้งค่าสถานะ PM สำหรับการแทนที่แพ็คเกจด้วยใบรับรองที่ไม่สอดคล้องใช่ไหม ความตั้งใจในการรักษาความปลอดภัย?
JohnyTex

9

ฉันได้รับข้อผิดพลาดนี้แม้หลังจากถอนการติดตั้ง APK ดั้งเดิมซึ่งเป็นเรื่องน่าประหลาดใจ ในที่สุดฉันก็รู้ว่าฉันได้ตั้งค่าผู้ใช้หลายคนใน Nexus 7 สำหรับการทดสอบและแอปนั้นยังคงติดตั้งสำหรับผู้ใช้รายอื่น เมื่อฉันถอนการติดตั้งสำหรับผู้ใช้ทั้งหมดข้อผิดพลาดก็หายไป


5

ฉันเปลี่ยนชื่อแพ็กเกจขณะที่เข้ารหัสการอัพเดตเพื่อให้ฉันสามารถดีบักบนอุปกรณ์ของฉันผ่าน Eclipse โดยไม่ลบเวอร์ชันเก่าที่ติดตั้งไว้ โดยไม่ได้คืนชื่อแพคเกจที่ฉันใช้เมื่อพยายามติดตั้งใหม่ฉันได้รับข้อผิดพลาดเดียวกันนี้ การใช้ชื่อแพ็กเกจเดิมจะทำให้การติดตั้งสำเร็จ


3

เพียงลบบิลด์เก่าออกจากอุปกรณ์และติดตั้งใหม่ เนื่องจาก device.keystore มีอยู่แล้วในอุปกรณ์ดังนั้นให้ถอนการติดตั้ง build และติดตั้ง APK ใหม่อีกครั้งทั้งหมด ..

ขอบคุณ


ใช่มันเป็นคำตอบที่ดีกว่าและชัดเจนว่าคำตอบจาก CommonsWare ขอบคุณ
tres.14159

3

ฉันต้องเผชิญกับกรณีการใช้งานอื่นที่ฉันได้รับข้อผิดพลาดที่คล้ายกัน เมื่อตอนแรกที่ฉันพบข้อผิดพลาดฉันตื่นตระหนกและลบออก/data/data/{package.name} หลังจากนั้นฉันลองและปัญหาของฉันยังคงปรากฏอยู่ จากนั้นฉันลองถอนการติดตั้งมันล้มเหลว

จากนั้นฉันก็ลบไฟล์ apk ที่อยู่ใน/system/app(ต้องการการเข้าถึงรูท) และลองถอนการติดตั้งและมันก็ประสบความสำเร็จ

หลังจากนั้นฉันลองติดตั้ง apk อีกครั้งมันก็ใช้งานได้


1

สำหรับสิ่งที่คุ้มค่าฉันพบปัญหานี้หลังจากเพิ่มปลั๊กอินใหม่ในโครงการ Cordova ของฉัน ฉันมี Cordova สร้างและติดตั้งโดยตรงบนอุปกรณ์ผ่าน USB

ฉันแก้ไขได้โดยถอนการติดตั้งแอพจากอุปกรณ์และในการปรับใช้ครั้งถัดไปไม่มีปัญหา


1

หากคุณพบการปรับใช้ที่ล้มเหลวของอุปกรณ์ Andorid หรือตัวจำลองที่มีข้อผิดพลาด "ล้มเหลว [INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES]" ในหน้าต่างผลลัพธ์ให้ลบแอพที่มีอยู่บนอุปกรณ์หรือตัวจำลองและปรับใช้ใหม่ การตรวจแก้จุดบกพร่องจะใช้ใบรับรองการตรวจแก้จุดบกพร่องในขณะที่การสร้างรุ่นจะใช้ใบรับรองที่กำหนดค่าของคุณ ข้อผิดพลาดนี้เป็นเพียงการแจ้งให้คุณทราบว่าใบรับรองของแอปที่ติดตั้งบนอุปกรณ์นั้นแตกต่างจากที่คุณพยายามติดตั้ง ในสถานการณ์ที่ไม่ได้รับการพัฒนา (app store) นี่อาจเป็นตัวบ่งชี้แอพที่เสียหายหรือมีการเปลี่ยนแปลงไม่ปลอดภัยที่จะติดตั้งบนอุปกรณ์


0

ไม่มีอะไรจากข้างต้นทำงานให้ฉัน ปัญหาสำหรับฉันคือฉันมีแหล่งที่ผิดใน Java Build Path สำหรับ android-support-v7-appcompat เมื่อคุณไปที่ Project> Build Path> Configure Build Path> ภายใต้แท็บแหล่งที่มาตรวจสอบให้แน่ใจว่าคุณมี android-support-v7-appcompat / gen, android-support-v7-appcompat / libs และ android-support-v7-appcompat / src และไม่มีอะไรอื่น คลิกตกลงและควรใช้งานได้


0

วันนี้ฉันมีข้อผิดพลาดเหมือนกัน แต่ปัญหาไม่เหมือนกันทุกประการ ฉันใช้ ADB มีการติดตั้ง Android ในVirtualBox ฉันพยายามที่จะติดตั้งรุ่นต่างๆของ app ของฉัน (ลงนาม / ไม่ได้ลงนามแก้ปัญหา / โหมดปล่อย) และมีสองข้อผิดพลาดอีกทางเลือกหนึ่ง: และINSTALL_FAILED_UID_CHANGEDINSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES

ตอนนี้เมื่อดูที่/data/data/{package.name}ฉันพบไฟล์จำนวนมากที่ยังคงอยู่หลังจากถอนการติดตั้งแอพ ฉันพยายามrm -rfไม่สำเร็จ: ฉันพบข้อผิดพลาด I / O

วิธีแก้ปัญหานี้คือ:

  • ปิด VM
  • เมานต์อิมเมจ VDI ด้วยvdfuse(อ่าน / เขียน)
  • ซ่อมPartition1ไฟล์ภาพด้วยe2fsck
  • ยกเลิกการติดตั้งและรีสตาร์ท VM

0

ฉันมีปัญหาเดียวกันจนกระทั่งฉันรู้ว่าฉันได้มีตัวจำลองการทำงานอยู่และ adb พยายามติดตั้งลงบนสิ่งนั้น


0

เนื่องจากการตรวจสอบจะขึ้นอยู่กับชื่อของแพคเกจคุณสามารถเปลี่ยนชื่อแพคเกจภายใน config.xml หรือไฟล์รายการสำหรับชื่ออื่นที่คุณต้องการ

เมื่อเผยแพร่แอพของคุณอย่าลืมเปลี่ยนชื่อ!


0

ฉันมีปัญหานี้พยายามที่จะดำเนินงาน gradle connectedDebugAndoidTest(หรือconnectedAndroidTest) บนGenymotion การรันมันบนอีมูเลเตอร์ปกติช่วยแก้ปัญหาได้


ฉันยังได้รับในสถานการณ์เดียวกัน (ทดสอบกับ Genymotion) ปรากฎว่ามันเป็นความขัดแย้งกับลายเซ็นสำหรับแพคเกจการทดสอบ การลบชุดทดสอบแก้ไขปัญหา
D-C0d3r

0

ฉันคิดว่าแอปของคุณติดตั้งโดยบัญชีอื่น (คุณสมบัติโหมดหลายบัญชี) คุณสามารถถอนการติดตั้งแอพในการตั้งค่า> แอพ> "ชื่อแอพ"> ถอนการติดตั้ง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.