blob: ff4754279a62dbaf5348cf8ef1b7350ba9d4aa6d [file] [log] [blame]
/*
* Copyright (C) 2012 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.builder.signing;
import com.android.annotations.NonNull;
import com.android.annotations.Nullable;
import com.android.builder.model.SigningConfig;
import com.android.prefs.AndroidLocation.AndroidLocationException;
import com.google.common.base.Objects;
import java.io.File;
import java.security.KeyStore;
/**
* SigningConfig encapsulates the information necessary to access certificates in a keystore file
* that can be used to sign APKs.
*/
public class DefaultSigningConfig implements SigningConfig {
public static final String DEFAULT_PASSWORD = "android";
public static final String DEFAULT_ALIAS = "AndroidDebugKey";
@NonNull
protected final String mName;
private File mStoreFile = null;
private String mStorePassword = null;
private String mKeyAlias = null;
private String mKeyPassword = null;
private String mStoreType = KeyStore.getDefaultType();
/**
* Creates a SigningConfig.
*/
public DefaultSigningConfig(@NonNull String name) {
mName = name;
}
/**
* Initializes the SigningConfig with the debug keystore/key alias data.
*
* @throws AndroidLocationException if the debug keystore location cannot be found
*/
public void initDebug() throws AndroidLocationException {
mStoreFile = new File(KeystoreHelper.defaultDebugKeystoreLocation());
mStorePassword = DEFAULT_PASSWORD;
mKeyAlias = DEFAULT_ALIAS;
mKeyPassword = DEFAULT_PASSWORD;
}
@Override
@NonNull
public String getName() {
return mName;
}
@Override
@Nullable
public File getStoreFile() {
return mStoreFile;
}
@NonNull
public DefaultSigningConfig setStoreFile(File storeFile) {
mStoreFile = storeFile;
return this;
}
@Override
@Nullable
public String getStorePassword() {
return mStorePassword;
}
@NonNull
public DefaultSigningConfig setStorePassword(String storePassword) {
mStorePassword = storePassword;
return this;
}
@Override
@Nullable
public String getKeyAlias() {
return mKeyAlias;
}
@NonNull
public DefaultSigningConfig setKeyAlias(String keyAlias) {
mKeyAlias = keyAlias;
return this;
}
@Override
@Nullable
public String getKeyPassword() {
return mKeyPassword;
}
@NonNull
public DefaultSigningConfig setKeyPassword(String keyPassword) {
mKeyPassword = keyPassword;
return this;
}
@Override
@Nullable
public String getStoreType() {
return mStoreType;
}
@NonNull
public DefaultSigningConfig setStoreType(String storeType) {
mStoreType = storeType;
return this;
}
@Override
public boolean isSigningReady() {
return mStoreFile != null &&
mStorePassword != null &&
mKeyAlias != null &&
mKeyPassword != null;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
if (!super.equals(o)) return false;
DefaultSigningConfig that = (DefaultSigningConfig) o;
if (mKeyAlias != null ?
!mKeyAlias.equals(that.mKeyAlias) :
that.mKeyAlias != null)
return false;
if (mKeyPassword != null ?
!mKeyPassword.equals(that.mKeyPassword) :
that.mKeyPassword != null)
return false;
if (mStoreFile != null ?
!mStoreFile.equals(that.mStoreFile) :
that.mStoreFile != null)
return false;
if (mStorePassword != null ?
!mStorePassword.equals(that.mStorePassword) :
that.mStorePassword != null)
return false;
if (mStoreType != null ?
!mStoreType.equals(that.mStoreType) :
that.mStoreType != null)
return false;
return true;
}
@Override
public int hashCode() {
int result = super.hashCode();
result = 31 * result + (mStoreFile != null ?
mStoreFile.hashCode() : 0);
result = 31 * result + (mStorePassword != null ?
mStorePassword.hashCode() : 0);
result = 31 * result + (mKeyAlias != null ? mKeyAlias.hashCode() : 0);
result = 31 * result + (mKeyPassword != null ? mKeyPassword.hashCode() : 0);
result = 31 * result + (mStoreType != null ? mStoreType.hashCode() : 0);
return result;
}
@Override
public String toString() {
return Objects.toStringHelper(this)
.add("storeFile", mStoreFile.getAbsolutePath())
.add("storePassword", mStorePassword)
.add("keyAlias", mKeyAlias)
.add("keyPassword", mKeyPassword)
.add("storeType", mStoreType)
.toString();
}
}