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


202

Я загрузил 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. Что я должен сделать?

Ответы:


439

Если кто-то хочет отладить сборку релиза с помощью Android Studio, выполните следующие действия:

  1. Установите вариант сборки в режим выпуска.

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

  1. Щелкните правой кнопкой мыши приложение в левой панели навигации и выберите « Открыть настройки модуля» .

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

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

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

Отладка до истины .

-Подписание конфига в конфиге . (Тот, который вы только что создали).

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

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


3
Должны ли мы установить для Debuggable значение false при фактической генерации релизного APK для prod? или студия будет делать это самостоятельно?
Ишаан Гарг

7
@IshaanGarg Вы должны установить для debuggable значение false при создании релиза apk
NightFury

1
Вы могли бы подумать, что по умолчанию будет первый созданный вопрос, почему это не так ... возможно, было бы плохо для некоторых подписывать пакеты, которые они не хотели подписывать ... но спасибо, человек, я забыл установить тип сборки " Подписание Config»и до скриншота, я не вспоминал
CrandellWS

14
есть НЕТ НЕОБХОДИМОСТИ установить Отладка на истинный , (если на самом деле не собирался так).
вычислительная техника

4
Вы должны знать, что после установки конфигурации на тип сборки вся информация о ваших ключах (включая пароли) появится в файле Gradle ...
Jacob.B

95

Убедитесь, что вариант сборки настроен на отладку (а не на выпуск ) в Android Studio (проверьте панель вариантов сборки ).

Если установлено значение debug, оно должно автоматически подписывать приложение с автоматически сгенерированным хранилищем ключей отладки, не редактируя сценарии сборки.

Однако вам нужно будет создать и настроить определенное хранилище ключей для выпуска.

Официальная документация, охватывающая режимы отладки и выпуска: 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 Plugin Руководство пользователя


Но зачем мне это делать? В руководстве говорится: «По умолчанию существует конфигурация отладки, которая настроена для использования хранилища ключей отладки с известным паролем и ключом по умолчанию с известным паролем». У меня нет проблем с другими приложениями.
Андрей

Если ваш пароль в порядке и debug.keystore доступен, я не знаю. Обычные проблемы, с которыми я сталкивался в прошлом, - это права доступа к файлам или каталогам. Возможно, загруженный вами проект хранит локальные файлы Android Studio, которые указывают на другое хранилище ключей отладки, чем ваше. В любом случае ваш журнал Gradle должен показывать ошибку пути, пожалуйста, включите этот журнал для получения дополнительной помощи.
Мартин Реверт

Хм, у меня тоже не работает. Нет ошибок Gradle, но все равно получаю ошибку подписи (и она указана на мой ключевой файл).
Брайан Кноблаух

Привет, Брайан! Не могли бы вы попытаться удалить свой debug.keystore? Затем запустите новый фиктивный проект, и необходимо создать новое хранилище ключей. После этого снова откройте ваш реальный проект и попробуйте. Это единственное, что я могу порекомендовать, если что-то еще будет прокомментировано до того, как произойдет сбой.
Мартин Реверт

1
Не debug.keystoreнаходится в .androidпапке? Возможно, вы захотите указать полный путь, если вы не перенесли его в свой проект
Гохан Арик

36

Я успешно смог отладить подписанный APK, выполните следующие действия: -

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

Не работает для меня Я установил debuggable true для промежуточного варианта, но все же, должен подписать apk перед сборкой.
Нишант Танвар

20

Если кто-то хочет отладить и выпустить отдельный вариант сборки с помощью Android Studio 3.5, выполните следующие действия: 1. Установите вариант сборки в режим выпуска.

Вариант сборки

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

Конфиг подписи

  1. Выберите раздел релиза и укажите информацию о приложении релиза, затем нажмите Применить и OK.

войти в систему

  1. Перейдите на уровень своего приложения build.gradleи измените buildTypesраздел> «релиз», как показано ниже на снимке экрана.

окончательный

Затем запустите свой проект. Удачного кодирования.


Откуда вы получаете файл .jks?
Марк Александр

@MarcAlexander здесь нет никакого кода .jks генерировать скриншот. Вы можете создать файл .jks из редактора студии Android.
Шохел Рана

15

signatureConfigs должен быть до 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) Нажмите на Варианты сборки. Нажмите на выпуск и выберите отладку

работает отлично !!!


11

Загруженный вами проект приложения может содержать подписанную информацию в файле build.gradle. Если вы видели такие коды:

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

Вы можете удалить их и попробовать еще раз.


9

Для градела 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")
    }
}

7

Моя проблема была решена путем изменения варианта сборки, как предложил Стефан, если кто-то изо всех сил пытался найти «варианты сборки», как я сделал здесь, это скриншот, где вы можете его найти.

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


1
Я сталкиваюсь с проблемами после изменения варианта сборки с Debug на Release
Parth Patel

6

По соображениям безопасности вы не можете установить неподписанный APK на Android. Так что, если у вас есть только неподписанный apk: вы должны его подписать. Вот как это сделать: ссылка

Обратите внимание, что вы можете подписать apk самозаверяющим сертификатом.

Альтернативой может быть:

  • скачать подписанный апк, если доступно.
  • скачать исходники, скомпилировать их (с помощью Android-Studio или Gradle или ...). Он создаст несколько apks, и один из них будет подписан вашим ключом отладки (и, следовательно, вы сможете установить его)

1
Я не уверен, что понимаю. Я скачал почтовый индекс кода приложения и пытаюсь скомпилировать его с помощью Android Studio ...
Эндрю

поэтому вы должны скомпилировать подписанную версию. Обычно подписанная версия собирается одновременно и находится в том же каталоге, что и неподписанная.
ben75

Если я создаю подписанный apk, он работает, но я не могу делать это каждый раз, когда мне нужно протестировать приложение. Я что-то здесь упускаю, я просто хочу попробовать приложение, как я делаю с моими собственными приложениями ...
Эндрю

2

В панели инструментов выберите «Варианты сборки». «Изменить вариант сборки» с выпуска на отладку.


2

Как я решил это

Эта ошибка возникает из-за того, что вы установили варианты сборки в режим выпуска. установите его в режим сборки и запустите проект снова.

Если вы хотите работать в режиме релиза, просто сгенерируйте подписанный apk, как мы обычно делаем при выпуске приложения


У меня есть только опции «отладка» и «выпуск»?
Стив Смит

0

Мое решение состояло в том, чтобы изменить имя моей подписывающей конфигурации с "config" по умолчанию на "debug". Чтобы проверить, я изменил его на какое-то другое случайное имя и снова получил ошибку, а затем изменил ее обратно на «отладку», и ошибка исчезла. Поэтому, хотя это кажется искусственным, и я не верю, что это целая история, попробуйте это решение.


0

у меня тоже эта проблема появляется, а мой код ниже

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

причина в ошибке имени свойства, это должен быть ключ-пароль, а не пароль-пароль


0

Что в итоге сработало для меня, и я понятия не имею, почему:

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

Обратите внимание, что я пытался копировать много раз, выбирая пароль, щелкая в конце пароля и выбирая пароль, перемещая мышь.

Странно, но это работало только двойным щелчком по паролю, чтобы скопировать его.

Также я использовал метод Open Module Settings> Signing ..., описанный @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.