ไฟล์ APK ไม่มีอยู่ในดิสก์


224

เมื่อฉันพยายามดีบักแอปพลิเคชันบน Android Studio จะให้บันทึกผลลัพธ์นี้:

ไฟล์ APK /Users/MyApplicationName/app/build/outputs/apk/app-debug.apk ไม่มีอยู่ในดิสก์

ฉันรีสตาร์ท Android Studio แต่ไม่สามารถแก้ปัญหานี้ได้ ฉันจะแก้มันได้อย่างไร ขอบคุณ


9
ฉันจะแก้มันได้อย่างไร รวบรวม apk
Tim

1
@TimCastelijns ฉันสงสัยจริงๆว่า Android Studio นั้นไม่ฉลาดพอที่จะรวมงานสร้าง debug apk ลงในงานแอปพลิเคชัน deb Gradle ควรทำเพื่อสิ่งนี้
Trilarion

1
@Trilarion ตามค่าเริ่มต้น AS เรียกใช้งาน assembleDebug ของ gradle ซึ่งรวบรวม apk debug มีบางอย่างผิดปกติที่นี่ซึ่งต้องมีการรวบรวมด้วยตนเอง
Tim

2
การเพิ่ม Gradle Make-Aware แก้ไขปัญหานี้ให้ฉัน stackoverflow.com/a/25871525/1712417
Iammesol

2
ลองเพิ่ม "Gradle Make-Aware" stackoverflow.com/questions/18256177/…
แอนดี้เฉิง

คำตอบ:


463

คลิกตัวเลือกนี้เพื่อแก้ไขข้อผิดพลาด:

รัน: ดู> เครื่องมือ Windows> Gradle> [โครงการ]> ภารกิจ> บิลด์> บิลด์


6
อักขระพิเศษในชื่อไดเรกทอรีโครงการของคุณจะโยนข้อผิดพลาดนี้
NP

50
มันไม่ได้ผลสำหรับฉันเลย ฉันจะแนะนำคำตอบที่อธิบายว่าทำไมพวกเขาควรทำงานมากกว่าแค่บอกผู้อ่านว่าต้องทำอย่างไรเพื่อที่พวกเขาจะสามารถเข้าใจ / หลีกเลี่ยง / แก้ไขข้อผิดพลาดเหล่านั้นได้ในภายหลัง
person27

3
คุณจะอธิบายสิ่งนี้ทำสิ่งที่ถูกต้องและทำไมปัญหานี้เกิดขึ้น?
Hamidreza Sahraei

btw "อักขระพิเศษ" รวมถึงตัวเลขด้วย มันไร้สาระเสียเวลามากมายในเรื่องนี้ facepalm :)
alexr101

5
ปุ่มนั้นไม่มีอยู่ใน Android Studio เวอร์ชันล่าสุด แต่ฉันเชื่อว่าเป็นตัวเลือก "ซิงค์โครงการด้วยไฟล์ Gradle" ซึ่งใช้งานได้สำหรับฉัน
nasch

208

หากคุณประสบปัญหานี้หลังจากอัปเดตเป็น Android Studio V 3.1 ให้ลองด้านล่าง

ฉันประสบปัญหาเดียวกันนี้เมื่อฉันอัปเดตเป็น Android Studio 3.1 โซลูชันอื่น ๆ ทั้งหมดที่ฉันพบที่นี่เป็นคู่มือค่อนข้างเพราะคุณต้องทำความสะอาดและสร้างใหม่ทุกครั้งซึ่งไม่ดี แต่ต้องขอบคุณคำตอบของIman Marashiที่นี่ฉันสามารถแก้ไขได้

ไปที่Run -> แก้ไขการกำหนดค่า ...

ตรวจสอบให้แน่ใจว่าคุณมี "Make Gradle-aware Make" ในส่วน Before Launch:

เรียกใช้ / แก้ไขการกำหนดค่า

เพื่อเพิ่มคลิก+เข้าสู่ระบบและเลือกยี่ห้อ Gradle ทราบและป๊อปอัพจะปรากฏเพียงแค่ปล่อยฟิลด์ข้อความว่างเปล่าและคลิกOKและOK


