app-release-unsigned.apk nie jest podpisany


213

Pobrałem plik zip aplikacji na Androida na github i próbuję ją uruchomić, ale pojawia się okno dialogowe z tą wiadomością

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

Używam Android Studio. Co powinienem zrobić?

Odpowiedzi:


451

Jeśli ktoś chce debugować kompilację wydania przy użyciu Android Studio, wykonaj następujące kroki:

  1. Ustaw wariant kompilacji na tryb wydania.

wprowadź opis obrazu tutaj

  1. Kliknij prawym przyciskiem myszy aplikację w lewym panelu nawigacyjnym, kliknij opcję Otwórz ustawienia modułu .

  2. Przejdź do zakładki Podpisywanie. Dodaj konfigurację podpisywania i podaj informacje. Wybierz również swój pęku kluczy.

wprowadź opis obrazu tutaj

  1. Przejdź do zakładki Build Type . Wybierz tryb wyzwalania i ustaw:

-Debuggable na true .

-Podpisywanie Config do pliku config . (Ten, który właśnie utworzyłeś).

wprowadź opis obrazu tutaj

Zsynchronizuj swoją ocenę. Cieszyć się!


3
Czy powinniśmy ustawić Debuggable na false, gdy faktycznie generujemy pakiet APK dla wersji produkcyjnej? czy studio zrobi to samo?
Ishaan Garg

8
@IshaanGarg Powinieneś ustawić debuggowalny na false podczas tworzenia wersji apk
NightFury

1
Można by pomyśleć, że domyślnie byłby to pierwszy utworzony, zastanawiam się, dlaczego tak nie jest ... może byłoby źle, gdyby niektórzy podpisywali pakiety, których nie chcieli podpisywać ... ale dzięki, stary zapomniałem ustawić typ kompilacji " Podpisywanie konfiguracji ”i aż do zrzutu ekranu nie pamiętałem
CrandellWS,

14
NIE ma POTRZEBY ustawiania Debuggable na true (chyba że jest to naprawdę zamierzone).
computingfreak

4
Powinieneś jednak być świadomy, że po ustawieniu konfiguracji na typ kompilacji, wszystkie informacje o twoich kluczach (w tym hasła) pojawią się w pliku gradle ...
Jacob.B

99

Upewnij się, że wariant kompilacji jest ustawiony na debugowanie (a nie wydanie ) w Android Studio (sprawdź panel wariantów kompilacji ).

Jeśli ustawione na debugowanie, powinno automatycznie podpisywać aplikację przy użyciu automatycznie generowanego magazynu kluczy debugowania, bez edytowania skryptów kompilacji.

Jednak do wydania konieczne będzie utworzenie i skonfigurowanie określonego magazynu kluczy.

Oficjalna dokumentacja obejmująca tryby debugowania i wydania: https://developer.android.com/tools/publishing/app-signing.html


55

Zawsze podpisuj kompilację za pomocą skryptu DSL build.gradle w następujący sposób:

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

Jeśli chcesz dowiedzieć się więcej na temat systemu kompilacji Gradle związanego z Android Studio, po prostu odwiedź:

Podręcznik użytkownika wtyczki Gradle


Ale dlaczego mam to robić? W przewodniku jest napisane: „Domyślnie istnieje konfiguracja debugowania, która jest skonfigurowana do korzystania z magazynu kluczy debugowania, ze znanym hasłem i domyślnym kluczem ze znanym hasłem.”. Nie mam żadnych problemów z innymi aplikacjami.
andrew

Jeśli twoje hasło jest poprawne i debug.keystore jest osiągalny, nie wiem. Typowe problemy, które widziałem w przeszłości, to uprawnienia do plików lub uprawnienia do katalogu. Być może pobrany projekt zachowuje lokalne pliki Android Studio, co wskazuje na inny magazyn kluczy debugowania niż twój. W każdym przypadku dziennik Gradle musi pokazywać błąd ścieżki, dołącz ten dziennik, aby uzyskać dodatkową pomoc.
Martin Cofnij

Hmmm, dla mnie też nie działa. Brak błędów gradle, ale nadal pojawia się błąd podpisywania (i jest on wskazany w moim pliku klucza).
Brian Knoblauch

Cześć Brian! Czy mógłbyś spróbować usunąć swój debug.keystore? Następnie uruchom nowy projekt fikcyjny i należy wygenerować nowy magazyn kluczy. Następnie ponownie otwórz swój projekt i spróbuj. To jedyna rzecz, którą mogę polecić, jeśli coś, co zostało wcześniej skomentowane, zawodzi.
Martin Cofnij

1
Nie debug.keystoreznajduje się w .androidfolderze? Możesz podać pełną ścieżkę, chyba że przeniesiesz ją do swojego projektu
Gokhan Arik

36

Udało mi się zdebugować podpisany plik APK, wykonaj tę procedurę: -

  1. Wybierz wersję „wydanie” na pasku narzędzi „Build Variant”
  2. W Build.gradlezestawie modułowymdebuggable true na typ kompilacji wydania
  3. Idź do Plik-> Struktura projektu-> pod zakładką podpisywania wypełnij wszystkie informacje-> Pod zakładką Smaki-> Wybierz konfigurację podpisywania, którą właśnie utworzyłeś
  4. Ustaw punkty przerwania
  5. Uruchom aplikację w trybie debugowania

Nie działa dla mnie. Ustawiłem możliwość debugowania na wartość true dla wariantu przejściowego, ale nadal muszę podpisać apk przed kompilacją.
Nishant Tanwar

