ฉันจะสร้างที่เก็บคีย์ได้อย่างไร


537

ขั้นตอนในการสร้างที่เก็บคีย์สำหรับ Android คืออะไร

ฉันต้องใช้ Google Maps ในแอพของฉันและฉันไม่รู้ว่าฉันพลาดขั้นตอนใดไป โปรดระบุขั้นตอนอย่างละเอียดให้ฉัน (ฉันไม่เข้าใจจากคำแนะนำ)


คุณทำอะไรไปแล้วหรือคุณกำลังมองหาคำแนะนำในการเริ่มต้นใช้งาน?
atk

2
เหล่านี้คือขั้นตอนต่อไปนี้ที่ฉันทำ: 1- ติดตั้ง eclipse 2- ติดตั้ง jdk 3- ติดตั้ง sdk 4- ติดตั้งปลั๊กอิน android ฉันไม่ได้จัดการเพื่อรันคำสั่งใน win cmd คำสั่ง: $ keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000 (ซึ่งสร้างคีย์ส่วนตัว) ขอบคุณ
user482762

@ user482762: คำตอบของ CommonsWare เหมาะกับคุณหรือไม่? ทำไมคุณไม่จัดการเพื่อดำเนินการชนะ cmd?
atk

คำตอบของคอมมอนส์แวร์ไม่เหมาะสำหรับฉันเมื่อฉันพยายามเรียกใช้คำสั่งใน cmd ฉันได้รับข้อความแสดงข้อผิดพลาด: "$ ไม่ได้รับการยอมรับว่าเป็นคำสั่งภายในหรือภายนอก, โปรแกรมปฏิบัติการหรือไฟล์แบตช์" ขอบคุณสำหรับความช่วยเหลือของคุณ
user482762

อา! คุณไม่ต้องการที่จะพิมพ์ $ บน Windows เมื่อคุณใช้บรรทัดคำสั่ง (แอปพลิเคชัน cmd) พรอมต์อินพุตมักจะดูเหมือน DRIVE: / DIRECTORY> เช่น "c: \" บนยูนิกซ์พรอมต์มักจะดูเหมือน "$" หรือเพียงแค่ ">" "$" ในคำสั่งหมายถึงแสดงถึงพรอมต์อินพุตไม่ใช่ส่วนหนึ่งของคำสั่ง ลองใช้ keytool กับอาร์กิวเมนต์ทั้งหมดโดยไม่มี $
atk

คำตอบ:


545

ที่จะตอบคำถามในชื่อที่คุณสร้าง keystore กับสาธารณูปโภค Java Keytool ที่มาพร้อมกับการกระจาย JDK มาตรฐานใด ๆ %JAVA_HOME%\binและสามารถอยู่ใน บน Windows C:\Program Files\Java\jre7\binนี้มักจะเป็น

ดังนั้นใน Windows ให้เปิดหน้าต่างคำสั่งและสลับไปยังไดเรกทอรีนั้นแล้วป้อนคำสั่งเช่นนี้

keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000

Keytool พร้อมท์ให้คุณระบุรหัสผ่านสำหรับที่เก็บคีย์ระบุฟิลด์ Distinguished Name จากนั้นรหัสผ่านสำหรับคีย์ของคุณ จากนั้นสร้างที่เก็บคีย์เป็นไฟล์ชื่อ my-release-key.keystore ในไดเร็กทอรีที่คุณเข้าสู่ keystore และคีย์ได้รับการป้องกันโดยรหัสผ่านที่คุณป้อน ที่เก็บคีย์มีคีย์เดียวใช้ได้สำหรับ 10000 วัน นามแฝงเป็นชื่อที่คุณจะใช้ในภายหลังเพื่ออ้างถึงที่เก็บคีย์นี้เมื่อลงชื่อแอ็พพลิเคชันของคุณ

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ Keytool โปรดดูเอกสารที่: http://docs.oracle.com/javase/6/docs/technotes/tools/windows/keytool.html