13
นี่คือการแก้ไขสำหรับการปรับปรุง 3.1 ล่าสุด สำหรับฉันอาการแรกของปัญหานี้คือ APK ไม่ "ตอบสนอง" ต่อการเปลี่ยนแปลงในรหัส เป็นที่ชัดเจนแล้วสำหรับฉันว่า APK ใหม่ไม่ได้สร้างอย่างถูกต้องเลย
David Gay

คำตอบนี้สามารถแก้ปัญหาให้ฉันได้ ฉันอัปเดต 3.1 และรับข้อผิดพลาดนี้
ZarNi Myo Sett ชนะ

คุณฝ่าบาทเป็นผู้ช่วยชีวิต
Joel Libby

ว้าว! คุณสมควรได้รับ 1,000 โหวตสำหรับสิ่งนี้! Android Studio สมควรได้รับ 1,000 โหวต!
1QuickQuestion

ขอบคุณนี่เป็นคำตอบที่ถูกต้องและควรเป็นคำตอบที่ถูกต้อง
Petar Marijanovic

68

ในกรณีของฉันการดำเนินการ "Sync Project with Gradle Files" ช่วย ไม่ต้องรีสตาร์ท Andoid Studio หรือล้างแคชไม่ได้ทำอะไรเลย


1
ขอบคุณ มันช่วยฉันด้วย การรีสตาร์ท Andoid Studio หรือการล้างแคชไม่ได้ช่วยอะไร
ivan.panasiuk

เคล็ดลับสำหรับฉันหลังจากเปลี่ยนสคริปต์การตั้งชื่อซึ่งอยู่ในไฟล์แยกต่างหากจากปกติของฉันbuild.gradleดังนั้น Android Studio ไม่รับการเปลี่ยนแปลงโดยอัตโนมัติและแจ้งให้ฉันทำการซิงค์
แมกนัส W

นี่คือคำตอบที่แท้จริง
azizbekian

3
File -> Sync Project with Gradle Files stackoverflow.com/a/19932896/2527204
Marlon

มีปัญหานี้พยายามเรียกใช้การทดสอบหน่วย มีการขอให้อุปกรณ์ทำการทดสอบหน่วย
Sergio

34

หากคุณต้องการทราบข้อสรุปโปรดไปที่หัวข้อสุดท้าย ขอบคุณ

โดยปกติเมื่อการสร้างโครงการล้มเหลวเทคนิคบางอย่างที่คุณสามารถลองได้

  • สร้าง -> โครงการใหม่ทั้งหมด
  • เลือกBuild Build Variants
  • รีสตาร์ท Android Studio (ตามที่คุณระบุไว้)

แต่จะเจาะจงมากขึ้นกับปัญหาของคุณ - เมื่อ Android Studio ไม่พบไฟล์ APK บนดิสก์ หมายความว่า Android Studio สร้างโครงการสำเร็จแล้วและสร้าง APK อย่างไรก็ตามด้วยเหตุผลบางอย่าง Android Studio ไม่สามารถค้นหาไฟล์ได้

ในกรณีนี้โปรดตรวจสอบไดเรกทอรีที่พิมพ์ตามบันทึก มันมีประโยชน์

ตัวอย่างเช่น:

