承認された回答では、ファイルを使用して、プロジェクトの同じルートフォルダーにあるAPKの署名に使用するキーストアを制御します。Gitのようなvcsを使用している場合、リストを無視するためにプロパティファイルを追加するのを忘れると、悪いことになる可能性があります。パスワードを世界中に公開するからです。問題はまだ解決しません。
プロパティファイルをプロジェクト内の同じディレクトリに作成するのではなく、外部に作成する必要があります。gradle.propertiesファイルを使用して外部に作成します。
ここでの手順:
1.ルートプロジェクトでgradle.propertiesを編集または作成し、次のコードを追加します。必ず、独自のパスを編集してください。
AndroidProject.signing=/your/path/androidproject.properties
2. / your / path /にandroidproject.propertiesを作成し、次のコードを追加します。/your/path/to/android.keystoreをキーストアパスに変更することを忘れないでください。
STORE_FILE=/your/path/to/android.keystore
STORE_PASSWORD=yourstorepassword
KEY_ALIAS=yourkeyalias
KEY_PASSWORD=yourkeypassword
3.アプリモジュールbuild.gradle(プロジェクトのルートbuild.gradleではない)に次のコードが存在しない場合は追加するか、コードを調整します。
signingConfigs {
release
}
buildTypes {
debug {
debuggable true
}
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release
}
}
ステップ3のコードの下に次のコードを追加します。
if (project.hasProperty("AndroidProject.signing")
&& new File(project.property("AndroidProject.signing").toString()).exists()) {
def Properties props = new Properties()
def propFile = new File(project.property("AndroidProject.signing").toString())
if(propFile.canRead()) {
props.load(new FileInputStream(propFile))
if (props!=null && props.containsKey('STORE_FILE') && props.containsKey('STORE_PASSWORD') &&
props.containsKey('KEY_ALIAS') && props.containsKey('KEY_PASSWORD')) {
android.signingConfigs.release.storeFile = file(props['STORE_FILE'])
android.signingConfigs.release.storePassword = props['STORE_PASSWORD']
android.signingConfigs.release.keyAlias = props['KEY_ALIAS']
android.signingConfigs.release.keyPassword = props['KEY_PASSWORD']
} else {
println 'androidproject.properties found but some entries are missing'
android.buildTypes.release.signingConfig = null
}
} else {
println 'androidproject.properties file not found'
android.buildTypes.release.signingConfig = null
}
}
このコードは、手順1のgradle.propertiesでAndroidProject.signingプロパティを検索します。プロパティが見つかった場合は、プロパティ値を、手順2で作成したandroidproject.propertiesを指すファイルパスとして変換します。次に、それからのすべてのプロパティ値がbuild.gradleの署名設定として使用されます。
これで、キーストアのパスワードを公開するリスクを心配する必要がなくなりました。
build.gradleにキーストア情報を入力せずにAndroid APKに署名するで詳細を読む
build.gradle
、あなたが以外の何かを持っている必要がありますbuild.gradle
かどうか、これは、環境変数(1つの回答ごと)、プロパティファイル(別の回答ごと)、またはその他の手段に対する調整です。外に物を置きたくない場合はbuild.gradle
、定義により、すべての署名情報が内部 にある必要がありbuid.gradle
ます。