Android Studio - ดีบักที่เก็บคีย์


107

Android Studio เซ็นชื่อแก้จุดบกพร่องสร้างไหม ถ้าเป็นเช่นนั้นที่เก็บคีย์จะใช้ทำที่ไหน


1
มันไม่ได้ลงนามเพราะสามารถติดตั้งได้เฉพาะบิลด์ที่เซ็นชื่อเท่านั้น
Alexander Kulyakhtin

3
ฉันคิดว่านี่เป็นคำถามเกี่ยวกับการเขียนโปรแกรมที่ถูกต้อง เกี่ยวข้องโดยตรงกับ toolchain ที่ใช้ในการพัฒนาแอพ Android
Austyn Mahoney


@ ปราจีนี่จะซ้ำกับคำถามที่ถามมาเกิน 3 ปีได้ยังไง? อาจจะเป็นอีกอันที่ซ้ำกัน
fasteque

คำตอบ:


179

ตั้งอยู่ในสถานที่เดียวกัน: ~/.android/debug.keystore


5
ไม่ได้อยู่ใน ~ / .android แทน?
Eugene Mymrin

14
keytool -list -v -keystore ~ ​​/ .android / debug.keystore
jturolla

5
นี่คือคำสั่ง keytool เวอร์ชัน windows: keytool -exportcert -alias androiddebugkey -keystore C: \ Users \ <User> \ .android \ debug.keystore -list -v
Simon

12
รหัสผ่านเริ่มต้นคือ "android" และนามแฝงของคีย์คือ "androiddebugkey"
naXa

1
และรหัสผ่านเริ่มต้นสำหรับ androiddebugkey ก็คือ "android" เช่นกัน
kibitzerCZ


30

คุณสามารถระบุที่เก็บคีย์การดีบักของคุณเองได้หากต้องการ โซลูชันนี้ยังช่วยให้คุณสามารถจัดเก็บคีย์ของคุณไว้นอกไดเร็กทอรีโปรเจ็กต์และเพลิดเพลินกับระบบอัตโนมัติในกระบวนการเซ็นชื่อ ใช่คุณสามารถไปที่File -> Project Structureและกำหนดที่เก็บคีย์การลงนามและรหัสผ่านในSigningแท็บ แต่จะใส่รายการข้อความธรรมดาลงในไฟล์ gradle.build ของคุณซึ่งหมายความว่าอาจมีการเปิดเผยความลับของคุณ (โดยเฉพาะในการคอมมิตที่เก็บข้อมูล) ด้วยโซลูชันนี้คุณจะได้รับการควบคุมการใช้ที่เก็บคีย์ของคุณเองและความมหัศจรรย์ของระบบอัตโนมัติในระหว่างการดีบักและการวางจำหน่าย

1) สร้าง gradle.properties (ถ้าคุณยังไม่มี)

ตำแหน่งของไฟล์นี้ขึ้นอยู่กับระบบปฏิบัติการของคุณ:

   /home/<username>/.gradle/ (Linux)
   /Users/<username>/.gradle/ (Mac)
   C:\Users\<username>\.gradle (Windows)

2) เพิ่มรายการชี้ไปที่yourprojectname.propertiesไฟล์ (ตัวอย่างสำหรับ Windows)

yourprojectname.properties=c:\\Users\\<username>\\signing\\yourprojectname.properties

3) สร้างyourprojectname.propertiesไฟล์ในตำแหน่งที่คุณระบุในขั้นตอนที่ 2 ด้วยข้อมูลต่อไปนี้:

keystore=C:\\path\\to\\keystore\\yourapps.keystore
keystore.password=your_secret_password

4) แก้ไขgradle.buildไฟล์ของคุณให้ชี้ไปที่yourprojectname.propertiesไฟล์เพื่อใช้ตัวแปร

if(project.hasProperty("yourprojectname.properties")
        && new File(project.property("yourprojectname.properties")).exists()) {

    Properties props = new Properties()
    props.load(new FileInputStream(file(project.property("yourprojectname.properties"))))

    android {
        signingConfigs {
            release {
                keyAlias 'release'
                keyPassword props['keystore.password']
                storeFile file(props['keystore'])
                storePassword props['keystore.password']
            }
            debug {
                keyAlias 'debug'
                keyPassword props['keystore.password']
                storeFile file(props['keystore'])
                storePassword props['keystore.password']
            }
        }
        compileSdkVersion 19
        buildToolsVersion "20.0.0"
        defaultConfig {
            applicationId "your.project.app"
            minSdkVersion 16
            targetSdkVersion 17
        }
        buildTypes {
            release {
            }
        }
    }

}