และสำหรับข้อมูลเพิ่มเติมเกี่ยวกับการลงชื่อแอพ Android ไปที่นี่: http://developer.android.com/tools/publishing/app-signing.html


6
เสียงโห่ร้องที่ดีในการกำหนด -keysize 2048 มากกว่าค่าเริ่มต้น 1024 เป็นการส่วนตัวตอนนี้ฉันใช้ 4096
scottyab

9
สำหรับข้อมูลในกรณีของฉันฉันต้องเปิดหน้าต่างคำสั่งที่มีสิทธิ์ผู้ดูแลระบบ
Intuitisoft

สิ่งนี้ให้ฉัน: E / TokenRequestor: คุณมีการกำหนดค่า OAuth2 ที่ไม่ถูกต้องโปรดตรวจสอบ ข้อผิดพลาดโดยละเอียด: UNREGISTERED_ON_API_CONSOLE ฉันได้สร้างข้อมูลประจำตัวแล้วโดยป้อน SHA1 ของฉันในคอนโซล API
Rohan Taneja

เชื่อมโยงโดยตรงไปยังเอกสารประกอบเกี่ยวกับการสร้างที่เก็บคีย์ด้วยตนเอง: developer.android.com/studio/publish/…
methodsignature

ผมเคยใช้คำสั่งนี้ซึ่งชุด 2 keytool -genkey -v -keystore debug.keystore -storepass android -alias android -keypass android -keyalg RSA -keysize 2048 -validity 10000รหัสผ่านเพื่อให้คุณข้ามบางส่วนของคำแนะนำที่ปรากฏ: จากนั้นเพื่อสร้าง SHA-1 ที่คุณต้องใส่ใน Firebase ทำ:keytool -list -v -keystore debug.keystore -alias android -storepass android -keypass android
อัลเบิร์ต Vila Calvo

158

การลงชื่อแอปของคุณใน Android Studio

หากต้องการลงชื่อแอปของคุณในโหมดเผยแพร่ใน Android Studio ให้ทำตามขั้นตอนเหล่านี้:

1- บนแถบเมนูคลิกสร้าง> สร้าง APK ที่ลงชื่อแล้ว


2-on หน้าต่างตัวช่วยสร้าง APK ที่ลงชื่อแล้วคลิกสร้างใหม่เพื่อสร้างที่เก็บคีย์ใหม่ หากคุณมีที่เก็บคีย์อยู่แล้วให้ไปที่ขั้นตอนที่ 4


3- ในหน้าต่าง New Key Store ให้ข้อมูลที่จำเป็นตามที่แสดงในรูปรหัสของคุณควรมีอายุอย่างน้อย 25 ปีเพื่อให้คุณสามารถลงชื่อเข้าใช้การอัปเดตแอปด้วยรหัสเดียวกันผ่านอายุการใช้งานของแอปของคุณ

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

4- ในหน้าต่างตัวช่วยสร้าง APK ที่ลงชื่อแล้วให้เลือกที่เก็บคีย์คีย์ส่วนตัวและป้อนรหัสผ่านสำหรับทั้งคู่ จากนั้นคลิกถัดไปป้อนคำอธิบายรูปภาพที่นี่

5- ในหน้าต่างถัดไปเลือกปลายทางสำหรับ APK ที่เซ็นชื่อแล้วคลิกเสร็จสิ้น ป้อนคำอธิบายรูปภาพที่นี่

referance

http://developer.android.com/tools/publishing/app-signing.html


2
ในขณะที่คำตอบนี้ถูกต้องจะสะดวกก็ต่อเมื่อคุณติดตั้ง android studio แล้ว
Seph Reed

98

ฉันคลั่งไคล้วิธีการสร้าง. keystore โดยใช้คำสั่งบรรทัดเดียวในเชลล์ดังนั้นฉันจึงสามารถเรียกใช้จากแอปพลิเคชันอื่นได้ นี่คือวิธี:

