Làm thế nào tôi có thể tạo một kho khóa?


538

Các bước để tạo một kho khóa cho Android là gì?

Tôi cần sử dụng google maps trong ứng dụng của mình và tôi không biết mình đã bỏ lỡ những bước nào. Vui lòng cung cấp cho tôi các bước chi tiết cụ thể (tôi không hiểu nó từ hướng dẫn).


Bạn đã làm gì chưa, hay bạn đang tìm kiếm đề xuất để bắt đầu?
ATK

2
Đó là những bước sau tôi đã thực hiện: nhật thực 1-cài đặt 2- cài đặt jdk 3- cài đặt sdk 4- cài đặt plugin android. tôi đã không quản lý để thực thi lệnh trong win cmd, lệnh: $ keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyache RSA -keyize 2048 -valid 10000 (tạo khóa riêng). cảm ơn
user482762

@ user482762: câu trả lời của CommonsWare có hiệu quả với bạn không? Tại sao bạn không quản lý để thực hiện cmd win?
ATK

Câu trả lời của CommonsWare không phù hợp với tôi, Khi tôi cố gắng thực thi các lệnh trong cmd, tôi nhận được một lỗi massage: "$ không được nhận dạng là một lệnh nội bộ hoặc bên ngoài, chương trình có thể hoạt động hoặc tệp bó". cảm ơn sự giúp đỡ của bạn
user482762

Ah! Bạn không muốn thực sự gõ $. Trên Windows, khi bạn sử dụng dòng lệnh (ứng dụng cmd), lời nhắc nhập thường trông giống như DRIVE: / TRỰC TIẾP>, như "c: \". Trên unix, lời nhắc thường trông giống như "$" hoặc chỉ ">". "$" Trong lệnh có nghĩa là đại diện cho dấu nhắc đầu vào, không phải là một phần của lệnh. Hãy thử chạy keytool với tất cả các đối số, không có $.
ATK

Câu trả lời:


545

Để trả lời câu hỏi trong tiêu đề, bạn tạo một kho lưu trữ khóa với tiện ích Java Keytool đi kèm với bất kỳ phân phối JDK tiêu chuẩn nào và có thể được đặt tại %JAVA_HOME%\bin. Trên Windows, điều này thường là như vậy C:\Program Files\Java\jre7\bin.

Vì vậy, trên Windows, mở một cửa sổ lệnh và chuyển sang thư mục đó và nhập một lệnh như thế này

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

Keytool nhắc bạn cung cấp mật khẩu cho kho khóa, cung cấp các trường Tên khác biệt và sau đó là mật khẩu cho khóa của bạn. Sau đó, nó tạo kho khóa dưới dạng một tệp có tên my-release-key.keystore trong thư mục bạn đang ở. Kho khóa và khóa được bảo vệ bởi mật khẩu bạn đã nhập. Kho khóa chứa một khóa duy nhất, có giá trị trong 10000 ngày. Bí danh là một tên mà bạn - sẽ sử dụng sau này, để tham khảo kho khóa này khi ký ứng dụng của bạn.

Để biết thêm thông tin về Keytool, hãy xem tài liệu tại: http://docs.oracle.com/javase/6/docs/technotes/tools/windows/keytool.html

và để biết thêm thông tin về việc ký các ứng dụng Android tại đây: http://developer.android.com/tools/publishing/app-signing.html


6
Tiếng hét tốt khi xác định -keyize 2048 thay vì mặc định 1024 cá nhân Tôi hiện đang sử dụng 4096
scottyab

9
để biết thông tin, trong trường hợp của tôi, tôi cần mở cửa sổ lệnh với quyền quản trị
Intuitisoft

Điều này mang lại cho tôi: E / TokenRequestor: Bạn đã cấu hình sai liên quan đến OAuth2, vui lòng kiểm tra. Lỗi chi tiết: UNREGISTERED_ON_API_CONSOLE Tôi đã tạo chứng chỉ bằng cách nhập SHA1 của mình vào bảng điều khiển API.
Rohan Taneja

Liên kết trực tiếp đến tài liệu về việc tạo kho khóa thủ công: developer.android.com/studio/publish/
mẹo

Tôi đã sử dụng lệnh này để đặt 2 mật khẩu để bạn bỏ qua một số lời nhắc : keytool -genkey -v -keystore debug.keystore -storepass android -alias android -keypass android -keyalg RSA -keysize 2048 -validity 10000. Sau đó, để tạo SHA-1 mà bạn cần đặt trong Firebase, hãy thực hiện:keytool -list -v -keystore debug.keystore -alias android -storepass android -keypass android
Albert Vila Calvo

158

Đăng ký ứng dụng của bạn trong Android Studio

Để đăng nhập ứng dụng của bạn ở chế độ phát hành trong Android Studio, hãy làm theo các bước sau:

1- Trên thanh menu, nhấp Build> Tạo APK đã ký.


2-Trên cửa sổ Tạo Trình hướng dẫn APK đã ký, bấm Tạo mới để tạo kho khóa mới. Nếu bạn đã có một kho khóa, hãy đến bước 4.


