ứng dụng phát hành-unsign.apk chưa được ký


199

Tôi đã tải xuống tệp zip của một ứng dụng Android trên github và tôi đang cố chạy nó, nhưng tôi nhận được một hộp thoại với thông báo này

app-release-unsigned.apk is not signed. Please configure the signing information for the selected flavor using the Project Structure dialog.

Tôi đang sử dụng Android Studio. Tôi phải làm gì bây giờ?

Câu trả lời:


437

Nếu bất cứ ai muốn gỡ lỗi bản dựng phát hành bằng Android Studio, hãy làm theo các bước sau:

  1. Đặt biến thể xây dựng thành chế độ phát hành.

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

  1. Nhấp chuột phải vào ứng dụng trong ngăn điều hướng bên trái, nhấp vào Mở Cài đặt Mô-đun .

  2. Chuyển đến Tab ký. Thêm một cấu hình ký và điền thông tin. Chọn móc khóa của bạn là tốt.

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

  1. Chuyển đến tab Build Type . Chọn chế độ phát hành và đặt:

-Debuggable thành sự thật .

-Đăng cấu hình cho cấu hình . (Người bạn vừa tạo).

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

Đồng bộ hóa lớp của bạn. Thưởng thức!


3
Chúng ta có nên đặt Debuggable thành false khi thực sự tạo APK phát hành cho prod không? hoặc studio sẽ tự làm điều đó?
Ishaan Garg

7
@IshaanGarg Bạn nên đặt gỡ lỗi thành false trong khi tạo apk phát hành
NightFury

1
Bạn sẽ nghĩ nó sẽ mặc định là cái đầu tiên được tạo ra tự hỏi tại sao nó không ... có thể sẽ không tốt cho một số người ký các gói mà họ không muốn ký ... nhưng cảm ơn, tôi đã quên đặt loại bản dựng " Ký cấu hình "và cho đến khi chụp màn hình, tôi không nhớ
CrandellWS

14
KHÔNG CẦN để thiết debuggable để đúng , (trừ khi thực sự có ý định như vậy).
tính toán

4
Mặc dù vậy, bạn nên lưu ý rằng sau khi đặt cấu hình cho loại bản dựng, tất cả thông tin khóa của bạn (bao gồm cả mật khẩu) sẽ xuất hiện trong tệp lớp ...
Jacob.B

95

Đảm bảo biến thể bản dựng được đặt thành gỡ lỗi (và không phát hành ) trong Android Studio (kiểm tra bảng biến thể bản dựng ).

Nếu được đặt thành gỡ lỗi, nó sẽ tự động ký ứng dụng với kho khóa gỡ lỗi được tạo tự động, mà không cần chỉnh sửa tập lệnh xây dựng.

Tuy nhiên, bạn sẽ cần tạo và cấu hình một kho khóa cụ thể để phát hành.

Tài liệu chính thức, bao gồm các chế độ gỡ lỗi và phát hành: https://developer.android.com/tools/publishing/app-signing.html


53

Luôn ký tên vào bản dựng của bạn bằng tập lệnh DSL build.gradle của bạn như thế này:

    android {
    signingConfigs {
        debug {
            storeFile file("debug.keystore")
        }

        myConfig {
            storeFile file("other.keystore")
            storePassword "android"
            keyAlias "androidotherkey"
            keyPassword "android"
        }
    }

    buildTypes {
        bar {
            debuggable true
            jniDebugBuild true
            signingConfig signingConfigs.debug
        }
        foo {
            debuggable false
            jniDebugBuild false
            signingConfig signingConfigs.myConfig
        }
    }
}

Nếu bạn muốn hiểu thêm một chút về hệ thống xây dựng Gradle liên quan đến Android Studio, chỉ cần ghé thăm:

Hướng dẫn sử dụng Plugin Gradle


Nhưng tại sao tôi phải làm điều đó? Trên hướng dẫn, họ nói "Theo mặc định, có một cấu hình gỡ lỗi được thiết lập để sử dụng kho khóa gỡ lỗi, với mật khẩu đã biết và khóa mặc định có mật khẩu đã biết.". Tôi không có bất kỳ vấn đề với các ứng dụng khác.
andrew

Nếu mật khẩu của bạn ổn và debug.keystore có thể truy cập được, tôi không biết. Các vấn đề thông thường tôi thấy trong quá khứ với điều này là quyền tập tin hoặc quyền thư mục. Có thể dự án bạn đã tải xuống đang giữ các tệp cục bộ của Android Studio trỏ đến kho khóa gỡ lỗi khác so với của bạn. Trong mọi trường hợp, nhật ký Gradle của bạn phải hiển thị lỗi đường dẫn, vui lòng bao gồm nhật ký đó để được trợ giúp thêm.
Martin hoàn nguyên

