สร้างไฟล์ APK ที่ไม่ได้ลงชื่อกับ Android Studio


272

ฉันกำลังพัฒนาแอพ android ด้วยเครื่องมือสำหรับนักพัฒนา Android ตอนนี้ฉันลองใช้ Android Studio ใหม่ทุกอย่างทำงานได้ดีถ้าเชื่อมต่อสมาร์ทโฟนของฉันกับพีซีและเรียกใช้โปรแกรมโดยตรงใน Android Studio แต่ตอนนี้ฉันต้องการทดสอบโปรแกรมด้วยสมาร์ทโฟนอื่นโดยไม่ต้องเชื่อมต่อกับพีซีของฉัน

ADT สร้างไฟล์. apk ภายใต้ "projectname / bin" ทุกครั้งที่คุณคอมไพล์โปรแกรม ฉันจะเห็นได้อย่างไรในขณะนี้ที่ Android Studio ไม่ทำเช่นนั้น

ดังนั้นคำถามของฉันเป็นไปได้ไหมที่จะสร้างไฟล์. apk ที่ไม่ได้ลงชื่อกับ Android Studio?


10
ในทางเทคนิคสิ่งที่คุณต้องการคือ apk ที่เซ็นชื่อด้วยคีย์ดีบั๊ก apk ที่ไม่ได้ลงชื่อจริงจะถูกปฏิเสธโดยอุปกรณ์
Chris Stratton

FYI เราควรเลือกส่งออกแอพที่ลงนามแล้วตอบโดย @Nirmal Dhara ปลอดภัยกว่านี้มาก
Mukund

2
@ChrisStratton มันจะถูกปฏิเสธเสมอ
Sreekanth Karumanaghat

ฉันแก้ปัญหาด้วยโซลูชันนี้: stackoverflow.com/a/56201481/8471798
canerkaseler

คำตอบ:


326

ฉันอยากจะแนะนำให้คุณสร้างไฟล์ APK ด้วย Gradle:

  • คลิกเมนูแบบเลื่อนลงในแถบเครื่องมือที่ด้านบน (เปิดกล่องโต้ตอบ 'แก้ไขการเรียกใช้ / แก้ไขข้อบกพร่อง')
  • เลือก "แก้ไขการกำหนดค่า"
  • คลิกปุ่ม "+"
  • เลือก "Gradle"
  • เลือกโมดูลของคุณเป็นโครงการ Gradle
  • ใน Tasks: ป้อน assemble
  • กด Run

APK ของคุณที่ไม่ได้ลงชื่ออยู่ตอนนี้

ProjectName\app\build\outputs\apk

สำหรับข้อมูลรายละเอียดเกี่ยวกับวิธีการใช้ Gradle, กวดวิชานี้เป็นสิ่งที่ดีที่จะไป: อาคารกับ Gradle ใน Android สตูดิโอ ฉันยังเขียนโพสต์บล็อกเกี่ยวกับวิธีสร้าง APK ที่ไม่มีผู้ลงชื่อด้วย Gradle

หากคุณย้ายโครงการของคุณจาก IDE อื่นและไม่ต้องการคอมไพล์ซ้ำคุณอาจพบไฟล์ APK ที่สร้างขึ้นใน IDE ที่คุณย้ายจาก:

  • หากคุณสร้างโครงการด้วย Android Studio จะพบไฟล์ APK ProjectName/ProjectName/build/apk/...

  • อิมพอร์ตโปรเจ็กต์จาก eclipse: ไฟล์ควรอยู่ในไดเร็กทอรีเดียวกัน ไป-Project Show in Explorerที่นั่นคุณควรค้นหาโฟลเดอร์ bin ที่ไฟล์ APK ของคุณตั้งอยู่

  • นำเข้าจาก IntelliJ สถานที่จะเป็น ProjectName/out/production/...

ข้อความด้าน: ตามที่ Chris Stratton พูดถึงในความคิดเห็นของเขา:

โดยทางเทคนิคแล้วสิ่งที่คุณต้องการก็คือ APK ที่ลงชื่อด้วยคีย์ดีบั๊ก APK ที่ไม่ได้ลงชื่อจริงจะถูกปฏิเสธโดยอุปกรณ์


1
ใช่ฉันนำเข้าโครงการจาก eclipse แต่ในกรณีของฉันโฟลเดอร์ bin ไม่ได้ถูกแตะต้องโดย Android Studio ด้วยการค้นหาเล็กน้อยฉันพบมันด้วยตัวเอง ในกรณีของฉัน. apk ตั้งอยู่ใน "projectname / out / production / projectname /"
klange

