ไม่สามารถติดตั้ง apk ที่ลงชื่อไปยังอุปกรณ์ด้วยตนเองได้รับข้อผิดพลาด“ ไม่ได้ติดตั้งแอป”


109

ฉันต้องการเผยแพร่แอปของฉันไปยัง GooglePlay แต่ก่อนอื่นฉันต้องการทำการทดสอบครั้งสุดท้ายกับ apk ที่ลงชื่อเพื่อให้แน่ใจว่าคีย์ API ที่ใช้ทั้งหมดทำงานอย่างถูกต้องกับเวอร์ชันที่วางจำหน่าย (GMaps, Facebook และอื่น ๆ )

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

ป้อนคำอธิบายภาพที่นี่

ฉันได้พยายามคัดลอก apk ไปยังอุปกรณ์และติดตั้งด้วยแอปตัวติดตั้ง apk

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

นี่เป็นขั้นตอนของกระบวนงาน:

ฉันเลือกคีย์รีลีสพิมพ์รหัสผ่าน

ขั้นตอนของขั้นตอนมีดังนี้:

ฉันเลือกประเภทบิลด์รีลีสแทนการดีบัก

ฉันเลือกประเภทบิลด์รีลีสแทนการดีบัก

ในกรณีที่ฉันกำหนดคีย์การลงนามในไฟล์ gradle ด้วยแต่ฉันต้องยอมรับว่าฉันไม่รู้ว่ามันจำเป็น

ในกรณีที่ฉันกำหนดคีย์การลงนามในไฟล์ gradle ด้วย แต่ฉันต้องยอมรับว่าฉันไม่รู้ว่ามันจำเป็น

ฉันลองทำเหมือน 7 เจ็ดครั้งแล้วดังนั้นฉันถือว่าปัญหานี้ไม่ใช่แค่รหัสผ่านที่พิมพ์ผิดแต่ฉันสามารถทำให้สิ่งนี้ทำงานได้ด้วยคีย์การลงนาม Android debug มาตรฐาน

กรุณาช่วยถ้าคุณสามารถ


1
สลาม. คำตอบนี้อาจช่วยแก้ปัญหาของคุณได้: http://stackoverflow.com/a/42745459/1676736
Sayed Abolfazl Fatemi

ฉันกำลังประสบปัญหาเดียวกัน สาเหตุที่แท้จริงคืออะไร? คุณค้นพบหรือไม่? @Adam Varhegyi
Rohit Singh

@RohitSingh คำตอบด้านล่างฮ่า ๆ
Adam Varhegyi

ฉันหมายความว่าแอพไม่ได้ถูกถอนการติดตั้งอย่างสมบูรณ์แม้ว่าคุณจะถอนการติดตั้ง? หรือเป็นเพียง Android 5.0 (หรือสูงกว่า)
Rohit Singh

1
@RohitSingh ปัญหาของฉันตรงกับคำตอบที่ต้องการ มีการติดตั้งแอปสำหรับผู้ใช้รายอื่นในโทรศัพท์และฉันไม่เห็นแอปนี้กับผู้ใช้รายอื่น ดังนั้นฉันจึงต้องถอนการติดตั้งสำหรับ "ผู้ใช้ทั้งหมด"
Adam Varhegyi

คำตอบ:


82

คุณอาจใช้อุปกรณ์ Android 5.0 ขึ้นไป

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

ตรวจสอบวิธีแก้ปัญหาของฉันจากลิงค์ด้านล่าง

ลิงค์ 1

หวังว่ามันจะช่วยคุณได้


พวกเขาทำแบบนี้ได้ยังไง ขอบคุณมาก
Adam Varhegyi

2
แม้ว่าลิงก์นี้อาจตอบคำถามได้ แต่ควรรวมส่วนสำคัญของคำตอบไว้ที่นี่และระบุลิงก์เพื่อการอ้างอิง คำตอบแบบลิงก์เท่านั้นอาจไม่ถูกต้องหากหน้าที่เชื่อมโยงเปลี่ยนไป
SOFe

ขอบคุณมากข้อผิดพลาดนี้ใช้เวลาหนึ่งสัปดาห์ในการคิดออก
Diego Vinícius

ดีใจช่วยคุณ !! @ DiegoVinícius
Swaminathan

66

