app-release-unsigned.apk не підписаний


201

Я завантажив zip-файл програми для Android на github і намагаюся запустити його, але я отримую діалогове вікно із цим повідомленням

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

Я використовую Android Studio. Що я повинен робити?

Відповіді:


438

Якщо хто -то хоче , щоб налагодити реліз збірки з допомогою Android Studio, виконайте наступні дії:

  1. Встановіть варіант складання в режим випуску.

введіть тут опис зображення

  1. Клацніть правою кнопкою миші на додаток у лівій панелі навігації, натисніть кнопку Відкрити параметри модуля .

  2. Перейдіть на вкладку "Підписання". Додайте конфігурацію підпису та заповніть інформацію. Виберіть також свою брелок.

введіть тут опис зображення

  1. Перейдіть на вкладку Тип побудови . Виберіть режим випуску та встановіть:

-Дебаггічний до істинного .

-Призначення Config до config . (Той, що ви тільки що створили).

введіть тут опис зображення

Синхронізуйте градули. Насолоджуйтесь!


3
Чи слід встановити Debuggable на false, коли насправді генерує APK релізу для prod? чи студія зробить це самостійно?
Ішаан Гарг

7
@IshaanGarg Вам слід встановити налагодження на false, роблячи apk реліз
NightFury

1
Ви б подумали, що це за замовчуванням для першого створеного питання, чому це не так ... можливо, було б погано, щоб хтось підписував пакунки, які вони не хотіли підписувати ... але спасибі, чоловіче, я забув встановити тип збірки " Підписання Config "і до скріншоту я не пам’ятав
CrandellWS

14
є НІ НЕОБХІДНОСТІ встановити Налагодження на істинний , (якщо на самому ділі не збирався так).
computingfreak

4
Ви повинні знати, що після встановлення конфігурації типу збірки вся інформація про ваші ключі (включаючи паролі) з’явиться у файлі gradle ...
Jacob.B

95

Переконайтеся, що у версії Android Studio встановлено варіант налагодження (а не випуск ) (перевірте панель варіантів збірки ).

Якщо встановлено налагодження, воно повинно автоматично підписувати додаток автоматично створеним сховищем налагодження, не редагуючи сценарії збірки.

Однак вам потрібно буде створити і налаштувати конкретну сховище ключів для випуску.

Офіційна документація, що охоплює режими налагодження та випуску: https://developer.android.com/tools/publishing/app-signing.html


54

Завжди підписуйте свою збірку за допомогою сценарію DSL build.gradle таким чином:

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

Якщо ви хочете трохи більше зрозуміти систему побудови Gradle, пов’язану з Android Studio, просто відвідайте:

Посібник користувача плагіна Gradle


Але навіщо мені це робити? У посібнику написано: "За замовчуванням існує конфігурація налагодження, яка налаштована на використання ключа зберігання налагоджень, з відомим паролем та типовим ключем із відомим паролем." У мене немає проблем з іншими програмами.
andrew

Якщо ваш пароль у порядку і debug.keystore доступний, я не знаю. Звичайні проблеми, які я бачив у минулому з цим, - це дозвіл файлів або дозволи до каталогу. Можливо, завантажений вами проект зберігає локальні файли Android Studio, які вказують на інший налагоджувальний магазин, ніж ваш. У будь-якому випадку, ваш журнал Gradle повинен показувати помилку шляху, будь ласка, включіть цей журнал для отримання додаткової допомоги.
Martin Revert

Гммм, для мене теж не працює. Немає помилок в Gradle, але все ж отримую помилку підпису (і вона вказується на моєму ключі).
Брайан Кноблауч

Привіт Брайан! Чи можете ви спробувати видалити свою debug.keystore? Потім запустіть новий проект-манекен і потрібно створити нову сховище ключів. Після цього знову відкрийте власний проект і спробуйте. Це єдине, що я можу порекомендувати, якщо щось інше прокоментувалося раніше, ніж не вдалося.
Martin Revert

1
Не debug.keystoreзнаходиться в .androidпапці? Можливо, ви хочете дати повний шлях, якщо ви не перенесли його у свій проект
Gokhan Arik

36

Мені вдалося налагодити підписаний APK. Дотримуйтесь цієї процедури: -

  1. Виберіть версію "реліз" у панелі інструментів "Варіант збірки"
  2. У Build.gradleнаборі модуля debuggable trueдля типу збірки релізу
  3. Перейдіть у меню Файл-> Структура проекту-> на вкладці підписання заповніть усю інформацію-> На вкладці Ароматизатори-> Оберіть конфігурацію підписання Ви тільки що створили
  4. Встановити точки перерви
  5. Запустіть програму в режимі налагодження

Не працює для мене. Я встановив налагоджувальну функцію true для інсценізації варіанту, але все-таки потрібно підписати apk перед побудовою.
Нішант Танвар

20

