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.