นี่ควรจะเป็นในกรณีที่คุณเปลี่ยนจาก IntelliJ
bpoiss

9
ฉันกำลังสร้างโครงการโดยตรงกับ Studio แต่ไม่มีโฟลเดอร์ชื่อ "bin" ในโฟลเดอร์ใด ๆ ของโครงการ และในโฟลเดอร์ "build" มีเพียงสองโฟลเดอร์คือ "res" และ "source" และไม่มีโฟลเดอร์ "bin" คุณสามารถแนะนำบางอย่างให้ฉันได้ไหม
Himanshu Aggarwal

25
Click the dropdown menu in the toolbar at the topนี่เป็นเรื่องทั่วไป เมนูแบบเลื่อนลงคืออะไร แถบเครื่องมืออะไร
2560

3
@dthree คุณสามารถคลิก "Run" ที่แถบเมนูด้านบนและเลือก "Edit Configurations" จากดรอปดาวน์
Gema Megantara

226

อ้างอิงจากBuild Build Unsigned APK with Gradleคุณสามารถสร้างแอปพลิเคชันของคุณด้วย gradle ในการทำเช่นนั้น:

  1. คลิกที่เมนูแบบเลื่อนลงบนแถบเครื่องมือที่ด้านบน (โดยปกติจะมีไอคอน Android และชื่อแอปพลิเคชันของคุณ)
  2. เลือก Edit configurations
  3. คลิกเครื่องหมายบวกที่มุมซ้ายบนหรือกด alt+insert
  4. เลือก Gradle
  5. เลือกโมดูลของคุณเป็น Gradle project
  6. ในการTasks:ป้อนassemble
  7. กด OK
  8. กดเล่น

หลังจากนั้นคุณควรค้นหา 'apk' ที่ไม่ได้ลงชื่อในไดเรกทอรี ProjectName\app\build\outputs\apk


1
+ แก้ไข build.gradle กับ Android {lintOptions {checkReleaseBuilds เท็จ abortOnError false} [.... ]} และมันใช้งานได้! ขอบคุณ
Steffi

ขอบคุณ marcin ... มันได้ผล .. สิ่งหนึ่งที่ต้องสังเกตุคือฉันไม่พบโฟลเดอร์ "เอาท์พุต / apk" ใน Android Studio .. มันปรากฏเฉพาะในระบบไฟล์ ..
Govind

ไม่พบภารกิจ 'assemble' ในโครงการรูท 'bin'
nVentimiglia

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

มันใช้งานได้ใน 1.5.1 แต่จริง ๆ แล้วสร้างทั้งโครงการ apks แม้ว่าโมดูลเดียวได้รับการคัดเลือก
sandrstar

94

วิธีที่ง่ายที่สุดฉันเดาว่า:

  • เปิดแท็บ Gradle ทางด้านขวา
  • ดับเบิลคลิก YourProject /: app / assemble (หรือ assembleDebug)
  • คุณจะพบ apk ที่นี่
    ... / YourProject / app / build / outputs / apk / app-debug.apk

ภาพหน้าจอ


1
ขอบคุณมากง่ายกว่าคำตอบที่ยอมรับและไม่อนุญาตให้สร้าง apk ในการวิ่งแต่ละครั้ง
Irhala

42

เพียงไปที่ BUILD-> Build APK และเสร็จแล้ว


8
+1 วิธีการที่ง่ายมาก BTW คุณสามารถค้นหา APK ที่สร้างขึ้นได้ที่AndroidStudioProjects/<APP NAME>/app/build/outputs/apk/debug/app-debug.apk
Spikatrix

เรียบง่ายอย่างนั้นขอบคุณมากมันใช้งานได้ชื่นชมมัน
zeyad

23

ขั้นตอนที่ 1 เปิด android studio สร้าง -> สร้าง APK ที่ลงชื่อแล้ว…. ตอนนี้คลิกที่ "สร้าง APK ที่ลงชื่อแล้ว"

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

ขั้นตอนที่ 2

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

คลิกสร้างใหม่

ขั้นตอนที่ 3

กรอกรายละเอียดแล้วคลิกตกลง ป้อนคำอธิบายรูปภาพที่นี่

jks คีย์รายละเอียดมันจะกลับไปที่หน้าต่างก่อนหน้า

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

คลิกถัดไปและให้รหัสผ่านที่คุณเก็บไว้ในคีย์

ขั้นตอนที่ 4

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

ตอนนี้คลิกเสร็จสิ้นและรอให้กระบวนการสร้างเสร็จสมบูรณ์

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