Якщо хтось хоче налагодити та випустити окремий варіант складання за допомогою Android Studio 3.5, виконайте наступні кроки: 1. Встановіть варіант збірки у режим випуску.

Варіант побудови

  1. Перейдіть до файлу >> Структура проекту
  2. Виберіть Модулі, а потім Підписати налаштування
  3. Клацніть піктограму «Плюс» у розділі Підписання конфігурації

Конфігурація підпису

  1. Виберіть розділ випуску та надайте інформацію про випуск програми, а потім застосуйте та OK.

увійти

  1. Перейдіть до рівня програми build.gradleта змініть buildTypesрозділ "випуск", як показано нижче. Скріншот.

остаточний

Потім запустіть проект. Щасливе кодування.


Звідки ви берете файл .jks?
Марк Олександр

@MarcAlexander тут немає жодного .jks-коду, який би генерував знімок екрана. Ви можете створити .jks файл із редактора студії Android.
Шохель Рана

14

ПідписConfigs повинен бути перед 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

якщо ви хочете запустити додаток у режимі налагодження

1) Подивіться на лівий бічний низ, над вибраними є варіанти складання

2) Клацніть на варіанти складання. Клацніть на випуску та виберіть налагодження

це працює ідеально !!!


10

Проект програми, який ви завантажили, може містити підписану інформацію у файлі build.gradle. Якщо ви бачили такі коди:

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

ви можете видалити їх і спробувати ще раз.


9

Для граді Котлін дсл

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

7

Мою проблему було вирішено шляхом зміни варіанту збірки, як запропонував Stéphane, якщо хтось із усіх сил намагався знайти "варіанти побудови", як я це робив, - це скріншот, де ви можете його знайти.

введіть тут опис зображення


1
Я зіткнувся з проблемами після зміни варіанту збірки з Налагодження на Реліз
Parth Patel

6

З міркувань безпеки не можна встановити неподписаний apk на Android. Тож якщо у вас є лише непідписаний apk: ви повинні підписати його. Ось як це зробити: посилання

Зауважте, що ви можете підписати apk за допомогою самопідписаного сертифіката.

Альтернативою може бути будь-яка:

  • завантажити підписаний apk, якщо такий є.
  • щоб завантажити джерела, компілюйте їх (з Android-Studio або gradle або ...). Він створить декілька apks, і одна з них буде підписана вашим налагоджувальним ключем (і ви зможете встановити його)

1
Я не впевнений, що розумію. Я завантажив поштовий індекс коду програми і намагаюся компілювати його з Android Studio ...
andrew

тому ви повинні скласти підписану версію. Зазвичай підписана версія складається одночасно і знаходиться в тому самому каталозі, що і без підписаної.
ben75

Якщо я генерую підписаний apk, він працює, але я не можу це робити кожен раз, коли мені доведеться тестувати додаток. Мені чогось тут не вистачає, я просто хочу спробувати додаток, як це роблять із власними програмами ...
andrew

2

На панелі вікон інструментів виберіть Варіанти збірки Змініть Варіант збірки з Випуску на Налагодження


2

Як я це вирішив

Ця помилка виникає через те, що ви встановили варіанти складання в режимі випуску. встановити його на режим збирання та запустити проект знову.

Якщо ви хочете запускатись у режимі випуску, просто генеруйте підписаний apk так, як ми це робимо зазвичай при випуску програми


У мене є лише варіанти "налагодження" та "випуск"?
Стів Сміт

0

Моє рішення полягало в тому, щоб змінити ім'я моєї конфігурації підписання з типового "config" на "debug". Для перевірки я змінив її на якусь іншу випадкову назву і знову отримав помилку, а потім змінив її назад на "налагодження", і помилка не зникла. Тож, хоча це здається штучним, і я схильний не вірити, що це вся історія, спробуйте це рішення.


0

У мене також з'являється ця проблема, і мій код нижче

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

Причина - помилка імені властивості, вона повинна бути keyPassword, а не keypassword


0

Що нарешті працювало для мене, і я поняття не маю чому:

  • Перейшов на LastPass (послугу, яку я використовую для збереження всіх своїх паролів)
  • Виберіть мій пароль, поставивши курсор у верхній частині пароля та двічі клацнувши
  • Після вибору натискаю cmd C для копіювання
  • Пішов на Android дослідження та cmd V для вставки

Зауважте, я намагався скопіювати багато разів, вибравши пароль, натиснувши в кінці пароля та вибравши пароль, перемістивши мишу.

Це дивно, але він працював лише подвійним клацанням вгорі пароля, щоб скопіювати його.

Також я використав метод "Відкрити параметри модуля"> "Підпис ...", пояснений @NightFury у цій публікації.


0

додаючи нижче рядки коду у файл build.gradel, який працював на мене, додайте їх у блок buildTypes нижче випуску, як показано

buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
    debug {
        applicationIdSuffix ".debug"
        debuggable true
    }
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.