dependencies {
    ...
}

5) สนุก! ตอนนี้คีย์ทั้งหมดของคุณจะอยู่นอกรูทของไดเร็กทอรี แต่คุณยังคงมีความสุขกับการทำงานอัตโนมัติสำหรับแต่ละบิลด์

หากคุณได้รับข้อผิดพลาดในไฟล์ gradle.build ของคุณเกี่ยวกับตัวแปร "props" นั่นเป็นเพราะคุณไม่ได้ดำเนินการบล็อก "android {}" ในifเงื่อนไขแรกที่propsตัวแปรได้รับมอบหมายดังนั้นเพียงแค่ย้าย android ทั้งหมด {... } ลงในเงื่อนไขที่กำหนดตัวแปรอุปกรณ์ประกอบฉากจากนั้นลองอีกครั้ง

ผมปะติดปะต่อขั้นตอนเหล่านี้ร่วมกันจากข้อมูลที่พบที่นี่และที่นี่


1
เกี่ยวกับ "2) เพิ่มรายการ ... " เพิ่มรายการในที่ใด
VikingGlen

ชอบความคิดในการสร้างระบบอัตโนมัติ
Khurram Shehzad

ขอบคุณนี่เป็นวิธีที่ยอดเยี่ยมในการเก็บรักษารหัสผ่านที่ใช้งานจริงไว้ภายนอกการควบคุมแหล่งที่มา (ดังนั้นจึงไม่สามารถใช้ได้กับนักพัฒนาทั้งหมด)!
แชม

15

เส้นทางไฟล์ debug.keystore ของ Android Studio ขึ้นอยู่กับตัวแปรสภาพแวดล้อม ANDROID_SDK_HOME

หาก ANDROID_SDK_HOME กำหนดแล้วไฟล์วางไว้ในโฟลเดอร์ย่อยของ SDK ชื่อ.android
เมื่อไม่ได้กำหนดที่เก็บคีย์จะวางไว้ที่พา ธ โฮมของผู้ใช้ในโฟลเดอร์ย่อยเดียวกัน:
- % HOMEPATH% \. android \บน Windows
- $ HOME / .android /บน Linux


1
โปรดอธิบายเพิ่มเติมเกี่ยวกับคำตอบของคุณโดยเพิ่มคำอธิบายเพิ่มเติมเล็กน้อยเกี่ยวกับโซลูชันที่คุณให้มาได้ไหม
หอยเป๋าฮื้อ

ทำไม 87 คนถึงคิดว่ามันอยู่ใน ~ / .android / debug.keystore พวกเขาทั้งหมดไม่มีตัวแปรสภาพแวดล้อมชื่อ "ANDROID_SDK_HOME" ???
IloveIniesta

สิ่งนี้มีประโยชน์มาก ขอบคุณมาก
Rahul

4

ในที่สุดฉันก็สร้างไฟล์ ~ / .android / debug.keystore

ก่อนอื่นพื้นหลัง ฉันได้แล็ปท็อปสำหรับเดินทางเครื่องใหม่ ติดตั้ง Android Studio แล้ว โคลนโครงการ android ของฉันจาก git hub โครงการจะไม่ทำงาน ในที่สุดก็พบว่าไม่ได้สร้าง debug.keystore ... และฉันไม่สามารถหาวิธีสร้าง Android Studio ได้

ในที่สุดฉันก็สร้างโปรเจ็กต์เปล่าใหม่ ... และนั่นก็สร้าง debug.keystore!

หวังว่านี่จะช่วยคนอื่น ๆ ที่มีปัญหานี้



1

หากคุณใช้ Windows คุณจะพบสิ่งนี้: File -> Project Structure -> Facets

เลือกโครงการ Android ของคุณและในหน้าต่าง "Facet" Android "คลิก TAB" Packaging "คุณจะพบสิ่งที่คุณต้องการ


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