app-release-unsigned.apk tidak ditandatangani

199

Saya mengunduh file zip dari aplikasi Android di github dan saya mencoba menjalankannya, tetapi saya mendapatkan dialog dengan pesan ini

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

Saya menggunakan Android Studio. Apa yang harus aku lakukan?

andrew
sumber

Jawaban:

438

Jika ada yang ingin men-debug rilis build menggunakan Android Studio, ikuti langkah-langkah ini:

  1. Atur varian build ke mode rilis.

masukkan deskripsi gambar di sini

  1. Klik kanan pada aplikasi di panel navigasi kiri, klik Open Module Settings .

  2. Buka Tab Penandatanganan. Tambahkan konfigurasi penandatanganan dan isi informasi. Pilih gantungan kunci Anda juga.

masukkan deskripsi gambar di sini

  1. Buka tab Jenis Bangun . Pilih mode rilis dan atur:

-Terbaik dari kenyataan .

-Mengatur Konfigurasi ke konfigurasi . (Yang baru saja Anda buat).

masukkan deskripsi gambar di sini

Sinkronkan gradel Anda. Nikmati!

NightFury
sumber
3
Haruskah kita menetapkan Debuggable menjadi false ketika benar-benar menghasilkan APK rilis untuk prod? atau apakah studio akan melakukannya sendiri?
Ishaan Garg
7
@IshaanGarg Anda harus mengatur debuggable menjadi false saat membuat apk rilis
NightFury
1
Anda akan berpikir itu akan menjadi default untuk yang pertama dibuat bertanya-tanya mengapa tidak ... mungkin itu akan buruk bagi beberapa orang untuk menandatangani paket yang mereka tidak ingin tanda tangani ... tapi terima kasih, sobat saya lupa mengatur tipe build " Signing Config "dan hingga tangkapan layar, saya tidak ingat
CrandellWS
14
tidak ada KEBUTUHAN untuk mengatur Debuggable menjadi true , (kecuali benar-benar dimaksudkan demikian).
computingfreak
4
Anda harus menyadari bahwa setelah menyetel konfigurasi ke tipe build, semua informasi kunci Anda (termasuk kata sandi) akan muncul dalam file gradle ...
Jacob.B
95

Pastikan varian build diatur ke debug (dan tidak dirilis ) di Android Studio (periksa panel varian build ).

Jika disetel ke debug, aplikasi harus masuk secara otomatis dengan keystore debug yang dibuat secara otomatis, tanpa mengedit skrip build.

Namun Anda harus membuat dan mengkonfigurasi keystore tertentu untuk rilis.

Dokumentasi resmi, meliputi mode debug dan rilis: https://developer.android.com/tools/publishing/app-signing.html

Stéphane
sumber
53

Selalu tandatangani bangunan Anda menggunakan skrip DSL build.gradle Anda seperti ini:

    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
        }
    }
}

Jika Anda ingin memahami lebih banyak tentang sistem build Gradle yang terkait dengan Android Studio, cukup kunjungi:

Panduan Pengguna Plugin Gradle

Martin Kembalikan
sumber
Tetapi mengapa saya harus melakukan itu? Pada panduan mereka mengatakan "Secara default, ada konfigurasi debug yang diatur untuk menggunakan keystore debug, dengan kata sandi yang dikenal dan kunci default dengan kata sandi yang dikenal.". Saya tidak punya masalah dengan aplikasi lain.
andrew
Jika kata sandi Anda ok dan debug.keystore dapat dijangkau, saya tidak tahu. Masalah yang biasa saya lihat di masa lalu dengan ini adalah izin file atau izin direktori. Mungkin proyek yang Anda unduh menyimpan file lokal Android Studio yang mengarah ke debug lain keystore daripada milik Anda. Bagaimanapun, log Gradle Anda harus menunjukkan kesalahan jalur, harap sertakan log itu untuk bantuan lebih lanjut.
Martin Revert
Hmmm, tidak bekerja untuk saya juga. Tidak ada kesalahan gradle, tetapi masih mendapatkan kesalahan penandatanganan (dan itu menunjuk ke keyfile saya).
Brian Knoblauch
Hai Brian! Bisakah Anda mencoba menghapus debug.keystore Anda? Kemudian mulailah proyek boneka baru dan keystore baru harus dihasilkan. Setelah itu, buka kembali proyek Anda yang sebenarnya dan coba. Ini adalah satu-satunya hal yang bisa saya rekomendasikan jika ada yang berkomentar sebelum gagal.
Martin Revert
1
Tidak debug.keystoreada di .androidfolder? Anda mungkin ingin memberikan jalan penuh kecuali Anda memindahkannya ke proyek Anda
Gokhan Arik
36

