setup method
Configures application signing for the current project.
Implementation
Future<void> setup() async {
LoggerService.section('Android Signing Setup');
final alias = PromptService.ask('Keystore alias', defaultValue: 'fkit.jks');
final storePassword =
PromptService.ask('Store password', defaultValue: 'Fkit@1215');
final keyPassword =
PromptService.ask('Key password', defaultValue: 'Fkit@1215');
final company =
PromptService.ask('Company/Organization', defaultValue: 'Fkit');
final keystoreName = '$alias-keystore.jks';
final keystorePath = 'android/app/$keystoreName';
final keyPropertiesPath = 'android/key.properties';
final keystoreFile = File(keystorePath);
if (keystoreFile.existsSync()) {
final overwrite =
PromptService.confirm('Keystore already exists. Overwrite?');
if (!overwrite) {
LoggerService.warning('Operation cancelled.');
return;
}
keystoreFile.deleteSync();
}
LoggerService.command('Generating keystore...');
await CommandExecutor.run('keytool', [
'-genkey',
'-v',
'-keystore',
keystorePath,
'-keyalg',
'RSA',
'-keysize',
'2048',
'-validity',
'10000',
'-alias',
alias,
'-storepass',
storePassword,
'-keypass',
keyPassword,
'-dname',
'CN=$company, OU=Mobile, O=$company, L=Mumbai, S=Maharashtra, C=IN',
]);
LoggerService.success('Keystore generated');
final keyProperties = '''
storePassword=$storePassword
keyPassword=$keyPassword
keyAlias=$alias
storeFile=$keystoreName
''';
await File(keyPropertiesPath).writeAsString(keyProperties);
LoggerService.success('key.properties created');
await _updateGitignore();
LoggerService.success('.gitignore updated');
LoggerService.blank();
LoggerService.info('Keystore: $keystorePath');
LoggerService.info('Properties: $keyPropertiesPath');
LoggerService.blank();
LoggerService.warning('Next step:');
LoggerService.info('Configure signingConfigs in Gradle.');
}