app-release-unsigned.apk가 서명되지 않았습니다


201

github에서 Android 앱의 zip 파일을 다운로드하여 실행하려고 하는데이 메시지가있는 대화 상자가 나타납니다

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. 빌드 유형 탭으로 이동 하십시오. 릴리스 모드를 선택하고 다음을 설정하십시오.

- 사실로 의심 .

받는 사람 구성을 -Signing 설정 . (방금 만든 것).

여기에 이미지 설명을 입력하십시오

gradle을 동기화하십시오. 즐겨!


3
실제로 prod 용 릴리스 APK를 생성 할 때 Debuggable을 false로 설정해야합니까? 아니면 스튜디오 자체적으로할까요?
Ishaan Garg

7
릴리스 APK하면서 @IshaanGarg false로 디버깅 설정해야합니다
NightFury

1
처음에는 기본 설정이 아닌 이유가 무엇인지 궁금 할 것입니다. 어쩌면 일부는 서명하고 싶지 않은 패키지에 서명하는 것이 좋지 않을 것입니다 ...하지만 감사합니다. 빌드 유형을 설정하는 것을 잊었습니다. 서명 구성 "및 스크린 샷까지 기억이 나지 않았습니다
CrandellWS

14
Debuggabletrue 로 설정해야 할 필요없습니다 (실제로 의도하지 않는 한).
컴퓨팅

4
구성을 빌드 유형으로 설정하면 모든 키 정보 (암호 포함)가 gradle 파일에 나타납니다 ...
Jacob.B

95

있는지 확인 빌드 변종 으로 설정되어 디버그 (그리고 릴리스 (체크 안드로이드 Studio에서) 빌드가 변형 패널).

디버그로 설정하면 빌드 스크립트를 편집하지 않고 자동 생성 된 디버그 키 저장소로 앱에 자동 서명해야합니다.

그러나 릴리스 할 특정 키 저장소를 작성하고 구성해야합니다.

디버그 및 릴리스 모드를 다루는 공식 문서 : https://developer.android.com/tools/publishing/app-signing.html


54

항상 다음과 같이 build.gradle DSL 스크립트를 사용하여 빌드에 서명하십시오.

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

Android Studio와 관련된 Gradle 빌드 시스템을 조금 더 이해하려면 다음을 방문하십시오.

Gradle 플러그인 사용 설명서


하지만 왜 그렇게해야합니까? 이 안내서에는 "기본적으로 알려진 암호를 가진 디버그 키 저장소와 알려진 암호를 가진 기본 키를 사용하도록 설정된 디버그 구성이 있습니다."라고 말합니다. 다른 응용 프로그램에는 아무런 문제가 없습니다.
Andrew

암호가 맞고 debug.keystore에 연결할 수 있으면 모르겠습니다. 과거에 내가 본 일반적인 문제는 파일 권한 또는 디렉토리 권한입니다. 아마 다운로드 한 프로젝트가 귀하의 것 이외의 다른 디버그 키 저장소를 가리키는 Android Studio 로컬 파일을 유지하고 있습니다. 어떤 경우 든 Gradle 로그에 경로 오류가 표시되어야합니다. 자세한 내용을 보려면 해당 로그를 포함하십시오.
Martin Revert

흠, 나에게도 효과가 없다. gradle 오류는 없지만 여전히 서명 오류가 발생합니다 (그리고 내 키 파일을 가리 킵니다).
Brian Knoblauch

안녕 브라이언! debug.keystore를 삭제하려고 할 수 있습니까? 그런 다음 새 더미 프로젝트를 시작하고 새 키 저장소를 생성해야합니다. 그런 다음 실제 프로젝트를 다시 열고 시도하십시오. 전에 언급 한 다른 항목이 실패하면 권장 할 수있는 유일한 방법입니다.
Martin Revert

1
아닌가요 debug.keystore에 위치한 .android폴더? 프로젝트로 이동하지 않으면 전체 경로를 지정할 수 있습니다.
Gokhan Arik

36

서명 된 APK를 성공적으로 디버깅 할 수있었습니다. 다음 절차를 따르십시오.

  1. "Build Variant"툴바에서 "release"버전을 선택하십시오.
  2. 에서 Build.gradle모듈 세트에 대한 debuggable true릴리스 빌드 유형
  3. 파일-> 프로젝트 구조-> 서명 탭으로 이동하여 모든 정보 작성-> 맛 내기 탭-> 서명 구성 선택 방금 생성
  4. 중단 점 설정
  5. 디버그 모드에서 애플리케이션을 실행하십시오.

