📅  最后修改于: 2023-12-03 14:41:15.141000             🧑  作者: Mango
对于许多应用程序,获取应用程序的SHA1和SHA256指纹是一个重要的步骤,例如在使用Google Map API或Firebase等服务时。然而,使用keytool工具来获取这些指纹可能有点繁琐和麻烦。 幸运的是,在Flutter中,有一种更简单的方法来获取应用程序的SHA1和SHA256指纹。
要获取SHA1指纹,只需按照以下步骤进行操作。
key.properties
。storePassword=<your_keystore_password>
keyPassword=<your_key_password>
keyAlias=<your_key_alias>
storeFile=<relative_path_to_keystore_file>
flutter build apk
keytool -list -v -keystore <relative_path_to_keystore_file> -alias <your_key_alias>
在执行命令后,你应该可以看到你的应用程序使用的证书信息,其中包含你的SHA1指纹。要获取SHA256指纹,只需按照以下步骤进行操作。
import 'package:flutter/services.dart';
import 'package:flutter/material.dart';
import 'dart:convert';
import 'dart:core';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
body: Builder(
builder: (BuildContext context) {
return RaisedButton(
child: Text("Get the App's SHA256 Fingerprint"),
onPressed: () async {
try {
var bytes = await rootBundle.load('assets/keystore.jks');
var androidKeystore = String.fromCharCodes(bytes.buffer.asUint8List());
var methodChannel = MethodChannel("com.example.sha2");
final result = await methodChannel.invokeMethod("getSHA256", {
"keystore": androidKeystore,
"alias": "mykey",
"password": "password"
});
Scaffold.of(context).showSnackBar(SnackBar(
content: Text('SHA256 Fingerprint: ${result['sha256']}')));
} catch (error) {
Scaffold.of(context)
.showSnackBar(SnackBar(content: Text(error.toString())));
}
},
);
},
),
),
);
}
}
flutter:
assets:
- assets/keystore.jks
AndroidMethods.dart
的文件并将以下内容复制粘贴进去:import 'dart:async';
import 'dart:convert';
import 'package:flutter/services.dart';
class AndroidMethods {
static const MethodChannel _channel = const MethodChannel('com.example.sha2');
static Future<Map<String, dynamic>> getSHA256(
String keystore, String alias, String password) async {
final Map<String, dynamic> params = <String, dynamic>{
'keystore': keystore,
'alias': alias,
'password': password
};
final Map<String, dynamic> result =
await _channel.invokeMapMethod<String, dynamic>('getSHA256', params);
return result;
}
}
MyApp
,并运行应用程序。你将看到一个按钮,点击它将显示应用程序的SHA256指纹。- 注意:请确保在运行应用程序之前已将源代码中的所有占位符值替换为实际值。