keystore static method
Implementation
static Future<void> keystore() async {
final keystoreName = InputService.getValidatedInput(
consoleMessage: Constants.kEnterKeyName,
errorMessage: Constants.kInvalidValue,
functionValidator: Validator.isValidProjectName
);
final projectPath = DirectoryService.getValidProjectPath('android');
final password = InputService.getValidatedInput(
consoleMessage: Constants.kEnterKeyPassword,
errorMessage: Constants.kInvalidPassword,
functionValidator: Validator.isValidPassword
);
final name = InputService.getValidatedInput(
consoleMessage: Constants.kEnterName,
errorMessage: Constants.kInvalidValue,
functionValidator: Validator.isValidName
);
final orgName = InputService.getValidatedInput(
consoleMessage: Constants.kEnterOrg,
errorMessage: Constants.kInvalidValue,
functionValidator: Validator.isValidName
);
final city = InputService.getValidatedInput(
consoleMessage: Constants.kEnterCity,
errorMessage: Constants.kInvalidValue,
functionValidator: Validator.isValidName
);
final state = InputService.getValidatedInput(
consoleMessage: Constants.kEnterState,
errorMessage: Constants.kInvalidValue,
functionValidator: Validator.isValidName
);
final countryCode = InputService.getValidatedInput(
consoleMessage: Constants.kEnterCountryCode,
errorMessage: Constants.kInvalidValue,
functionValidator: Validator.isValidString
);
final inputData = [
password,
password,
name,
'Unknown',
orgName,
city,
state,
countryCode!.toUpperCase(),
'yes'
];
final process = await Process.start(
'keytool',
<String>[
'-genkeypair',
'-v',
'-keystore',
'$keystoreName.jks',
'-keyalg',
'RSA',
'-keysize',
'2048',
'-validity',
'10000',
'-alias',
'upload'
],
workingDirectory: '$projectPath/android/app',
runInShell: true
);
process.stdout.transform(SystemEncoding().decoder).listen((data) {
Console.write(data);
});
process.stderr.transform(SystemEncoding().decoder).listen((data) {
Console.write(data);
});
for (var data in inputData) {
process.stdin.writeln(data);
}
await process.stdin.close();
if (await process.exitCode != 0) {
Console.writeLine(dcli.red('❌ Failed to create key: ${process.stderr}'));
exit(1);
}
Console.writeLine(dcli.green('✅ (1/2) The key was created successfully!'));
final content = '''
storePassword=$password
keyPassword=$password
keyAlias=upload
storeFile=$keystoreName.jks
''';
FileService.createFile(filePath: '$projectPath/android/key.properties', content: content);
FileModifier.addContentToBuildGradle(projectPath);
Console.writeLine(dcli.green('✅ (2/2) Data written successfully!'));
}