ตอนนี้สร้าง apk สำเร็จแล้ว คลิกแสดงใน Explorer

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

หากคุณต้องการรายละเอียดเพิ่มเติมกรุณาเยี่ยมชมและตรวจสอบการสาธิตสดhttp://javaant.com/how-to-make-apk-file-in-android-studio/#.VwzedZN96Hs


3
คำถามขอ apk ที่ไม่ได้ลงชื่อ
ravelinx

18

ใน Android Studio:

  1. สร้าง

  2. สร้าง APK

  3. รอและไปยังตำแหน่งที่แสดงในหน้าต่างป๊อปอัป ที่ด้านล่างขวา

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


14

ใช่เป็นไปได้ที่จะสร้าง. apk ที่ไม่ได้ลงชื่อกับ Android Studio!

เน้นโครงการในกล่องสำรวจหรือคอลัมน์โครงการแล้วFile- Project Structure- Artifacts- +- Android Application- From module 'your app'จากนั้นคุณสามารถเปลี่ยนตำแหน่งและตัวเลือกอื่น ๆ ฉันเปิดใช้งานการสร้างเพียงเพื่อความสะดวก


มันโผล่ขึ้นมาข้อความ "เราจะให้ UI เพื่อกำหนดค่าการตั้งค่าโครงการในภายหลังจนแล้วโปรดแก้ไขไฟล์ build.gradle ของคุณด้วยตนเอง" ตอนนี้ฉันควรทำอย่างไร
Himanshu Aggarwal

8
และถ้าฉันไม่มี "สิ่งประดิษฐ์" ที่นั่นล่ะ
กระรอก

กดเครื่องหมายบวกที่มุมบนซ้ายและคุณสามารถไปที่แอปพลิเคชัน Android
CACuzcatlan

jetbrains.com/idea/webhelp/artifacts.html จุดประสงค์ของการใช้สิ่งประดิษฐ์คืออะไร ฉันคิดว่ามันคือการสร้าง apk debug apk ที่ไม่ได้ลงชื่อ แต่ดูเหมือนว่าคุณสามารถไปที่โฟลเดอร์ build / apk เพื่อรับ apk ที่ไม่ได้ลงชื่อตราบใดที่คุณเรียกใช้แอสเซมเบลอร์ออกจากเมนู gradle (อย่างน้อยใน Intellij IDE) ฉันเพิ่งกำหนดค่าสิ่งประดิษฐ์ แต่ฉันมีปัญหาในการหาว่าจะทำอย่างไรกับมันอย่างแท้จริง ใครช่วยกรุณาอธิบายความแตกต่างและใช้หรือชี้ให้ฉันไปในทิศทางที่ถูกต้อง?
cjayem13

@ cjayem13 บางโครงการไม่ใช้ Gradle
Marc Plano-Lesay

11

ด้วย Android Studio 2.2.3 บน OSX ฉันเพิ่งใช้เมนูด้านบน:

Build > Build APK

มันเปิด Finder พร้อม.apkไฟล์ สิ่งนี้จะไม่สร้าง APK ที่ลงชื่อ คุณสามารถเลือกGenerate Signed APKจากเมนูเดียวกันหากต้องการ


ฉันพยายามสร้าง APK ที่ลงชื่อแล้ว แต่กำลังขอเส้นทางที่เก็บคีย์ มีอะไรที่คาดว่าจะได้รับจากที่นั่น?
codeinprogress


11

AndroidStudio 3.4


หลังจากGrade Build Runningเสร็จสิ้นคุณจะเห็นการแจ้งเตือนที่มุมล่างขวาเช่น

คลิกที่locateและคุณจะเห็น APK ที่ debuggable ได้


10

เพียงไปที่แอปพลิเคชันของคุณ \ app \ build \ outputs \ apk

และคัดลอกทั้งสองไปยังโทรศัพท์และติดตั้ง app-debug.apk


1
จำเป็นหรือไม่ที่จะต้องทำการคัดลอกทั้งสองไฟล์?
Vahid Ghadiri

4

ทำงานต่อไปสำหรับฉัน:

คงการตั้งค่าต่อไปนี้ว่างไว้หากคุณทำใน build.gradle

signingConfigs {
        release {
            storePassword ""
            keyAlias ""
            keyPassword ""
        }
    }

และเลือก Gradle Task จากหน้าต่างแก้ไขของคุณ มันจะแสดงรายการของรสชาติทั้งหมดหากคุณได้สร้าง

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


3

--- สร้างการกำหนดค่าใหม่ใน SignConfigs