echo y | keytool -genkeypair -dname "cn=Mark Jones, ou=JavaSoft, o=Sun, c=US" -alias business -keypass kpi135 -keystore /working/android.keystore -storepass ab987c -validity 20000
  • dnameเป็นตัวระบุเฉพาะสำหรับแอปพลิเคชันใน. keystore

    • CNชื่อเต็มของบุคคลหรือองค์กรที่สร้าง. keystore
    • อูหน่วยองค์กรที่สร้างโครงการเป็นส่วนย่อยขององค์กรที่สร้างโครงการ อดีต android.google.com
    • oเจ้าขององค์กรของโครงการทั้งหมด มันเป็นขอบเขตที่สูงกว่าคุณอูเช่น: google.com
    • cรหัสย่อของประเทศ เช่นสำหรับสหรัฐอเมริกาคือ "US"
  • alias Identifier ของแอปเป็นเอนทิตีเดียวภายใน. keystore (สามารถมีได้หลายอย่าง)

  • keypassรหัสผ่านสำหรับป้องกันนามแฝงนั้น
  • ที่เก็บคีย์พา ธ ที่ไฟล์. keystoreจะถูกสร้างขึ้น (ส่วนขยายมาตรฐานเป็นจริง.ks)
  • รหัสผ่านstorepassสำหรับการปกป้องเนื้อหา. storeทั้งหมด
  • ความถูกต้อง Amout of days แอปจะใช้ได้กับ. keystoreนี้

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


ฉันไม่เคยมีข้อผิดพลาดแบบนั้นมาก่อน แต่ลองแตะ/path/file.keystoreและชี้ไปที่พารามิเตอร์ storepass
EliuX

ใช้งานได้ดี! การเปลี่ยนแปลงเพียงอย่างเดียวของฉันคือฉันใช้ส่วนขยาย. jks สำหรับ Android
Adam Mendoza

2
jksเป็นส่วนขยายที่เก็บคีย์อย่างเป็นทางการสำหรับ javaโดยทั่วไป แต่keystoreเป็นส่วนขยายที่แนะนำให้ใช้สำหรับแอป Androidแทน
EliuX

1
@eliasbagley นั่นเป็นเพราะคำสั่ง -storepass ตามที่เขียนไว้ด้านบนเริ่มต้นในอีกบรรทัดหนึ่ง เขียนทุกอย่างในบรรทัดเดียวแล้วมันก็ใช้ได้
tormuto

82

สร้างไฟล์ keystore จากบรรทัดคำสั่ง:

  1. เปิดบรรทัดคำสั่ง:

    Microsoft Windows [Version 6.1.7601]
    Copyright (c) 2009 Microsoft Corporation.  All rights reserved
    
    // (if you want to store keystore file at C:/ open command line with RUN AS ADMINISTRATOR)
    
    C:\Windows\system32> keytool -genkey -v -keystore [your keystore file path]{C:/index.keystore} -alias [your_alias_name]{index} -keyalg RSA -keysize 2048 -validity 10000[in days]
  2. ป้อน> มันจะพร้อมท์ให้คุณใส่รหัส> ใส่รหัสผ่าน(จะมองไม่เห็น)

    Enter keystore password:
    Re-enter new password:
  3. ใส่> มันจะถามรายละเอียดของคุณ

    What is your first and last name?
     [Unknown]:  {AB} // [Your Name / Name of Signer] 
    What is the name of your organizational unit?
     [Unknown]:  {Self} // [Your Unit Name] 
    What is the name of your organization?
     [Unknown]:  {Self} // [Your Organization Name] 
    What is the name of your City or Locality?
     [Unknown]:  {INDORE} // [Your City Name] 
    What is the name of your State or Province?
     [Unknown]:  {MP} //[Your State] 
    What is the two-letter country code for this unit?
     [Unknown]:  91
  4. ป้อน> ป้อน Y

    Is CN=AB, OU=Self, O=Self, L=INDORE, ST=MP, C=91 correct?
    [no]:  Y
  5. ป้อน> ใส่รหัสผ่านอีกครั้ง

    Generating 2,048 bit RSA key pair and self-signed certificate    (SHA256withRSA) with a validity of 10,000 days
        for: CN=AB, OU=Self, O=Self, L=INDORE, ST=MP, C=91
    Enter key password for <index> (RETURN if same as keystore password):
    Re-enter new password:

[การจัดเก็บ C: /index.keystore]

  1. และคุณก็ทำ !!!

ส่งออกเป็น Eclipse:

ส่งออกแพ็คเกจ Android ของคุณเป็น. apk ด้วยไฟล์ที่เก็บคีย์ที่คุณสร้างขึ้น

  1. คลิกขวาที่แพ็คเกจที่คุณต้องการส่งออกแล้วเลือกส่งออก ป้อนคำอธิบายรูปภาพที่นี่

  2. เลือกส่งออกแอปพลิเคชัน Android> ถัดไป ป้อนคำอธิบายรูปภาพที่นี่

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

  4. เลือกใช้ที่เก็บคีย์ที่มีอยู่> เรียกดูไฟล์. keystore> ป้อนรหัสผ่าน> ถัดไป ป้อนคำอธิบายรูปภาพที่นี่

  5. เลือก Alias> ป้อนรหัสผ่าน> ถัดไป ป้อนคำอธิบายรูปภาพที่นี่

  6. เรียกดูปลายทางของ APK> เสร็จสิ้น ป้อนคำอธิบายรูปภาพที่นี่

ใน Android Studio:

สร้างที่เก็บคีย์[.keystore/.jks]ในสตูดิโอ ...

  1. คลิกสร้าง (ALT + B) > สร้าง APK ที่ลงชื่อแล้ว ...
    ป้อนคำอธิบายรูปภาพที่นี่

  2. คลิกสร้างใหม่ .. (ALT + C)
    ป้อนคำอธิบายรูปภาพที่นี่

  3. เรียกดูเส้นทางที่เก็บคีย์ (SHIFT + ENTER)> เลือกเส้นทาง> ป้อนชื่อ> ตกลง ป้อนคำอธิบายรูปภาพที่นี่

  4. กรอกรายละเอียดเกี่ยวกับ.jks/keystoreไฟล์ ของคุณป้อนคำอธิบายรูปภาพที่นี่

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

  6. ไฟล์ของคุณ
    ป้อนคำอธิบายรูปภาพที่นี่

  7. ป้อนรหัสผ่านของ Master Studio (คุณสามารถรีเซ็ตได้หากไม่ทราบ) > ตกลง ป้อนคำอธิบายรูปภาพที่นี่

  8. เลือก * โฟลเดอร์ปลายทาง *> ประเภทการสร้าง

    release : for publish on app store
    debug : for debugging your application

    คลิกเสร็จสิ้น

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

เสร็จแล้ว !!!


28

บทช่วยสอนนี้:

http://techdroid.kbeanie.com/2010/02/sign-your-android-applications-for.html

มีประโยชน์มากสำหรับฉันในครั้งแรกที่ฉันต้องสร้างที่เก็บคีย์ มันง่าย แต่คำแนะนำใน developer.android.com สั้นเกินไปเล็กน้อย

ส่วนที่ฉันไม่แน่ใจเกี่ยวกับคือตำแหน่งที่จะบันทึกและชื่อใดที่จะให้ไฟล์ที่เก็บคีย์

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

ตั้งชื่อไฟล์ "something.keystore" ซึ่งบางสิ่งอาจเป็นสิ่งที่คุณต้องการ ฉันใช้app_name.keystoreโดยที่app_nameเป็นชื่อแอปของฉัน

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



11

ใช้คำสั่งนี้เพื่อสร้าง debug.keystore

