web-dev-qa-db-ja.com

Android Studioはデバッグビルドのコードに署名しません

Android Studioは、デバッグビルド用のコードへの署名を拒否します。

私はbuild.gradleに署名の指示がなかった古いプロジェクトを持っているので、これを Android gradle signingConfig error およびその他の投稿に従って追加しました。

モジュールレベル(唯一のモジュール)のbuild.gradleファイルは次のようになります(抜粋)。

Android {
    compileSdkVersion 21
    buildToolsVersion '21.1.2'
    defaultConfig {
        applicationId "cc.appname.Android"
        minSdkVersion 11
        targetSdkVersion 21
        versionCode 1
        versionName '1.0'
    }
    signingConfigs {
        debug {
            storeFile file('../../../.Android/debug.keystore')
            keyAlias 'androiddebugkey'
            keyPassword 'Android'
            storePassword 'Android'
        }
    }
    buildTypes {
        debug {
            signingConfig signingConfigs.debug
        }
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.txt'
        }
    }
    productFlavors {
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_7
        targetCompatibility JavaVersion.VERSION_1_7
    }
}

パスを変更するとコンパイルエラーが発生するため、storeFileが見つかります。パスが正しい場合はコンパイルされますが、アプリ内でFacebook SDKを使用しようとすると、誤ったキーハッシュが報告されます。

signingConfigs

signingConfig signingConfigs.debug

エラーメッセージ「引数の型を推測できません...」が下線付きで表示されます

そこで、UIの[プロジェクトの設定]に移動し、署名と、ビルドと署名の間の関係を削除して、これを保存し、再度追加しました。同じ問題。

これは私が見落とした非常に小さなものであると確信しています。

誰か助けてもらえますか?

17
Oliver Hausler

debug.keystore~/.Androidフォルダ。

これを変える:

    debug {
        storeFile file('../../../.Android/debug.keystore')
        keyAlias 'androiddebugkey'
        keyPassword 'Android'
        storePassword 'Android'
    }

これに(debug.keystore(ルートプロジェクト内):

    debug {
        storeFile rootProject.file('debug.keystore')
        keyAlias 'androiddebugkey'
        keyPassword 'Android'
        storePassword 'Android'
    }

debugBuildTypeをオーバーライドする必要はありません。とにかくdebugキーで自然に署名するので、以下を削除できます。

    debug {
        signingConfig signingConfigs.debug
    }

最終 build.gradle

Android {
    compileSdkVersion 21
    buildToolsVersion '21.1.2'
    defaultConfig {
        applicationId "cc.appname.Android"
        minSdkVersion 11
        targetSdkVersion 21
        versionCode 1
        versionName '1.0'
    }
    signingConfigs {
        debug {
            storeFile rootProject.file('debug.keystore')
            keyAlias 'androiddebugkey'
            keyPassword 'Android'
            storePassword 'Android'
        }
    }
    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.txt'
        }
    }
    productFlavors {
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_7
        targetCompatibility JavaVersion.VERSION_1_7
    }
}
26
Jared Burrows

構文が異なるため、新しい gradle experimental plugin の回答を追加します。

model {
    Android {
        buildTypes {
            release {
                signingConfig = $("Android.signingConfigs.myConfig")
                ...
            }
        }
    }
    Android.signingConfigs {
        create("myConfig") {
            keyAlias = 'androiddebugkey'
            keyPassword = 'Android'
            storeFile = new File("${System.properties['user.home']}/.Android/debug.keystore")
            storePassword = 'Android'
            storeType = "jks"
        }
    }
 }

注:Android.signingConfigsブロックはAndroidブロックの外側に配置する必要があります。

0
donturner