Saya berhasil men-debug APK yang ditandatangani, Ikuti prosedur ini: -

  1. Pilih versi "rilis" di ToolBar "Build Variant"
  2. Di dalam Build.gradleuntuk set modul debuggable trueuntuk tipe build rilis
  3. Pergi ke File-> Struktur Proyek-> di bawah tab penandatanganan isi semua info-> Di bawah Flavours tab-> Pilih penandatanganan Config Anda baru saja membuat
  4. Atur breakpoints
  5. Jalankan aplikasi dalam mode debug
Mohammad Khan
sumber
Tidak bekerja untukku. Saya telah menetapkan true debuggable untuk menentukan stadium tetapi masih perlu menandatangani apk sebelum membangun.
Nishant Tanwar
18

Jika ada yang ingin men-debug dan merilis varian build terpisah menggunakan Android Studio 3.5, ikuti langkah-langkah di bawah ini: 1. Tetapkan varian build ke mode rilis.

Membangun Varian

  1. Buka File >> Struktur Proyek
  2. Pilih Modul, lalu Signing Config
  3. Klik pada ikon Plus di bawah Signing Config

Menandatangani Config

  1. Pilih bagian rilis dan Berikan Informasi Aplikasi rilis Anda lalu Terapkan dan OK.

masuk

  1. Buka tingkat aplikasi Anda build.gradledan ubah buildTypesbagian "rilis" Anda seperti di bawah Screenshot.

terakhir

Kemudian Jalankan Proyek Anda. Selamat Coding.

Shohel Rana
sumber
Dari mana Anda mendapatkan file .jks?
Marc Alexander
@MarcAlexander di sini tidak ada kode .jks menghasilkan Screenshot. Anda dapat menghasilkan file .jks dari editor studio Android.
Shohel Rana
13

menandatanganiConfigs harus sebelum 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
        }
    }
NickUnuchek
sumber
12

jika Anda ingin menjalankan aplikasi dalam mode debug

1) Lihat di Sisi Kiri bawah, di atas Favorit ada Build Variants

2) Klik pada Build Variants. Klik pada rilis dan pilih debug

itu bekerja dengan sempurna !!!

Samir Mangroliya
sumber
9

Proyek aplikasi yang Anda unduh dapat menyertakan info yang ditandatangani di file build.gradle. Jika Anda melihat kode seperti ini:

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

Anda dapat menghapusnya dan mencoba lagi.

Alex Tam
sumber
8

Untuk Gradlin Kotlin dsl

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")
    }
}
Evgenii Vorobei
sumber
6

Untuk alasan keamanan, Anda tidak dapat menginstal apk yang tidak ditandatangani di Android. Jadi, jika Anda hanya memiliki apk yang tidak ditandatangani: Anda harus menandatanganinya. Inilah cara melakukannya: tautan

Perhatikan bahwa Anda dapat menandatangani apk dengan sertifikat yang ditandatangani sendiri.