나를 위해 작동하지 않습니다. 스테이징 변형에 대해 디버그 가능을 true로 설정했지만 여전히 빌드하기 전에 apk에 서명해야합니다.
Nishant Tanwar

20

누구나 Android Studio 3.5를 사용하여 개별 빌드 변형을 디버그 및 릴리스하려면 다음 단계를 따르십시오. 1. 빌드 변형을 릴리스 모드로 설정하십시오.

변형 작성

  1. 파일 >> 프로젝트 구조로 이동
  2. 모듈을 선택한 다음 서명 구성을 선택하십시오.
  3. 서명 구성 아래의 더하기 아이콘을 클릭하십시오.

서명 구성

  1. 릴리스 섹션을 선택하고 릴리스 앱 정보를 제공 한 후 적용 및 확인을 선택하십시오.

로그인

  1. 앱 레벨로 이동하여 아래 스크린 샷과 같이> "릴리스"섹션을 build.gradle변경하십시오 buildTypes.

결정적인

그런 다음 프로젝트를 실행하십시오. 행복한 코딩.


.jks 파일은 어디서 구할 수 있습니까?
마크 알렉산더

@MarcAlexander는 .jks 코드가 스크린 샷을 생성하지 않습니다. Android 스튜디오 편집기에서 .jks 파일을 생성 할 수 있습니다.
Shohel Rana

14

signingConfig는 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

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

7

내 문제는 Stéphane이 제안한대로 빌드 변형을 변경하여 해결되었습니다. 여기서 내가 한 것처럼 "빌드 변형"을 찾는 데 어려움을 겪고 있다면이 스크린 샷을 찾을 수 있습니다.

여기에 이미지 설명을 입력하십시오


1
내가 디버그에서 릴리스로 변경 빌드 변형 후 문제에 직면하고있다
Parth 파텔

6

보안상의 이유로 서명되지 않은 APK를 Android에 설치할 수 없습니다. 따라서 서명되지 않은 APK 만있는 경우 서명해야합니다. 여기에 그 작업을 수행하는 방법입니다 : 링크

자체 서명 된 인증서로 APK에 서명 할 수 있습니다.

대안은 다음 중 하나 일 수 있습니다.

  • 가능한 경우 서명 된 APK를 다운로드합니다.
  • 소스를 다운로드하려면 컴파일하십시오 (Android-Studio 또는 gradle 또는 ...로). 여러 개의 apk를 생성하고 그중 하나는 디버그 키로 서명되므로 설치할 수 있습니다.

1
잘 모르겠습니다. 나는 앱의 코드의 zip을 다운로드했고 안드로이드 스튜디오로 컴파일하려고 노력하고 있습니다 ...
andrew

따라서 서명 된 버전을 컴파일해야합니다. 일반적으로 서명 된 버전은 동시에 빌드되며 서명되지 않은 버전과 동일한 디렉토리에 있습니다.
ben75

서명 된 APK를 생성하면 작동하지만 앱을 테스트해야 할 때마다 수행 할 수는 없습니다. 나는 여기에 뭔가 빠졌고, 나는 내 자신의 응용 프로그램과 마찬가지로 응용 프로그램을 시도하고 싶습니다 ...
andrew

2

도구 창 표시 줄에서 변형 작성 빌드 변형을 릴리스에서 디버그로 변경을 선택하십시오.


2

이 문제를 어떻게 해결했는지

빌드 변형을 릴리스 모드로 설정했기 때문에이 오류가 발생합니다. 빌드 모드로 설정하고 프로젝트를 다시 실행하십시오.

릴리스 모드에서 실행하려면 앱을 출시 할 때 정상적으로 수행하는 방식으로 서명 된 APK를 생성하십시오.


"디버그"및 "릴리스"옵션 만 있습니까?
Steve Smith

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가 설명하는 Open Module Settings> Signing ... 방법을 사용했습니다.


0

build.gradel 파일에 아래 코드 줄을 추가하면 나를 위해 일했습니다. 그림과 같이 릴리스 아래 buildTypes 블록 아래에 추가하십시오.

buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
    debug {
        applicationIdSuffix ".debug"
        debuggable true
    }
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.