สำหรับUpdated Android Studio 2.3ผู้ใช้ปัจจุบันคำตอบนี้เหมาะสำหรับคุณเนื่องจากแทบจะไม่มีคนใช้ eclipse ในปัจจุบันสำหรับการพัฒนา Android เนื่องจาก Android studio มีความก้าวหน้าอย่างมาก

ทำตามวิธีนี้เพื่อสร้างSigned apkไฟล์ของคุณ

  1. Build> Signed apkสร้าง
  2. Keystore pathสร้าง
  3. ใส่Password, alias, key password.
  4. Build typeเลือกตามนั้น (เช่นปล่อยในการใช้งาน playstore release)
  5. Signature Versionเลือกทั้งสองV1และV2ช่องทำเครื่องหมาย
  6. Finsih.
  7. ไปจากexplorerตำแหน่งที่คุณเลือกสำหรับ apk เพื่อจัดเก็บและคุณจะเห็น.apkชื่อไฟล์ของคุณเมื่อapp-release.apkใช้งาน

14
การเลือกลายเซ็น V1 ทำได้แล้ว
Meanman

คุณบันทึกจำนวนมากของเวลา
curiousMind

ทำงานให้ฉัน ประหยัดเวลา . ขอบคุณ
YeeKhin

6
ตรวจสอบทั้งสองอย่างV1และV2เป็นวิธีแก้ปัญหา!
Alex Jolig

1
การตรวจสอบ V1 ช่วยแก้ปัญหาให้ฉันได้ ก่อนหน้านี้มีการตรวจสอบเฉพาะ V2
BluJ IT

52

การเลือก Signature Version v1 และ v2 ทั้งคู่ช่วยแก้ปัญหาให้ฉันได้ .... ลองดูป้อนคำอธิบายภาพที่นี่


4
นี่คือปัญหาของฉันอย่างแน่นอน คำถามยังคงอยู่ทำไมเราจึงควรทำเครื่องหมาย V1 (ลายเซ็นขวด) ด้วย? และ Google คาดหวังให้เรารู้สิ่งนี้อย่างไร
A. Alqadomi

ไม่ได้บังคับ คุณควรเลือกช่องทำเครื่องหมายทั้งสองช่องหากเป็นไปได้ แต่หากกลไกการลงนาม V2 ใหม่ทำให้คุณมีปัญหาคุณสามารถตรวจสอบทั้งสองอย่างได้หากพบปัญหา
Shubhamhackz

43

สิ่งเดียวกันนี้เกิดขึ้นกับฉันตราบใดที่ฉันสร้าง apk จาก Build> Build APK ฉันสามารถติดตั้งและยกเลิกการติดตั้ง apk ได้หลาย ๆ ครั้งโดยไม่มีปัญหาใด ๆ แต่ถ้าฉันสร้าง Build> Generate Signed APK เมื่อฉันส่ง apk ไปยังโทรศัพท์และพยายามติดตั้งมันอนุญาตให้ฉันได้เพียงคนเดียว โอกาสเดียวกับที่ออกมาข้อความต่อไปนี้:

ป้อนคำอธิบายภาพที่นี่

จนถึงตอนนั้นทุกอย่างจะดีถ้าฉันเลือก "ติดตั้งในวิธีใดก็ได้" แต่จะเกิดอะไรขึ้นถ้าฉันถอนการติดตั้งแอพและต้องการติดตั้งใหม่ (สถานการณ์ที่เป็นไปได้) สิ่งต่อไปนี้จะเกิดขึ้น:

ป้อนคำอธิบายภาพที่นี่

ดังนั้นฉันจึงแก้ปัญหาโดยปิดการใช้งานการป้องกันการเล่นซึ่งฉันทำได้ (ภายใน Google Play)> เมนู> Play Protect> ค้นหาภัยคุกคามด้านความปลอดภัย (ปิดใช้งาน)

ป้อนคำอธิบายภาพที่นี่

ป้อนคำอธิบายภาพที่นี่


วิธีนี้ใช้ได้ผลสำหรับฉัน การเปลี่ยนแปลงอีกครั้งโดย Google +1
พร้อม Android

คุณช่วยชีวิตฉัน!
akcoban

คุณช่วยบอกเราได้ไหมว่าเหตุใดจึงเกิดขึ้น ฉันทำอะไรผิดที่ทำให้เป็นแบบนี้?
sparkhead95