ด้วย Android Studio 2.0 ดูตัวอย่าง (สร้าง 143.2443734)

  1. ชำระเงินการกระทำที่เฉพาะเจาะจง (เพื่อให้แยกออกจากหัว): git checkout [commit_hash]
  2. เรียกใช้โครงการ
  3. Android Studio บอกว่าไฟล์ APK / Users / MyApplicationName / app / build / outputs / apk / app-debug-HEAD.apkไม่มีอยู่ในดิสก์
  4. ไปที่ไดเรกทอรีมีไฟล์ชื่อจริง: app-debug- ( HEAD.apk (พร้อมเครื่องหมายวงเล็บพิเศษ)
  5. เรียกใช้สาขา git

    * (แยกส่วนที่ 1a2bfff)

ดังนั้นที่นี่คุณจะเห็นได้เนื่องจากข้อผิดพลาดของสคริปต์ build gradle ของฉันการตั้งชื่อไฟล์นั้นผิดพลาด

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

ดังนั้นฉันขอแนะนำให้คุณตรวจสอบไดเรกทอรี (เพื่อค้นหาความแตกต่าง) และตรวจสอบสคริปต์build.gradleของคุณ(คุณสามารถเปลี่ยนชื่อ apk ที่นั่นได้ดังนี้:

applicationVariants.all { variant ->
        variant.outputs.each { output ->
            def newFileName = "whatever you want to name it";
            def apk = output.outputFile;
            output.outputFile = new File(apk.parentFile, newFileName);
        }
    }

2
ปัญหาของฉันคือฉันเพิ่มเวอร์ชันแอพในชื่อ APK แต่เวอร์ชันแอพมีรูปแบบ xyz และ "." (dot) ในการตั้งชื่อทำให้เกิดข้อผิดพลาด ดังนั้นจำไม่มีจุดอื่น ๆ แต่อย่างใดอย่างหนึ่งก่อน apk :)
DraganescuValentin

20

ตรวจสอบให้แน่ใจว่าคุณไม่มีเครื่องหมายอัญประกาศเดี่ยวหรือ&ในเส้นทางของคุณ


'&' คือสิ่งที่ขัดขวางไม่ให้ฉันรวบรวม ขอบคุณ @Rim Gazzeh
Marka A

19

ตรวจสอบให้แน่ใจว่ามีการจัดเกรดให้ทราบในการกำหนดค่า Run / Debugging >> ก่อน ส่วนการเปิดตัว :

ชอบรูปนี้


17

ฉันพบเห็นปัญหาที่คล้ายกันโดยทั่วไปเมื่อฉันเปลี่ยนสาขา git สำหรับฉันปิด Android Studio rm -rfv ~/Library/Caches/AndroidStudio*และเริ่ม Android Studio ใหม่เป็นตั๋ว


ปัญหาที่คล้ายกันของฉันได้รับการแก้ไขโดยวิธีนี้ ฉันเปลี่ยนชื่อไฟล์ apk ในการสร้าง gradle เพื่อต่อท้ายหมายเลขเวอร์ชันไปที่ไฟล์พยายามแก้ปัญหากิจกรรมหลักของฉันคือพยายามเรียกใช้ชื่อไฟล์ apk ที่ไม่ถูกต้อง (หมายเลขเวอร์ชันก่อนหน้า) ไม่แน่ใจว่าเมื่อเริ่มต้นทำงาน แต่ทำงานได้ดีจนกระทั่งไม่ทำงาน
David

แคชสตูดิโอ Android มันเป็นปัญหาใหญ่มาก!
GeekHades

มันคือ. ฉันเพิ่งเพิ่มหมายเลขบิลด์ของฉันเพิ่มอีกครั้งนี่เป็นการเปลี่ยนชื่อไฟล์ apk อีกครั้งฉันมีปัญหานี้
David

13

ใน Android Studio 3.1.1 เลือกไฟล์ | ซิงค์โครงการกับไฟล์ Gradle

ใน Android Studio 3 เลือกไฟล์ | ประสาน

จากนั้นเรียกใช้โครงการของคุณอีกครั้ง


ใน Studio v3.1.1 ไฟล์ -> ซิงค์โครงการกับไฟล์ Gradle และคุณก็พร้อมที่จะไป
นโปเลียน

จากนั้นในฟิลด์บนแถบเครื่องมือด้านบน (มีไอคอน), จากไอคอนรูปค้อนคุณต้องส่งคืน 'แอพ' ในการกำหนดค่าแบบเลื่อนลง
CodeToLife

11

ปีนั้นเป็นปี 2018 รุ่น Android Studio คือ 3.2.0 alpha3 และเรายังคงพบปัญหานี้อยู่ เนื่องจากไม่มีสิ่งใดที่ได้ผลสำหรับฉันนี่คือ 2 เซ็นต์ของฉัน:

ทุกครั้งที่สิ่งนี้เกิดขึ้นฉันเพิ่งสร้าง apk จากบรรทัดคำสั่ง:

gradlew assembleDebug

UPDATE

การลบโฟลเดอร์.AndroidStudio[version]และสูญเสียการตั้งค่าและแคชทั้งหมด ... ดูเหมือนว่าจะแก้ปัญหาได้


1
แต่มันใช้ได้กับงานสร้างเดียวเท่านั้น? หากคุณทำการเปลี่ยนแปลงเพิ่มเติมและกดปุ่ม 'เล่น' มันเพียงแค่กด apk เก่าและไม่สร้างใหม่สำหรับการเปลี่ยนแปลง พวกเขาคิดว่าน่ารำคาญมาก wtf
behelit

7

ในกรณีของฉันฉันใช้อักขระพิเศษในพา ธ ไฟล์แอปของฉัน ฉันปิด Android Studio และลบอักขระ'ออกจากเส้นทางไฟล์แอปของฉัน ทุกอย่างทำงานได้ดีเมื่อฉันเปิดโครงการใหม่


ใช่แล้ว Android Studio ควรฉลาดพอที่จะป้องกันผู้ใช้จากการใช้อักขระพิเศษในพา ธ ไฟล์ของพวกเขา หรือดีกว่าฉันควรทำตามวิธีปฏิบัติที่ดีในการเขียนโปรแกรมด้วยตัวเอง :)
Immortal Code