Hmmm, cũng không làm việc cho tôi. Không có lỗi lớp, nhưng vẫn nhận được lỗi ký (và nó được chỉ vào keyfile của tôi).
Brian Knoblauch

Chao Brian! Bạn có thể thử xóa debug.keystore không? Sau đó bắt đầu một dự án giả mới và một kho khóa mới phải được tạo. Sau đó, mở lại dự án thực tế của bạn và thử. Đó là điều duy nhất tôi có thể đề nghị nếu có bất cứ điều gì khác nhận xét trước khi thất bại.
Martin hoàn nguyên

1
Không debug.keystorenằm trong .androidthư mục? Bạn có thể muốn đưa ra đường dẫn đầy đủ trừ khi bạn chuyển nó vào dự án của mình
Gokhan Arik

36

Tôi đã có thể gỡ lỗi thành công APK đã ký, Thực hiện theo quy trình này: -

  1. Chọn phiên bản "phát hành" trong ToolBar "Build Variant"
  2. Trong Build.gradlemô-đun được đặt debuggable truecho loại xây dựng phát hành
  3. Chuyển đến Tệp-> Cấu trúc dự án-> bên dưới tab ký tên điền tất cả thông tin-> Dưới tab Hương vị-> Chọn ký cấu hình Bạn vừa tạo
  4. Đặt điểm dừng
  5. Chạy ứng dụng ở chế độ gỡ lỗi

Không làm việc cho tôi. Tôi đã đặt gỡ lỗi đúng cho biến thể dàn dựng nhưng vẫn cần phải ký apk trước khi xây dựng.
Nishant Tanwar

18

Nếu bất cứ ai muốn gỡ lỗi và phát hành biến thể xây dựng riêng bằng Android Studio 3.5, hãy làm theo các bước dưới đây: 1. Đặt biến thể xây dựng thành chế độ phát hành.

Xây dựng biến thể

  1. Đi đến Tệp >> Cấu trúc dự án
  2. Chọn mô-đun, sau đó ký cấu hình
  3. Nhấp vào biểu tượng Plus bên dưới Cấu hình ký

Ký cấu hình

  1. Chọn phần phát hành và Cung cấp Thông tin ứng dụng phát hành của bạn sau đó Áp dụng và OK.

đăng nhập

  1. Chuyển đến cấp ứng dụng của bạn build.gradlevà thay đổi phần buildTypes"phát hành" của bạn như bên dưới Ảnh chụp màn hình.

sau cùng

Sau đó chạy dự án của bạn. Chúc mừng mã hóa.


Bạn lấy tệp .jks từ đâu?
Marc Alexander

@MarcAlexander ở đây không có mã .jks nào tạo Ảnh chụp màn hình. Bạn có thể tạo tệp .jks từ trình chỉnh sửa studio Android.
Shohel Rana

13

SignConfigs nên có trước buildTypes

signingConfigs {
        debug {
            storeFile file("debug.keystore")
        }

        myConfig {
            storeFile file("other.keystore")
            storePassword "android"
            keyAlias "androidotherkey"
            keyPassword "android"
        }
    }

    buildTypes {
        bar {
            debuggable true
            jniDebugBuild true
            signingConfig signingConfigs.debug
        }
        foo {
            debuggable false
            jniDebugBuild false
            signingConfig signingConfigs.myConfig
        }
    }

12

nếu bạn muốn chạy ứng dụng ở chế độ gỡ lỗi

1) Nhìn vào phía dưới bên trái, phía trên Mục ưa thích có Biến thể xây dựng

2) Nhấp vào Biến thể xây dựng. Bấm vào phát hành và chọn gỡ lỗi

nó hoạt động hoàn hảo !!!


9

Dự án ứng dụng bạn đã tải xuống có thể bao gồm thông tin đã ký trong tệp build.gradle. Nếu bạn thấy các mã như thế này:

buildTypes {
    debug {
        signingConfig signingConfigs.release
    }
    release {
        signingConfig signingConfigs.release
    }
}

bạn có thể xóa chúng và thử lại.


8

Đối với lớp dlin Kotlin