3- Trên cửa sổ Cửa hàng khóa mới, cung cấp thông tin bắt buộc như trong hình Khóa của bạn phải có giá trị ít nhất 25 năm, để bạn có thể ký các bản cập nhật ứng dụng với cùng khóa thông qua tuổi thọ của ứng dụng.

nhập mô tả hình ảnh ở đây

4- Trên cửa sổ Tạo Trình hướng dẫn APK đã ký, chọn kho khóa, khóa riêng và nhập mật khẩu cho cả hai. Sau đó bấm vào Tiếp theo.nhập mô tả hình ảnh ở đây

5- Trên cửa sổ tiếp theo, chọn điểm đến cho APK đã ký và nhấp vào Kết thúc. nhập mô tả hình ảnh ở đây

giới thiệu

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


2
Mặc dù câu trả lời này là chính xác, nhưng nó chỉ thuận tiện nếu bạn đã cài đặt studio android.
Seph Reed

98

Tôi đã điên tìm cách để tạo ra một .keystore sử dụng trong vỏ một dòng lệnh đơn , vì vậy tôi có thể chạy nó từ một ứng dụng khác. Đây là cách:

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 là một định danh duy nhất cho ứng dụng trong .keystore

    • cn tên đầy đủ của người hoặc tổ chức tạo ra .keystore
    • ou Đơn vị tổ chức tạo ra dự án, một bộ phận của Tổ chức tạo ra dự án. Ví dụ. android.google.com
    • o Tổ chức chủ sở hữu của toàn bộ dự án. Phạm vi của nó cao hơn ou . Vd: google.com
    • c Mã quốc gia ngắn. Vd: Đối với Hoa Kỳ là "US"
  • bí danh Định danh của ứng dụng dưới dạng một thực thể duy nhất bên trong .keystore (nó có thể có nhiều)

  • mật khẩu keypass để bảo vệ bí danh cụ thể đó.
  • Đường dẫn kho khóa nơi tệp .keystore sẽ được tạo (phần mở rộng tiêu chuẩn thực sự .ks)
  • storepass Mật khẩu để bảo vệ toàn bộ nội dung .keystore .
  • tính hợp lệ Amout of days ứng dụng sẽ hợp lệ với .keystore này

Nó hoạt động thực sự tốt đối với tôi, nó không yêu cầu bất cứ điều gì khác trong bảng điều khiển, chỉ tạo tệp. Để biết thêm thông tin, xem keytool - Công cụ quản lý khóa và chứng chỉ .


Tôi chưa bao giờ có loại lỗi đó nhưng hãy thử thực hiện liên lạc /path/file.keystorevà chỉ ra rằng với tham số storepass.
EliuX

làm việc tuyệt vời thay đổi duy nhất của tôi là tôi sử dụng phần mở rộng .jks cho Android
Adam Mendoza

2
jksphần mở rộng kho khóa chính thức cho java nói chung, tuy nhiên, đây keystorephần mở rộng được khuyến nghị sử dụng cho các ứng dụng Android thay thế.
EliuX

1
@eliasbagley đó là vì lệnh -storepass như được viết ở trên bắt đầu trên một dòng khác. Viết mọi thứ trên một dòng duy nhất và nó sẽ ổn thôi.
tormuto

82

Tạo tệp kho khóa từ dòng lệnh:

  1. Dòng lệnh mở:

    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> Nó sẽ nhắc bạn nhập mật khẩu> nhập mật khẩu (nó sẽ ẩn)

    Enter keystore password:
    Re-enter new password:
  3. Nhập> Nó sẽ hỏi chi tiết của bạn.

    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. Nhập> Nhập Y

    Is CN=AB, OU=Self, O=Self, L=INDORE, ST=MP, C=91 correct?
    [no]:  Y
  5. Nhập> Nhập lại mật khẩu.

    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:

[Lưu trữ C: /index.keystore]

  1. Và bạn đang làm !!!

Xuất trong Eclipse:

Xuất gói Android của bạn sang .apk với tệp kho khóa đã tạo của bạn

  1. Nhấp chuột phải vào Gói bạn muốn xuất và chọn xuất nhập mô tả hình ảnh ở đây

  2. Chọn Xuất ứng dụng Android> Tiếp theo nhập mô tả hình ảnh ở đây

  3. Kế tiếp
    nhập mô tả hình ảnh ở đây

  4. Chọn Sử dụng Kho khóa hiện có> Duyệt tệp .keystore> nhập mật khẩu> Tiếp theo nhập mô tả hình ảnh ở đây

  5. Chọn Bí danh> nhập mật khẩu> Tiếp theo nhập mô tả hình ảnh ở đây

  6. Duyệt APK đích> Kết thúc nhập mô tả hình ảnh ở đây

Trong Studio Android:

Tạo kho khóa [.keystore/.jks]trong studio ...

  1. Nhấp vào Xây dựng (ALT + B) > Tạo APK đã ký ...
    nhập mô tả hình ảnh ở đây

  2. Nhấp vào Tạo mới .. (ALT + C)
    nhập mô tả hình ảnh ở đây

  3. Duyệt đường dẫn lưu trữ khóa (SHIFT + ENTER)> Chọn đường dẫn> Nhập tên> OK nhập mô tả hình ảnh ở đây

  4. Điền chi tiết về .jks/keystoretập tin của bạnnhập mô tả hình ảnh ở đây

  5. Kế tiếp
    nhập mô tả hình ảnh ở đây

  6. Tập tin của bạn
    nhập mô tả hình ảnh ở đây

  7. Nhập mật khẩu Studio Master (Bạn có thể đặt lại nếu bạn không biết) > OK nhập mô tả hình ảnh ở đây

  8. Chọn * Thư mục đích *> Kiểu xây dựng

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

    Nhấp vào Kết thúc

    nhập mô tả hình ảnh ở đây

Làm xong !!!


28

Hướng dẫn này:

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

rất hữu ích cho tôi khi lần đầu tiên tôi phải tạo một kho khóa. Nó đơn giản nhưng các hướng dẫn trên developer.android.com hơi ngắn gọn.

Phần tôi không chắc chắn là lưu ở đâu và tên nào để cung cấp tệp kho khóa .

Tôi có vẻ như không quan trọng bạn đặt nó ở đâu chỉ cần đảm bảo giữ an toàn và giữ một số bản sao lưu. Tôi chỉ cần đặt nó trong thư mục ứng dụng của tôi

Đặt tên cho tệp là "Something.keystore" trong đó một cái gì đó có thể là bất cứ điều gì bạn muốn. Tôi đã sử dụng app_name.keystore , trong đó app_name là tên của ứng dụng của tôi.

Phần tiếp theo là những gì để đặt tên bí danh. Một lần nữa, điều đó dường như không quan trọng nên một lần nữa tôi lại sử dụng app_name . Giữ mật khẩu giống như bạn đã sử dụng trước đây. Điền vào phần còn lại của các lĩnh vực và bạn đã hoàn tất.


13

Tôi đã làm theo hướng dẫn này để tạo kho khóa gỡ lỗi.

Lệnh là:

keytool -genkeypair -alias androiddebugkey -keypass android -keystore debug.keystore -storepass android -dname "CN=Android Debug,O=Android,C=US" -validity 9999

11

Sử dụng lệnh này để tạo 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

Điều đầu tiên cần biết là bạn đang ở chế độ Gỡ lỗi hoặc Phát hành. Từ trang web dành cho nhà phát triển "Có hai chế độ xây dựng: chế độ gỡ lỗi và chế độ phát hành. Bạn sử dụng chế độ gỡ lỗi khi bạn đang phát triển và thử nghiệm ứng dụng của mình. Bạn sử dụng chế độ phát hành khi bạn muốn xây dựng phiên bản phát hành của ứng dụng mà bạn có thể phân phối trực tiếp tới người dùng hoặc xuất bản trên một thị trường ứng dụng như Google Play. "

Nếu bạn đang ở chế độ gỡ lỗi, bạn làm như sau ...
A. Mở terminal và gõ:

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

Lưu ý: Đối với Eclipse, kho khóa gỡ lỗi thường nằm ở ~ / .android / debug.keystore ...

B. khi được nhắc nhập mật khẩu, chỉ cần nhập "android" ...

C. Nếu bạn đang ở chế độ Phát hành, hãy làm theo hướng dẫn trên ...

http://developer.android.com/tools/publishing/app-signing.html <- liên kết này giải thích khá nhiều mọi thứ bạn cần biết.


2

Bạn có thể tạo kho khóa của mình bằng cách xuất APK đã ký. Khi bạn sẽ cố gắng xuất / xây dựng APK đã ký, nó sẽ yêu cầu kho khóa.

Bạn có thể chọn kho khóa hiện tại của mình hoặc bạn có thể dễ dàng tạo một kho khóa mới bằng cách nhấp vào tạo kho khóa mới

Ở đây một liên kết rất hữu ích và được giải thích rõ về cách tạo kho khóa của bạn và tạo APK đã ký

Liên kết này đã giải thích cách thực hiện với Android Studio, nhưng nếu tôi nhớ, nó khá giống trên Eclipse

COI CHỪNG

Khi bạn tạo kho khóa của mình, hãy giữ nó ở nơi an toàn vì bạn sẽ cần nó để tạo lại APK đã ký mới.

Làm cách nào để xuất một dự án trong studio Android?


2

Tôi muốn đề xuất cách tự động chỉ với lớp

** Xác định ít nhất một tham số bổ sung cho kho khóa trong lệnh cuối cùng, ví dụ: 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
}

Điều này sẽ tạo kho khóa trên đồng bộ hóa và xây dựng dự án

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

-4

Nếu bạn không muốn hoặc không thể sử dụng Android Studio, bạn có thể sử dụng công cụ NPM tạo kho khóa android:

$ create-android-keystore quick

Kết quả là một kho khóa mới được tạo trong thư mục hiện tại.

Thông tin thêm: https://www.npmjs.com/package/create-android-keystore

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.