6

ฉันได้แก้ไขการสร้าง apk โดยใช้ตัวเลือก Build จากหน้าต่างด้านบนและ Build APK ไม่จำเป็นต้องทำอะไรแปลก ๆ


6

สำหรับ Unix เช่นผู้ใช้ (Linux / MacOs X) แทนที่จะลบ ~ / .gradle / caches / ในบรรทัดคำสั่งให้ทำ:

$ cd path_to_you_project
$ touch build.gradle

จากนั้นขอให้ Android Studio สร้าง APK มันจะรีเซ็ตแคช gradle เอง


5

ปัญหาของฉันคือฉันได้ต่อท้ายหมายเลขรุ่นต่อท้าย APK การเปลี่ยนหมายเลขเวอร์ชันและการซิงค์ Gradle ใหม่ช่วยให้ฉันแก้ปัญหาได้

def appendVersionNameVersionCode(variant, defaultConfig) {
    variant.outputs.each { output ->
        if (output.zipAlign) {
            def file = output.outputFile
            def removeApp = file.name.replace("app-", "")
            def removeType = removeApp.replace("-release", "")
            def fileName = removeType.replace(".apk", "." + defaultConfig.versionName + ".apk")
            output.outputFile = new File(file.parent, fileName)
        }

        def file = output.packageApplication.outputFile
        def removeApp = file.name.replace("app-", "")
        def removeType = removeApp.replace("-release", "")
        def fileName = removeType.replace(".apk", "." + defaultConfig.versionName + ".apk")
        output.packageApplication.outputFile = new File(file.parent, fileName)
    }
}

คุณเรียก appendVersionNameVersionCode แล้วหรือยัง?
Dhrupal



2

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

ไฟล์ -> การตั้งค่า -> สร้างดำเนินการปรับใช้ -> เรียกใช้ทันที -> ยกเลิกการเลือกที่ช่องทำเครื่องหมาย


2

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


2

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

ฉันลบการกำหนดค่าจาก Run-> แก้ไขการกำหนดค่าที่นี่:

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

Android studio จะสร้างขึ้นมาใหม่โดยอัตโนมัติ


จากนั้นคุณต้องคลิกที่โครงการ File / Re-Import Gradle นี่จะสร้างการกำหนดค่าการรันที่ถูกลบใหม่
Juan Ignacio Barisich

1

ประสบปัญหาเดียวกันกับ gradle 1.5

ฉันต้องล้างไฟล์บิลด์:

สร้าง -> โครงการที่สะอาด

และสร้าง APK เพื่อบังคับให้คอมไพล์และซิงค์ไฟล์ gradle ทั้งหมด:

สร้าง -> สร้าง APK

ฉันยังไม่รู้ว่ามันเกิดขึ้นได้อย่างไร



1

ผมมีปัญหาเหมือนกัน. มันเป็นเพราะชื่อเท็จในเส้นทาง มีตัวละครพิเศษในเส้นทางเช่นนี้: C: \ User \ My App \ Projekte-Tablet & Handy ฉันลบตัวอักษร "&" และมันใช้งานได้ดี


1

ปัญหาของฉันคือการรวมนาทีในชื่อไฟล์ - มันค้นหา appname_debug_0.9.0.1_170214_2216.apk เมื่อไฟล์ที่สร้างขึ้นเป็น appname_debug_0.9.0.1_170214_2217.apk ดังนั้นชื่อไฟล์เอาต์พุต (ถูกจับจากที่อื่น) อย่างชัดเจน ในการสร้าง