signingConfigs {
    create("releaseConfig") {
        storeFile = file("your keystore file path")
        storePassword = "storePassword"
        keyAlias = "keyAlias"
        keyPassword = "keyPassword"
    }
}
buildTypes {
    getByName("release") {
        signingConfig = signingConfigs.getByName("releaseConfig")
        isMinifyEnabled = true
        isShrinkResources = true
        proguardFiles(getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro")
    }
}

6

Vì lý do bảo mật, bạn không thể cài đặt apk không dấu trên Android. Vì vậy, nếu bạn chỉ có apk không dấu: bạn phải ký tên. Đây là cách để làm điều đó: liên kết

Lưu ý rằng bạn có thể ký apk bằng chứng chỉ tự ký.

Một sự thay thế có thể là:

  • để tải xuống apk đã ký nếu có sẵn.
  • để tải xuống các nguồn, biên dịch chúng (với Android-Studio hoặc gradle hoặc ...). Nó sẽ tạo ra nhiều apks và một trong số chúng sẽ được ký bằng khóa gỡ lỗi của bạn (và do đó bạn sẽ có thể cài đặt nó)

1
Tôi không chắc là tôi hiểu. Tôi đã tải về zip của mã của ứng dụng và tôi đang cố gắng để biên dịch nó với Android Studio ...
andrew

vì vậy bạn phải biên dịch một phiên bản đã ký. Thông thường phiên bản đã ký được xây dựng cùng một lúc và nằm trong cùng thư mục với phiên bản chưa ký.
ben75

Nếu tôi tạo apk đã ký thì nó hoạt động, nhưng tôi không thể làm điều đó mỗi lần tôi phải kiểm tra ứng dụng. Tôi đang thiếu một cái gì đó ở đây, tôi chỉ muốn thử ứng dụng như tôi làm với các ứng dụng của riêng tôi ...
andrew

5

Vấn đề của tôi đã được giải quyết bằng cách thay đổi biến thể xây dựng theo đề xuất của Stéphane, nếu bất kỳ ai đang vật lộn để tìm "Biến thể xây dựng" như tôi đã làm ở đây là một ảnh chụp màn hình nơi bạn có thể tìm thấy nó.

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


1
Tôi đang gặp vấn đề sau khi biến thể xây dựng thay đổi từ Gỡ lỗi sang Phát hành
Parth Patel

2

Trong thanh cửa sổ công cụ, chọn Biến Biến Xây dựng Thay đổi Biến Biến từ Phát hành sang Gỡ lỗi


2

Làm thế nào tôi giải quyết điều này

Lỗi này xảy ra do bạn đã đặt các biến thể xây dựng của mình thành chế độ phát hành. Đặt nó vào chế độ xây dựng và chạy lại dự án.

Nếu bạn muốn chạy trong chế độ phát hành, chỉ cần tạo apk đã ký theo cách chúng tôi làm bình thường khi phát hành ứng dụng


Tôi chỉ có tùy chọn "gỡ lỗi" và "phát hành"?
Steve Smith

0

Giải pháp của tôi là thay đổi tên cấu hình ký của tôi từ "config" mặc định thành "debug". Để xác minh, tôi đã đổi nó thành một số tên ngẫu nhiên khác và lại gặp lỗi, sau đó đổi lại thành "gỡ lỗi" và lỗi đã biến mất. Vì vậy, trong khi nó có vẻ giả tạo và tôi có xu hướng không tin đây là toàn bộ câu chuyện, hãy thử giải pháp này.


0

tôi cũng xuất hiện vấn đề này và mã của tôi dưới đây

        storeFile file(properties.getProperty("filepath"))
        storePassword properties.getProperty("keypassword")
        keyAlias properties.getProperty("keyAlias")
        keyPassword properties.getProperty("keypassword")

Lý do là lỗi tên thuộc tính, nó phải là keyPassword chứ không phải keywordword


0

Điều cuối cùng đã làm việc cho tôi, và tôi không biết tại sao, là:

  • Đã đi đến LastPass (dịch vụ tôi sử dụng để giữ tất cả mật khẩu của mình)
  • Chọn mật khẩu của tôi bằng cách đặt con trỏ lên trên mật khẩu và nhấp đúp
  • Sau khi chọn tôi nhấn cmd C để sao chép
  • Đã đi học Android và cmd V để dán

Lưu ý rằng tôi đã cố gắng sao chép nhiều lần bằng cách chọn mật khẩu bằng cách nhấp vào cuối mật khẩu và chọn mật khẩu bằng cách di chuyển chuột.

Nó là lạ nhưng nó chỉ hoạt động bằng cách nhấp đúp vào đầu mật khẩu để sao chép nó.

Ngoài ra, tôi đã sử dụng phương pháp Cài đặt mô-đun mở> Ký kết ... được giải thích bởi @NightFury trên bài đăng này.


0

thêm dòng mã bên dưới vào tệp build.gradel làm việc cho tôi, thêm chúng dưới khối buildTypes bên dưới phát hành như được hiển thị

buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
    debug {
        applicationIdSuffix ".debug"
        debuggable true
    }
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.