16

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


8
รู้แต่ว่าไม่ได้ติดตั้งมาก่อน
Adam Varhegyi

6
ฉันจะติดตั้ง APK ด้วยเวอร์ชันที่สูงกว่าโดยไม่ลบแอปปัจจุบันได้อย่างไร
user7856586

12

เลือกทั้ง Signature Version v1 และ v2 จะช่วยแก้ปัญหาได้

ป้อนคำอธิบายภาพที่นี่

โครงการ v1

ไฟล์ JAR สามารถลงนามได้โดยใช้เครื่องมือ jarsigner บรรทัดคำสั่งหรือโดยตรงผ่าน java.security API ทุกรายการไฟล์รวมถึงไฟล์ที่ไม่เกี่ยวข้องกับลายเซ็นในไดเร็กทอรี META-INF จะถูกเซ็นชื่อหากไฟล์ JAR ถูกลงนามโดยเครื่องมือ jarsigner สำหรับทุกรายการไฟล์ที่ลงชื่อในไฟล์ JAR ที่ลงนามรายการรายการแต่ละรายการจะถูกสร้างขึ้นตราบเท่าที่ไม่มีอยู่ในไฟล์ Manifest

โครงการ V2

ลายเซ็น v1 ไม่ได้ป้องกันบางส่วนของ APK เช่นข้อมูลเมตา ZIP เครื่องมือตรวจสอบ APK จำเป็นต้องประมวลผลโครงสร้างข้อมูลที่ไม่น่าเชื่อถือ (ยังไม่ได้รับการตรวจสอบ) จำนวนมากจากนั้นจึงทิ้งข้อมูลที่ลายเซ็นไม่ครอบคลุม สิ่งนี้มีพื้นผิวการโจมตีขนาดใหญ่ ยิ่งไปกว่านั้นโปรแกรมตรวจสอบ APK ต้องคลายการบีบอัดรายการที่บีบอัดทั้งหมดซึ่งใช้เวลาและหน่วยความจำมากขึ้น เพื่อแก้ไขปัญหาเหล่านี้ Android 7.0 ได้เปิดตัว APK Signature Scheme v2

ตามค่าเริ่มต้น Android Studio 2.2 และปลั๊กอิน Android สำหรับ Gradle 2.2 จะเซ็นชื่อแอปของคุณโดยใช้ทั้ง APK Signature Scheme v2 และรูปแบบการลงนามแบบเดิมซึ่งใช้การลงนาม JAR

ขอแนะนำให้ใช้ APK Signature Scheme v2 แต่ไม่บังคับ โปรดดูรายละเอียด


10

ใน Android Studio 3.0 ขึ้นไป

ตามที่อธิบายไว้นี้

หมายเหตุ: ปุ่ม Run จะสร้าง APK ที่มี testOnly = "true" ซึ่งหมายความว่าสามารถติดตั้ง APK ผ่าน adb เท่านั้น (ซึ่ง Android Studio ใช้) หากคุณต้องการ APK ที่แก้ไขข้อบกพร่องได้ซึ่งผู้ใช้สามารถติดตั้งได้โดยไม่ต้องใช้ adb ให้เลือกรูปแบบการแก้ไขข้อบกพร่องของคุณแล้วคลิก Build Bundle (s) / APK (s)> Build APK (s)

เพิ่มแท็กแอปพลิเคชันandroid:testOnly="false"ภายในใน AndroidManifest.xml

อ้างอิง: https://commonsware.com/blog/2017/10/31/android-studio-3p0-flag-test-only.html


7

คำตอบด้านบน shubham soni ใช้ได้กับฉันจริงๆแล้วมันเกิดขึ้นกับเวอร์ชัน Android> = 5.0 ในด้านบนคุณสามารถติดตั้งได้เพียงใช้สิ่งนี้ในขณะที่สร้าง apk ของคุณป้อนคำอธิบายภาพที่นี่...


1
ทำไมคำตอบนี้ซ้ำกัน?
sziraqui