keytool -genkey -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android -keyalg RSA -keysize 2048 -validity 10000 -dname "CN=Android Debug,O=Android,C=US"

5

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

ถ้าคุณอยู่ในโหมดดีบั๊กคุณทำสิ่งต่อไปนี้ ...
A. เปิดเทอร์มินัลแล้วพิมพ์:

keytool -exportcert -alias androiddebugkey -keystore path_to_debug_or_production_keystore -list -v

หมายเหตุ: สำหรับ Eclipse ที่เก็บคีย์ดีบักจะอยู่ที่ ~ / .android / debug.keystore ...

B. เมื่อได้รับพร้อมท์สำหรับรหัสผ่านเพียงป้อน "android" ...

C. หากคุณอยู่ในโหมด Release ให้ทำตามคำแนะนำใน ...

http://developer.android.com/tools/publishing/app-signing.html <- ลิงค์นี้จะอธิบายทุกสิ่งที่คุณจำเป็นต้องรู้


2

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

คุณสามารถเลือกที่เก็บคีย์ที่มีอยู่ของคุณหรือคุณสามารถสร้างใหม่ได้อย่างง่ายดายโดยคลิกที่สร้างที่เก็บคีย์ใหม่

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

ลิงก์นี้อธิบายวิธีการใช้งานกับ Android Studio แต่ถ้าฉันจำได้มันคล้ายกับ Eclipse

ระวัง

เมื่อคุณสร้างที่เก็บคีย์ให้เก็บไว้ในที่ปลอดภัยเพราะคุณจะต้องสร้าง APK ที่ลงชื่อใหม่

ฉันจะส่งออกโปรเจ็กต์ในสตูดิโอ Android ได้อย่างไร


2

ฉันต้องการแนะนำวิธีอัตโนมัติโดยใช้การไล่ระดับเท่านั้น

** กำหนดอย่างน้อยหนึ่ง param เพิ่มเติมสำหรับ keystore ในคำสั่งสุดท้ายเช่น country '-dname', 'c=RU'**

apply plugin: 'com.android.application'

// define here sign properties
def sPassword = 'storePassword_here'
def kAlias = 'keyAlias_here'
def kPassword = 'keyPassword_here'

android {
    ...
    signingConfigs {
        release {
            storeFile file("keystore/release.jks")
            storePassword sPassword
            keyAlias kAlias
            keyPassword kPassword
        }
    }
    buildTypes {
        debug {
            signingConfig signingConfigs.release
        }
        release {
            shrinkResources true
            minifyEnabled true
            useProguard true
            signingConfig signingConfigs.release
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    ...
}

...

task generateKeystore() {
    exec {
        workingDir projectDir
        commandLine 'mkdir', '-p', 'keystore'
    }
    exec {
        workingDir projectDir
        commandLine 'rm', '-f', 'keystore/release.jks'
    }
    exec {
        workingDir projectDir
        commandLine 'keytool', '-genkey', '-noprompt', '-keystore', 'keystore/release.jks',
            '-alias', kAlias, '-storepass', sPassword, '-keypass', kPassword, '-dname', 'c=RU',
            '-keyalg', 'RSA', '-keysize', '2048', '-validity', '10000'
    }
}

project.afterEvaluate {
    preBuild.dependsOn generateKeystore
}

สิ่งนี้จะสร้างที่เก็บคีย์บนการซิงค์และสร้างโปรเจ็กต์

> Task :app:generateKeystore UP-TO-DATE
> Task :app:preBuild UP-TO-DATE

-4

หากคุณไม่ต้องการหรือไม่สามารถใช้ Android Studio คุณสามารถใช้เครื่องมือ NPM create-android-keystore:

$ create-android-keystore quick

ผลลัพธ์ใดในที่เก็บคีย์ที่สร้างขึ้นใหม่ในไดเร็กทอรีปัจจุบัน

ข้อมูลเพิ่มเติม: https://www.npmjs.com/package/create-android-keystore

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