Flutter密钥生成插件keystore_generator的使用

发布于 1周前 作者 nodeper 来自 Flutter

Flutter密钥生成插件keystore_generator的使用

keystore_generator 是一个帮助你为Android应用签名的Flutter插件。它会生成 keys/KEYSTORE_NAME.keystoreandroid/key.properties 并编辑 android/app/build.gradle 文件。

Features

  • -a(必需)设置别名
  • -p(必需)设置密码
  • -y 如果 keys/KEYSTORE_NAME.keystore 已经存在,则覆盖现有的密钥库

Getting Started

首先,在你的 pubspec.yaml 文件中添加 keystore_generatordev_dependencies

dev_dependencies:
  keystore_generator:

然后运行以下命令来获取依赖:

flutter pub get

Usage

使用以下命令来生成密钥库:

flutter pub run keystore_generator -a test -p test123 -y

这条命令会创建一个别名为 test、密码为 test123 的密钥库,并且如果已经存在同名的密钥库文件,则会覆盖它。

示例

假设你已经添加了 keystore_generator 到你的 pubspec.yaml 文件中,以下是一个完整的示例项目结构和代码:

项目结构

my_flutter_app/
├── android/
│   ├── app/
│   │   └── build.gradle
│   └── key.properties
├── keys/
│   └── KEYSTORE_NAME.keystore
├── lib/
│   └── main.dart
├── pubspec.yaml
└── ...

pubspec.yaml

name: my_flutter_app
description: A new Flutter project.

publish_to: 'none' # Remove this line if you wish to publish to pub.dev

version: 1.0.0+1

environment:
  sdk: ">=2.17.0 <3.0.0"

dependencies:
  flutter:
    sdk: flutter

dev_dependencies:
  flutter_test:
    sdk: flutter
  flutter_lints: ^2.0.0
  keystore_generator:

lib/main.dart

import 'package:flutter/material.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: const MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({Key? key, required this.title}) : super(key: key);

  final String title;

  @override
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  int _counter = 0;

  void _incrementCounter() {
    setState(() {
      _counter++;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            const Text(
              'You have pushed the button this many times:',
            ),
            Text(
              '$_counter',
              style: Theme.of(context).textTheme.headline4,
            ),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: _incrementCounter,
        tooltip: 'Increment',
        child: const Icon(Icons.add),
      ),
    );
  }
}

生成密钥库

在项目根目录下运行以下命令:

flutter pub run keystore_generator -a my_alias -p my_password -y

这将生成所需的密钥库文件并配置好相关的文件。

Additional Information

keystore_generator 插件会严格按照 Flutter官方文档 中推荐的方式修改文件。

希望这些信息对你有帮助!如果你有任何问题或需要进一步的帮助,请随时提问。


更多关于Flutter密钥生成插件keystore_generator的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter密钥生成插件keystore_generator的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,下面是一个关于如何在Flutter项目中使用keystore_generator插件来生成密钥(keystore)的示例代码和相关步骤。

1. 添加依赖

首先,在你的Flutter项目的pubspec.yaml文件中添加keystore_generator依赖:

dependencies:
  flutter:
    sdk: flutter
  keystore_generator: ^x.y.z  # 请替换为最新版本号

然后运行flutter pub get来安装依赖。

2. 使用keystore_generator生成密钥

你可以在你的Dart代码中直接使用keystore_generator来生成密钥。以下是一个简单的示例:

import 'package:keystore_generator/keystore_generator.dart';
import 'dart:io';

void main() async {
  // 配置生成密钥的相关参数
  final keyStoreConfig = KeyStoreConfig(
    alias: 'myKeyAlias',
    keyStorePassword: 'myKeyStorePassword',
    keyPassword: 'myKeyPassword',
    validityInDays: 3650, // 密钥有效期,单位:天
    dn: 'CN=My Company, OU=My Org Unit, O=My Org, L=My City, ST=My State, C=My Country',
    keyAlg: 'RSA',
    keySize: 2048,
  );

  // 生成密钥并保存到文件
  try {
    final keyStore = await KeyStoreGenerator.generateKeyStore(keyStoreConfig);
    final keyStoreFile = File('my_keystore.jks');
    await keyStoreFile.writeAsBytes(keyStore);

    print('Keystore generated successfully and saved to ${keyStoreFile.path}');
  } catch (e) {
    print('Error generating keystore: $e');
  }
}

3. 运行脚本

由于main函数通常在Flutter应用中是用于UI渲染的入口点,而上述代码更适合作为一个命令行工具运行。你可以将上述代码放在一个独立的Dart脚本中,例如generate_keystore.dart,然后使用dart命令运行它:

dart generate_keystore.dart

注意事项

  1. 安全性:在实际项目中,请确保密钥库密码和密钥密码的安全性,不要将它们硬编码在源代码中。可以考虑使用环境变量或安全的密钥管理服务。
  2. 平台兼容性keystore_generator生成的密钥库(.jks文件)主要用于Android平台。如果你需要生成iOS的签名文件,请使用相应的工具(如codesign)。
  3. 依赖版本:确保你使用的是最新版本的keystore_generator插件,因为插件的API可能会随着版本更新而变化。

通过上述步骤,你可以在Flutter项目中方便地生成Android所需的密钥库文件。

回到顶部