app-release-unsigned.apkは署名されていません


199

Androidアプリのzipファイルをgithubにダウンロードして実行しようとしましたが、このメッセージのダイアログが表示されます

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

Android Studioを使用しています。私はどうしたらいいですか?

回答:


437

Android Studioを使用してリリースビルドをデバッグしたい場合は、次の手順に従ってください。

  1. ビルドバリアントをリリースモードに設定します。

ここに画像の説明を入力してください

  1. 左側のナビゲーションペインでアプリを右クリックし、[ モジュール設定を開く ]をクリックします。

  2. [署名]タブに移動します。署名設定を追加し、情報を入力します。キーチェーンも選択します。

ここに画像の説明を入力してください

  1. [ ビルドタイプ ]タブに移動します。リリースモードを選択して設定:

-Debuggable

-Configをconfigに署名します。(先ほど作成したもの)。

ここに画像の説明を入力してください

グラドルを同期します。楽しい!


3
製品のリリースAPKを実際に生成するときに、Debuggableをfalseに設定する必要がありますか?それともスタジオがそれを単独で行うのでしょうか?
Ishaan Garg

7
@IshaanGargリリースapkの作成中はデバッグ可能をfalseに設定する必要があります
NightFury

1
デフォルトでは最初に作成されたものになり、なぜそうしないのか不思議に思うかもしれません...おそらく署名したくないパッケージに署名するのは悪いかもしれません... Signing Config」とスクリーンショットまで、覚えていませんでした
CrandellWS

14
そこにあるのNO NEED設定するデバッグ可能にする(本当にそう意図していない限りは)、。
コンピューティング

4
ただし、構成をビルドタイプに設定すると、すべてのキー情報(パスワードを含む)が
Gradle

95

Android Studioでビルドバリアントデバッグ用に設定されていることを確認します(リリースではなく)(ビルドバリアントパネルを確認します)。

debugに設定すると、ビルドスクリプトを編集せずに、自動生成されたデバッグキーストアでアプリに自動的に署名します。

ただし、リリース用に特定のキーストアを作成して構成する必要があります。

デバッグモードとリリースモードをカバーする公式ドキュメント:https : //developer.android.com/tools/publishing/app-signing.html


53

常に次のような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プラグインユーザーガイド


しかし、なぜそれをしなければならないのですか?ガイドには、「デフォルトでは、既知のパスワードと既知のパスワードを持つデフォルトの鍵を使用して、デバッグキーストアを使用するように設定されたデバッグ構成があります。」と書かれています。他のアプリケーションには問題ありません。
アンドリュー、2014

パスワードに問題がなく、debug.keystoreに到達できる場合、私にはわかりません。これに関して過去に私が見た通常の問題は、ファイル許可またはディレクトリー許可です。ダウンロードしたプロジェクトが、Android Studioのローカルファイルを保持している可能性があります。このファイルは、あなたのファイル以外のデバッグキーストアをポイントしています。いずれの場合も、Gradleログにパスエラーを表示する必要があります。詳細については、そのログを含めてください。
Martin Revert

うーん、私にもうまくいきません。Gradleエラーはありませんが、署名エラーが発生します(そしてそれは私のキーファイルを指しています)。
Brian Knoblauch、2014

こんにちはブライアン!debug.keystoreを削除してみてください。次に、新しいダミープロジェクトを開始し、新しいキーストアを生成する必要があります。その後、実際のプロジェクトを再度開いてみてください。それが失敗する前に他にコメントした場合、私がお勧めできる唯一のことです。
Martinが

1
されていないdebug.keystoreに位置して.androidフォルダ?プロジェクトに移動しない限り、完全なパスを指定することをお勧めします
Gokhan Arik

36

署名済みAPKを正常にデバッグできました。次の手順に従ってください:

  1. 「バリアントの作成」ツールバーで「リリース」バージョンを選択します
  2. ではBuild.gradleモジュールセットのためのdebuggable trueリリースビルドタイプ用
  3. File-> Project Structure-> signing tab under all info-> Under Flavors-> Choose signing Configの順に進みます。
  4. ブレークポイントを設定する
  5. アプリケーションをデバッグモードで実行します

私のために働いていません。ステージングバリアントに対してdebuggableをtrueに設定しましたが、ビルドする前にapkに署名する必要があります。
Nishant Tanwar 2017

18

Android Studio 3.5を使用して別のビルドバリアントをデバッグおよびリリースする場合は、以下の手順に従ってください。1.ビルドバリアントをリリースモードに設定します。

バリアントを作成

  1. ファイル>>プロジェクト構造に移動
  2. モジュールを選択し、次に署名設定
  3. Signing Configの下のPlusアイコンをクリックします

署名設定

  1. リリースセクションを選択し、リリースアプリ情報を入力してから、適用してOKをクリックします。

サインイン

  1. アプリレベルに移動し、スクリーンショットの下のように「リリース」セクションbuild.gradleを変更しますbuildTypes

最後の

次に、プロジェクトを実行します。ハッピーコーディング。


.jksファイルはどこから入手しますか?
Marc Alexander

@MarcAlexanderの.jksコードはスクリーンショットを生成しません。Androidスタジオエディターから.jksファイルを生成できます。
Shohel Rana

13

signingConfigsは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)[バリアントのビルド]をクリックします。リリースをクリックして、デバッグを選択します

それは完璧に動作します!!!


9

ダウンロードしたアプリプロジェクトでは、build.gradleのファイルに署名付き情報が含まれている場合があります。次のようなコードを見た場合:

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

それらを削除して再試行できます。


8

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

6

セキュリティ上の理由から、Androidに未署名のAPKをインストールすることはできません。したがって、署名されていないapkしかない場合は、署名する必要があります。これを行う方法は次のとおりです。リンク

自己署名証明書でAPKに署名できることに注意してください。

代替案は次のいずれかです。

  • 利用可能な場合は、署名済みAPKをダウンロードします。
  • ソースをダウンロードするには、ソースをコンパイルします(Android-Studioまたはgradleまたは...を使用)。複数のapkが生成され、そのうちの1つがデバッグキーで署名されます(したがって、インストールできます)。

1
理解できているかわかりません。アプリのコードのzipをダウンロードし、Android Studioでコンパイルしようとしています...
andrew

したがって、署名されたバージョンをコンパイルする必要があります。通常、署名されたバージョンは同時にビルドされ、署名されていないバージョンと同じディレクトリにあります。
ben75 2014

署名済みのAPKを生成しても機能しますが、アプリをテストする必要があるたびに実行できません。私は...私はちょうど私は自分のアプリケーションと同じようにアプリを試してみたい、ここで何かが欠けてる
アンドリュー・

5

私の問題は、ステファンが提案したようにビルドバリアントを変更することで解決しました。

ここに画像の説明を入力してください


1
ビルドバリアントをデバッグからリリースに変更した後、問題に直面しています
Parth Patel

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.