unsigned {
        //do not sign
    }

--- สร้างประเภทการสร้างใน buildTypes

unsigned {
        versionNameSuffix '-unsigned'
    }

--- ไปที่การสร้างชุดรูปแบบและเลือกมาตรฐานที่ไม่ได้ลงชื่อ สร้างโครงการ

--- ไปที่ "เอาท์พุท / apk" แล้วค้นหา "XXX-unsigned.apk" เพื่อตรวจสอบว่ามันไม่ได้ลงชื่อพยายามติดตั้งลงในอุปกรณ์ - คุณจะล้มเหลว


สิ่งนี้ใช้ไม่ได้ คุณต้องกำหนด signinigConfig แตกต่างกันเล็กน้อย (นำมาจากstackoverflow.com/a/18121401/624109 )signingConfigs{ unsigned{ storePassword = "" keyAlias = "" keyPassword = "" } }
Muzikant

1

ตอนนี้ใน Android Studio v1.1.0 ควรเป็น:

  1. เลือกRun>Run <your app>
  2. ค้นหา. apk ไฟล์ใน <your app>\build\outputs\apk

ฉันใช้ 1.2.1.1 แต่แนวทางของคุณใช้ไม่ได้ ฉันต้องสร้าง Gradle Assembly!
โปรแกรมเมอร์

0

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


0

คุณสามารถคลิกที่ดรอปดาวน์ใกล้ปุ่มเรียกใช้บนแถบเครื่องมือ

  1. เลือก "แก้ไขการกำหนดค่า"
  2. คลิกปุ่ม "+"
  3. เลือก "Gradle"
  4. เลือกโมดูลของคุณเป็นโครงการ Gradle
  5. ใน Tasks: ป้อนชุดประกอบ

ตอนนี้กดตกลง

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

Project\app\build\outputs\apk

0

ฉันแก้มัน!

ก่อนอื่นคุณควรเพิ่มสิ่งเหล่านี้:

defaultConfig { 
 multiDexEnabled true
}

dependencies {
 implementation 'com.android.support:multidex:1.0.3'
}

หลังจากนั้นคุณควรคลิกBuildในแถบด้านบนของ Android Studio:

Build > Build Bundle (s) / APK (s)> Build APK (s)

ท้ายที่สุดคุณมีไฟล์app-debug.apkใน:

แอพ> บิลด์ > เอาท์พุต> apk> ดีบั๊ก> app-debug.apk

หมายเหตุ : ไฟล์ apk, debug, app-debug.apk ที่สร้างขึ้นโดยอัตโนมัติในไฟล์ที่ส่งออกโดย Android Studio


0

ขั้นตอนในการสร้าง APK ที่ไม่ได้ลงชื่อ

หมายเหตุ: โดยทางเทคนิคแล้วสิ่งที่คุณต้องการก็คือ APK ที่ลงชื่อด้วยรหัส debug APK ที่ไม่ได้ลงชื่อจริงจะถูกปฏิเสธโดยอุปกรณ์ ดังนั้น APK ที่ไม่ได้ลงนามจะให้ข้อผิดพลาดหากคุณติดตั้งในอุปกรณ์


ฉันได้รับข้อผิดพลาด 'ไม่สามารถตั้งค่าไดเรกทอรีทำงานของกระบวนการเป็น' C: \ Users \ marad \ .gradle \ daemon \ 5.2.1 \ แอปพลิเคชันของฉัน ': ไม่สามารถตั้งค่าไดเรกทอรีปัจจุบัน (errno 2)'
ass-king คำถาม

0

สำหรับ APK ที่ไม่ได้ลงชื่อ:เพียงแค่ตั้งค่า SignConfig null มันจะทำให้คุณ appName-debug-unsigned.apk

debug {
     signingConfig null
}

และสร้างจากเมนูสร้าง สนุก

สำหรับ APK ที่ลงชื่อแล้ว:

signingConfigs {
        def keyProps = new Properties()
        keyProps.load(rootProject.file('keystore.properties').newDataInputStream())
        internal {
            storeFile file(keyProps.getProperty('CERTIFICATE_PATH'))
            storePassword keyProps.getProperty('STORE_PASSWORD')
            keyAlias keyProps.getProperty('KEY_ALIAS')
            keyPassword keyProps.getProperty('KEY_PASSWORD')
        }
    }
    buildTypes {
        debug {
            signingConfig signingConfigs.internal
            minifyEnabled false
        }
        release {
            signingConfig signingConfigs.internal
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

ไฟล์ keystore.properties

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