@sziraqui: Subhankar soni ไม่ได้กล่าวถึงสาเหตุที่ "ไม่สามารถติดตั้ง apk ที่ลงนามไปยังอุปกรณ์ด้วยตนเองได้รับข้อผิดพลาด" ไม่ได้ติดตั้งแอป "ฉันประสบปัญหาเดียวกันกับที่เกี่ยวข้องกับเวอร์ชันของระบบปฏิบัติการตามที่กล่าวไว้ข้างต้นดังนั้นเพื่อความเข้าใจที่ดีขึ้นฉันจึงพูดถึงสิ่งนั้น มีอะไรผิดพลาดในคำตอบของฉันสำหรับ Android เวอร์ชัน <= 5.0 คุณจะสามารถติดตั้ง apk เดียวกันได้โดยไม่ต้องทำเครื่องหมายในช่องทำเครื่องหมายทั้งสองเวอร์ชัน
Amit raj

คำตอบของคุณเป็นเพียงการเพิ่มอีกหนึ่งจุดในคำตอบเดิมดังนั้นจึงควรเป็นความคิดเห็น หากคุณโพสต์สิ่งนี้เป็นคำตอบคุณควรเพิ่มการอ้างอิงบางประเภทที่สนับสนุนการอ้างสิทธิ์ Android 5.0 ของคุณ จะเกิดอะไรขึ้นถ้าปัญหาของคุณเกี่ยวข้องกับ Android ide ไม่ใช่เวอร์ชัน Android
sziraqui

ขอบคุณรูปภาพในคำตอบทำให้ฉันมีความคิดที่จะลองเปิดใช้งานลายเซ็น V1 และ V2 ก่อนหน้านี้ฉันไปกับ V1 เท่านั้น
jasxir

6

ฉันแก้ไขปัญหานี้ได้ที่นี่

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

หากต้องการดูไปประยุกต์ใช้ในการโทรศัพท์การตั้งค่า -> แอพพลิเคชัน คุณจะเห็นแอปพลิเคชันที่นั่น แต่ภายในปุ่มถอนการติดตั้งอาจถูกปิดใช้งาน คลิกที่ปุ่มเมนูล้นที่จะเห็นถอนการติดตั้งสำหรับผู้ใช้ทั้งหมด

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

adb uninstall package name

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


4

เป็นคำถามที่ค่อนข้างเก่า แต่วิธีแก้ปัญหาของฉันคือเปลี่ยนversionCode (เพิ่ม) ในbuild.gradle



4

minifyEnabled false

เป็นสิ่งเดียวที่ได้ผลสำหรับฉันหลังจาก 3 วันของการวิจัยในฟอรัมทั้งหมด!


1
นี้ดูเหมือนจะเป็นเพียงแค่การทำซ้ำของคำตอบที่มีอยู่นี้
ปาง

พร้อมคำอธิบายเพิ่มเติม
robinCTS

กล่าวอีกนัยหนึ่งสิ่งนี้ควรถูกโพสต์เป็นความคิดเห็นในคำตอบนั้นไม่ใช่คำตอบในตัวมันเอง
robinCTS

3

นั่นอาจเป็นเพราะคุณเรียกใช้ไฟล์ APK จากที่จัดเก็บการ์ด SD ภายนอก เพียงแค่คัดลอกไฟล์ APK ลงในที่เก็บข้อมูลภายในปัญหาจะได้รับการแก้ไข


1

สิ่งนี้เกิดขึ้นได้เนื่องจากคุณเลือกรุ่นลายเซ็น ในโทรศัพท์บางรุ่นข้อผิดพลาดในการติดตั้งจะเกิดขึ้นหากเลือกรุ่นลายเซ็นเป็น V2 ดังนั้นหากเป็นเช่นนั้นให้ลองเลือก V1 มันก็จะได้ผลอย่างแน่นอน


1

ฉันประสบปัญหาเดียวกันในวันนี้ฉันจำได้ว่าฉันได้ลงนาม apk ของฉันด้วยการลงชื่อ Google Play "ใหม่":


ป้อนคำอธิบายภาพที่นี่


ตรวจสอบให้แน่ใจว่าคุณได้ลงนามแอปพลิเคชันของคุณด้วยการลงนาม Google Play

ถ้าคุณทำ:

  • ติดตั้งการอัปเดตโดยอัปโหลด apk ของคุณไปยัง Google Console (เช่นเดียวกับที่คุณทำเมื่ออัปเดตแอปพลิเคชันของคุณ):