28

Jeśli ktoś chce debugować i wydać oddzielny wariant kompilacji przy użyciu Android Studio 3.5, wykonaj poniższe czynności: 1. Ustaw wariant kompilacji na tryb wydania.

Zbuduj wariant

  1. Idź do Plik >> Struktura projektu
  2. Wybierz opcję Moduły, a następnie Konfiguracja podpisu
  3. Kliknij ikonę Plus w sekcji Konfiguracja podpisu

Konfiguracja podpisu

  1. Wybierz sekcję wersji i podaj informacje o wersji aplikacji, a następnie Zastosuj i OK.

Zaloguj się

  1. Przejdź do poziomu swojej aplikacji build.gradlei zmień buildTypessekcję> „wydanie”, jak na poniższym Zrzucie ekranu.

finał

Następnie uruchom swój projekt. Miłego kodowania.


Skąd masz plik .jks?
Marc Alexander

@MarcAlexander tutaj nie ma żadnego kodu .jks generującego zrzut ekranu. Możesz wygenerować plik .jks z edytora Android Studio.
Shohel Rana

15

signingConfigs powinno znajdować się przed 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
        }
    }

14

jeśli chcesz uruchomić aplikację w trybie debugowania

1) Spójrz na dół po lewej stronie, nad Ulubionymi znajdują się warianty budowy

2) Kliknij opcję Warianty budowania. Kliknij zwolnienie i wybierz debugowanie

działa idealnie !!!


11

Pobrany projekt aplikacji może zawierać podpisane informacje w pliku build.gradle. Jeśli widziałeś takie kody:

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

możesz je usunąć i spróbować ponownie.


11

Dla gradle 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")
    }
}

8

Mój problem został rozwiązany przez zmianę wariantu kompilacji, zgodnie z sugestią Stéphane'a, jeśli ktoś miał problem ze znalezieniem „wariantów kompilacji”, tak jak ja tutaj, jest zrzut ekranu, na którym można go znaleźć.

wprowadź opis obrazu tutaj


1
Mam problemy po zmianie wariantu kompilacji z debugowania na wydanie
Parth Patel

6

Ze względów bezpieczeństwa nie można zainstalować niepodpisanego pliku APK na Androida. Więc jeśli masz tylko niepodpisany apk: musisz go podpisać. Oto jak to zrobić: link

Pamiętaj, że możesz podpisać plik APK certyfikatem z podpisem własnym.

Alternatywą może być:

  • aby pobrać podpisany plik APK, jeśli jest dostępny.
  • aby pobrać źródła, skompiluj je (z Android-Studio lub gradle lub ...). Wytworzy wiele apek, a jeden z nich zostanie podpisany twoim kluczem debugowania (i będziesz mógł go zainstalować)

1
Nie jestem pewien, czy rozumiem. Ściągnąłem zip kodu aplikacji i próbuję go skompilować w Android Studio ...
andrew

więc musisz skompilować podpisaną wersję. Zazwyczaj podpisana wersja jest budowana w tym samym czasie i znajduje się w tym samym katalogu, co wersja bez znaku.
ben75

Jeśli wygeneruję podpisany plik APK, działa, ale nie mogę tego zrobić za każdym razem, gdy muszę testować aplikację. Coś mi tu brakuje, po prostu chcę wypróbować aplikację, tak jak robię to z własnymi aplikacjami ...
andrew


2

Jak to rozwiązałem

Ten błąd występuje, ponieważ ustawiłeś warianty kompilacji na tryb wydania. ustaw go w tryb kompilacji i ponownie uruchom projekt.

Jeśli chcesz działać w trybie wydania, po prostu wygeneruj podpisany plik APK w taki sam sposób, w jaki robimy to normalnie podczas udostępniania aplikacji


Mam tylko opcje „debugowania” i „wydania”?
Steve Smith

0

Moim rozwiązaniem była zmiana nazwy mojej konfiguracji podpisywania z domyślnej „config” na „debug”. Aby to sprawdzić, zmieniłem go na inną losową nazwę i ponownie otrzymałem błąd, a następnie zmieniłem go z powrotem na „debugowanie” i błąd zniknął. Więc chociaż wydaje mi się to sztuczne i nie wierzę, że to wszystko, wypróbuj to rozwiązanie.


0

pojawia się również ten problem, a mój kod poniżej

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

przyczyną jest błąd nazwy właściwości, powinno to być hasło-klucz, a nie hasło-klucz


0

To, co w końcu zadziałało i nie mam pojęcia dlaczego, to:

  • Udałem się do LastPass (usługa, której używam do przechowywania wszystkich moich haseł)
  • Wybierz moje hasło, umieszczając kursor na górze hasła i klikając dwukrotnie
  • Po wybraniu naciskam cmd C, aby skopiować
  • Poszedłem do badania Androida i cmd V, aby wkleić

Zauważ, że wielokrotnie próbowałem kopiować, wybierając hasło, klikając na końcu hasła i wybierając hasło, przesuwając mysz.

Jest to dziwne, ale zadziałało tylko po dwukrotnym kliknięciu hasła, aby je skopiować.

Użyłem również metody Open Module Settings> Signing ... wyjaśnionej przez @NightFury w tym poście.


0

dodanie poniższych linii kodu w pliku build.gradel działało dla mnie, dodaj je pod blokiem buildTypes poniżej wydania, jak pokazano

buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
    debug {
        applicationIdSuffix ".debug"
        debuggable true
    }
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.