applicationVariants.all { variant ->
        variant.outputs.each { output ->
            def project = "appname"
            def SEP = "_"
    //        def flavor = variant.productFlavors[0].name
            def buildType = variant.variantData.variantConfiguration.buildType.name
            def version = variant.versionName
            def date = new Date();
            def formattedDate = date.format('yyMMdd_HHmm')

            def newApkName = project + SEP + /*flavor + */ SEP + buildType + SEP + version + SEP + formattedDate + ".apk"

            output.outputFile = new File(output.outputFile.parent, newApkName)
        }
    }

บล็อกนี้มาจากไหน
Nerius Jok

มันมาจากเธรดการแลกเปลี่ยนสแต็กอื่น ๆ ตั้งแต่เมื่อฉันตั้งค่าโครงการเป็นครั้งแรก (และมีความคิดน้อยมากว่าฉันกำลังทำอะไรอยู่ เนื่องจาก Gradle ส่วนนี้มีการเปลี่ยนแปลงสองสามครั้งจึงเป็นไปได้ว่ารหัสล้าสมัยในขณะนี้
Ian Spencer

1

ปัญหาสำหรับฉันคือว่าอย่างใดก็ไม่สามารถหา apk ในขณะที่ apk อยู่

The APK file /Users/Paul/AndroidStudioProjects/android-tv-launcher/ui/build/outputs/apk/nameofapk.apk does not exist on disk.
Error while Installing APK

สิ่งที่ฉันต้องทำคือคลิกขวาบนเส้นทางที่เกี่ยวข้องกับการคัดลอก apk และเพียงแค่

adb install -r <paste of relative path>

และ apk ได้รับการติดตั้งและดีที่จะไป ปัญหานี้เกิดขึ้นใน OSX สำหรับฉัน


1

แก้ไขในเดือนพฤษภาคมปี 2018 ด้วย Android Studio 3.1 ใหม่ ลบ. gradle, .idea และสร้างไดเรกทอรีภายในโฟลเดอร์แอพของคุณ จากนั้นลองเรียกใช้อีกครั้งและคุณจะไม่เห็นข้อผิดพลาด


1

ซิงค์ล้างข้อมูลสร้างและทำให้แคชใช้ไม่ได้และเริ่มต้นใหม่

ไม่มีใครทำงานให้ฉันได้

ฉันได้ลบไฟล์ APK และ output.json ในโฟลเดอร์ release และ debug folder แล้วจากนั้นลอง sync, clean และ build จากนั้นก็ใช้งานได้ดี



0

ลบไดเรกทอรี ~ / .gradle / caches / การทำเช่นนี้ในขณะที่ Android Studio เปิดอยู่ (อ้างถึงการติดตั้ง pm ชื่อแพคเกจที่ไม่ถูกต้อง) กด "ซิงค์โครงการที่มีไฟล์ Gradle" ใน Android Studio เรียกใช้โครงการและเส้นทางระยะไกลจะถูกต้อง

อ้างถึงคำตอบ @ Android Studio ทำให้ชื่อแพ็กเกจไม่ถูกต้องเมื่อใช้. apk


0

ตรวจสอบให้แน่ใจว่าในเส้นทางที่สร้างในบันทึกของคุณ - ในกรณีของคุณ:

/Users/MyApplicationName/app/build/outputs/apk/app-debug.apk

โฟลเดอร์ "เอาท์พุท" แน่นอนมีโฟลเดอร์ "apk"

นั่นคือปัญหาของฉันถ้ามันไม่อยู่ที่นั่นคุณจะต้องเรียกใช้งาน "assembleRelease" ในระดับล่างโดยทำตามภาพหน้าจอด้านล่าง

ขั้นตอนในการรันภารกิจ gradle assembleRelease จากนั้นโฟลเดอร์จะถูกสร้างขึ้น


0

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


0

แก้ไขไฟล์: build.gradle (ไดเรกทอรีแอป) อันที่จริง: คุณไม่ควรเปลี่ยนไฟล์นี้เพียงแค่นี้เพื่อรับเคล็ดลับการซิงค์แล้วซิงค์โครงการ

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