Alternatif dapat berupa:

  • untuk mengunduh apk yang ditandatangani jika tersedia.
  • untuk mengunduh sumber, kompilasi (dengan Android-Studio atau gradle atau ...). Ini akan menghasilkan beberapa apks dan salah satunya akan ditandatangani dengan kunci debug Anda (dan Anda dapat menginstalnya)
ben75
sumber
1
Saya tidak yakin saya mengerti. Saya mengunduh kode aplikasi dan saya mencoba untuk mengompilasinya dengan Android Studio ...
andrew
jadi Anda harus mengkompilasi versi yang ditandatangani. Biasanya versi yang ditandatangani dibangun pada waktu yang sama dan terletak di direktori yang sama dengan yang tidak ditandatangani.
ben75
Jika saya membuat apk yang ditandatangani berfungsi, tetapi saya tidak bisa melakukannya setiap kali saya harus menguji aplikasi. Saya kehilangan sesuatu di sini, saya hanya ingin mencoba aplikasi seperti yang saya lakukan dengan aplikasi saya sendiri ...
andrew
5

Masalah saya terpecahkan dengan mengubah varian build seperti yang disarankan oleh Stéphane, jika ada yang berjuang untuk menemukan "Build varian" seperti yang saya lakukan di sini adalah tangkapan layar di mana Anda dapat menemukannya.

masukkan deskripsi gambar di sini

yehyatt
sumber
1
Saya menghadapi masalah setelah perubahan versi varian dari Debug ke Release
Parth Patel
2

Pada bilah jendela alat pilih Build Variants Ubah Build Variant dari Release ke Debug

Bhaskar Vaddadi
sumber
2

Bagaimana saya memecahkan ini

Kesalahan ini terjadi karena Anda telah mengatur varian build Anda ke mode rilis. atur untuk membangun mode dan menjalankan proyek lagi.

Jika Anda ingin menjalankan dalam mode rilis, cukup buat apk yang sudah ditandatangani seperti yang kami lakukan secara normal saat melepaskan aplikasi

Benja
sumber
Saya hanya punya opsi "debug" dan "rilis"?
Steve Smith
0

Solusi saya adalah mengubah nama konfigurasi penandatanganan saya dari "konfigurasi" default menjadi "debug". Untuk memverifikasi, saya mengubahnya ke beberapa nama acak lainnya dan mendapatkan kesalahan lagi, dan kemudian mengubahnya kembali ke "debug" dan kesalahan itu hilang. Jadi sementara itu tampaknya buatan dan saya cenderung tidak percaya ini adalah keseluruhan cerita, cobalah solusi ini.

elliptic1
sumber
0

saya juga muncul masalah ini, dan kode saya di bawah ini

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

alasannya adalah kesalahan nama properti, seharusnya keyPassword bukan keypassword

xmliu
sumber
0

Apa yang akhirnya berhasil untuk saya, dan saya tidak tahu mengapa, adalah:

  • Pergi ke LastPass (layanan yang saya gunakan untuk menyimpan semua kata sandi saya)
  • Pilih kata sandi saya dengan meletakkan kursor di atas kata sandi dan mengklik dua kali
  • Setelah dipilih, saya tekan cmd C untuk menyalin
  • Pergi ke studi Android dan cmd V untuk menempel

Perhatikan saya memang mencoba menyalin berkali-kali dengan memilih kata sandi dengan mengklik di akhir kata sandi dan memilih kata sandi dengan menggerakkan mouse.

Ini aneh tetapi hanya bekerja dengan mengklik dua kali di atas kata sandi untuk menyalinnya.

Saya juga menggunakan metode Buka Modul Pengaturan> Menandatangani ... dijelaskan oleh @NightFury pada posting ini.

Rudy Espadas
sumber
0

menambahkan baris kode di bawah ini dalam file build.gradel bekerja untuk saya, tambahkan mereka di bawah blok buildTypes di bawah rilis seperti yang ditunjukkan

buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
    debug {
        applicationIdSuffix ".debug"
        debuggable true
    }
Gareema
sumber