ป้อนคำอธิบายภาพที่นี่


  • หลังจากอัปโหลดสำเร็จแล้วให้เปิดArtifact libraryในเมนู
  • คุณจะเห็น apk ที่คุณเพิ่งอัปโหลด
  • Download derived APKกดปุ่มดาวน์โหลดและเลือก

ตอนนี้คุณจะสามารถติดตั้ง apk ได้


0

หาก Android Studio เวอร์ชันของคุณมากกว่า 3.0

ดูเหมือนว่าเราไม่สามารถใช้ apk ได้โดยตรงหลังจากเรียกใช้บนอุปกรณ์จากโฟลเดอร์ build -> output-> apk

หลังจากอัปเกรดเป็น android studio 3.0 คุณต้องไปที่ Build -> Build Apk (s) จากนั้นคัดลอก apk จาก build -> output -> apk -> debug

ป้อนคำอธิบายภาพที่นี่


ชื่อของคำถามนี้ "Cannot install signed apk"- คุณกำลังอ้างถึงการดีบัก apk
KRK

0

File> Project Structure> Build Variants> Select release> ตรวจสอบให้แน่ใจว่า 'Signing Config' ไม่ว่างเปล่า> หากเลือกจากหน้าต่างดร็อป $signingConfigs.release

ฉันทำสิ่งนี้กับ Android Studio 3.1.4 และทำให้ฉันสามารถสร้าง apk รุ่นหลังจากทำตามขั้นตอนทั้งหมดข้างต้นในการสร้าง apk รุ่นและรหัสปล่อยและเพิ่มข้อมูลลงในแอป gradle ไชโย!


$signingConfigs.releaseไม่สามารถใช้ได้เพียง$signingConfigs.debugใช้ได้
KRK

จากนั้นไปที่สร้าง> สร้าง APK> เลือก APK และทำตามคำแนะนำ
Treewallie

0

ฉันประสบปัญหาเดียวกันในแอปพลิเคชัน Android ของฉัน ฉันเพิ่งอัปเดตไลบรารีบางส่วนแล้วสร้าง Sign APK ตอนนี้มันทำงาน


0

คุณไม่จำเป็นต้องถอนการติดตั้งเวอร์ชัน Google Play หากเปิดใช้งานการลงนามแอปโดย Google Playสำหรับแอปของคุณให้ทำตามขั้นตอน:
1. สร้างแอปเวอร์ชันที่มีลายเซ็นด้วยรหัสรุ่นของคุณ
2. ไปที่ Google Play Developer Console
3. สร้างเวอร์ชันปิด (เวอร์ชันอัลฟาหรือเบต้า) ด้วยแอปเวอร์ชัน
4 ที่ลงชื่อใหม่ตอนนี้คุณสามารถดาวน์โหลด apk ที่ลงนามโดย App Signing โดย Google Playแล้วเลือกAPK ที่ได้รับป้อนคำอธิบายภาพที่นี่

  1. ติดตั้งAPK ที่ดาวน์โหลดมา

เหตุผลคือการลงนามแอปโดย Google Playจะส่งแอปที่มีคีย์ต่างกันหากคุณติดตั้งแอปจาก Play Store และต้องการทดสอบแอปเวอร์ชันใหม่ (สร้างจาก Android Studio) ในโทรศัพท์ "ไม่ได้ติดตั้งแอป" เกิดขึ้นตั้งแต่เวอร์ชันเก่าและเวอร์ชันใหม่ได้รับการลงนามโดยคีย์ที่แตกต่างกันสองคีย์: อันหนึ่งมีการลงนามแอปโดย Google Playและอีกอันหนึ่งที่มีคีย์ของคุณ



0

โปรดถอนการติดตั้งแอปดีบักในอุปกรณ์หรือเพิ่มรหัสเวอร์ชันเพื่อแก้ไขปัญหานี้


0

ในกรณีของฉันฉันพยายามทดสอบการติดตั้ง APK ที่ลงชื่อและเวอร์ชันที่ติดตั้งปัจจุบันบนอุปกรณ์ของฉันไม่ได้ลงนาม (สร้างเวอร์ชันแก้ไขข้อบกพร่องโดยตรงจากสตูดิโอ Android)


0

เห็นได้ชัด แต่ก็ยังยากที่จะเข้าใจสำหรับฉัน

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

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