20

そのため、すべての ant ビルド スクリプトを gradle に変換しようとしています。gradle.properties ファイルで署名を構成する方法を除いて、すべてに関する十分なリソースとドキュメントを見つけることができました。

ant.properties は次のようにします。

key.alias=alias
key.store.password=password
key.store=keystore.file
key.alias.password=password

しかし、gradleで同じことを行うにはどうすればよいですか?

4

6 に答える 6

22

以下でできました。@Xav のソリューションを試してみましたが、プロパティが設定されていないと、リリースの検証ステップで問題が発生します。フレームワークが大幅に変更されたため、これは最近の変更であると確信しています。else最後に、リリースのsigningConfigを強制的にnullにすることができたことを指摘することで、助けたかっただけです。gradle.properties の存在に応じて、署名付きと未署名の両方のリリースが発生するようになりました。

signingConfigs {
    release {
        keyAlias = "blue_sleep"
    }
}

buildTypes {
    release {
        signingConfig signingConfigs.release
    }
}

if (project.hasProperty('storeFile') &&
        project.hasProperty('storePassword') &&
        project.hasProperty('keyPassword')) {
    android.signingConfigs.release.storeFile = file(storeFile)
    android.signingConfigs.release.storePassword = storePassword
    android.signingConfigs.release.keyPassword = keyPassword
} else {
    android.buildTypes.release.signingConfig = null
}

プロジェクト フォルダーに配置したくない場合は、gradle.properties を ~/.gradle/ に配置できます。storeFileまた、次のような絶対パスでプロパティを設定できます。storePath=file:///Users/nick/Dropbox/mycompany.keystore

于 2013-05-21T07:30:05.167 に答える
0

私の要件は、キーストアがなくても誰でも適切にビルドできる必要があるということでした。これは私が見つけることができる最もクリーンな方法です:

android {
    signingConfigs {
        release    //Filled in readSigningConfigIfAvailable()
    }

    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-xyz.txt'
            readSigningConfigIfAvailable()
        }
    }
}

private void readSigningConfigIfAvailable() {
    if (hasAllSigningProperties()) {
        android.signingConfigs.release.storeFile = file(keystore_path)
        android.signingConfigs.release.storePassword = keystore_password
        android.signingConfigs.release.keyAlias = key_alias
        android.signingConfigs.release.keyPassword = key_password
        android.buildTypes.release.signingConfig = android.signingConfigs.release
    } else {
        android.buildTypes.release.signingConfig = null
    }
}

private boolean hasAllSigningProperties() {
    (hasProperty('keystore_path')
    && hasProperty('keystore_password')
    && hasProperty('key_alias')
    && hasProperty('key_password'))
}
于 2015-12-09T05:23:18.833 に答える