Flutter插件budinoh的使用_Flutter自动构建并上传你的项目构建到Firebase
Flutter插件budinoh的使用_Flutter自动构建并上传你的项目构建到Firebase
Budinoh
自动构建并上传你的项目构建到Firebase、PlayStore和AppStore。
特性:
- ✅ 基于环境文件自动构建项目
- ✅ 将构建部署到Firebase(命令行/API)
- ✅ 将构建部署到Google Play商店(API)
- ✅ 将构建部署到Apple商店(
xcrun altool
) - ✅ 支持
--dart-define-from-file
参数
使用yaml配置文件激活插件
激活插件
运行以下命令激活插件:
dart pub global activate budinoh
创建包含构建设置的文件
在项目目录中创建一个名为 budinoh.yaml
的文件:
budinoh:
<content>
添加构建信息:
builds:
<name>:
apk: {} # 可选
appbundle: {} # 可选
ipa: # 可选
export_options: <path/ExportOptions.plist> # 可选
分发
你可以自动将应用程序分发到Firebase、Google Play控制台(google_store)和Apple商店。
firebase_api_credentials: # 可选。路径或JSON字符串
builds:
<name>:
<apk|ios>:
firebase_cli:
app_id: <firebase_app_id> # 必需
groups: # 可选
- group-one
- group-two
<apk|ios>:
firebase_api:
credentials: # 可选。路径或JSON字符串。如果缺失,则使用firebase_api_credentials中的凭证
app_id: <firebase_app_id> # 必需
groups: # 可选
- group-one
- group-two
appbundle:
google_store:
credentials: ./google_service_account.json # 可选。路径或JSON字符串
package_name: <com.example> # 必需
ios:
apple_store:
api_issuer: <APIISSUER> # 必需
api_key_id: <APIKEYID> # 必需
apiKey: '.' # 可选。路径或api key内容
环境变量
是否正在使用环境变量?
Budinoh会在你指定的目录中查找名为 ${prefixEnv}${buildKey}${suffixEnv}
的环境文件。
env:
directory: '.' # 可选。环境目录
prefix: <.config.> # 可选。环境文件名前缀
suffix: <.json> # 可选。环境文件名后缀
设置 env: {}
以启用环境变量,默认参数。
启动构建
- 运行
dart pub global run budinoh
- 查看输出文件
<PROJECT_DIR>/build_output/<ENV_NAME>/<BUILD_FILE>
更多设置
运行 dart pub global run budinoh --help
通过Dart代码使用插件
构建客户端
final client = BuildClient();
// 构建APK
client.buildApk(env: , args: );
// 构建AppBundle
client.buildAppBundle(env: , args: );
// 构建IPA
client.buildIpa(exportOptions: , env: , args: );
分发客户端
final client = DistributionClient();
/// 使用Firebase CLI
client.uploadToFirebaseByCli(buildFile, appId: , releaseNotes: , groups: );
/// 使用Firebase Rest API
client.uploadToFirebaseByApi(buildFile, credentials: , appId: , releaseNotes: , groups: );
/// 使用'xcrun altool --upload-app'命令
client.uploadAppToAppleStore(buildFile, apiIssuer: , apiKeyId: , apiKey: );
/// 使用'https://www.googleapis.com/auth/androidpublisher' Google REST API
client.uploadToGoogleStore(buildFile, credentials: , packageName: );
收集凭证
Firebase
- 打开 Google Cloud 控制台并选择你的项目。
- 点击创建服务账户并输入服务账户详细信息。
- 点击创建并继续。
- 添加Firebase App Distribution管理员角色并点击完成。
- 创建私有JSON密钥并将密钥移动到可以被构建环境访问的位置。确保将此文件保存在安全的地方,因为它授予了对Firebase项目的App Distribution的管理权限。
更多信息见 此处
Google Play商店
- 打开 Google Play Console
- 点击账户详情,并注意开发者账户ID。
- 点击设置→ API访问。
- 点击创建新服务账户按钮。
- 跟随弹出窗口中的Google Cloud Platform链接,打开新标签页/窗口:
- 点击Google Cloud Platform控制台顶部的创建服务账户按钮。
- 验证你是否在正确的Google Cloud Platform项目中,通过检查第二输入框中的开发者账户ID。如果不是,打开顶部导航栏中的选择器,并找到包含该ID的项目。
- 提供服务账户名称并点击创建。
- 点击选择角色,然后找到并选择服务账户用户,然后继续。
- 点击完成按钮。
- 点击刚创建的服务账户的动作垂直三点图标。
- 选择管理密钥。
- 点击添加密钥 -> 创建新密钥。
- 确保选择JSON作为密钥类型,然后点击创建。
- 当提示时保存文件并记住保存位置。
返回Google Play控制台标签页,点击完成关闭对话框。
- 点击底部的新服务账户的授权。
- 选择你希望此账户拥有的权限。我们推荐Admin(所有权限),但你也可以手动选择所有复选框并排除一些发布权限,如发布到生产。
- 点击邀请用户完成操作。
更多信息见 此处 中的“收集Google凭证”。
Apple商店
- 在 用户页面 创建一个新的App Store Connect API Key
- 对于更多信息,请参阅 App Store Connect中的权限
- 选择适当的“Keys”选项卡
- 给你的API Key一个适当的角色。你可以阅读更多关于角色的信息。
- 记下 发行人ID,因为你在配置步骤中需要它。
- 下载新创建的API Key文件(.p8)
注意:下载完成后,此文件无法再次下载。
更多信息见 此处 中的“创建App Store Connect API Key”。
使用环境变量而不是Flavors
基于环境变量构建你的应用。你可以根据使用的环境更改bundle_id或应用名称。 更多信息见 文档
完整示例代码
void main() {
print('激活Budinoh: dart pub global activate budinoh');
print('创建Budinoh设置文件!');
print('运行Budinoh: dart pub global run budinoh');
}
更多关于Flutter插件budinoh的使用_Flutter自动构建并上传你的项目构建到Firebase的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter插件budinoh的使用_Flutter自动构建并上传你的项目构建到Firebase的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
在Flutter开发中,如果你遇到了一个名为 budinoh
的插件,且其官方文档或介绍中标记为“undefined”或“未知功能”,这通常意味着该插件的具体功能不明确或者文档不完整。不过,我们可以尝试从插件的源代码、示例代码或者社区讨论中推测其功能和使用方法。
由于我无法直接访问外部的插件代码或实时数据,我将提供一个通用的Flutter插件使用模板,并假设 budinoh
插件遵循Flutter插件的标准结构。这可以帮助你开始探索和使用这个插件。
1. 添加依赖
首先,你需要在你的 pubspec.yaml
文件中添加 budinoh
插件的依赖。请注意,这里的版本号和依赖名称是假设的,你需要根据实际情况替换。
dependencies:
flutter:
sdk: flutter
budinoh: ^0.1.0 # 假设的版本号,请根据实际情况替换
2. 导入插件
在你的 Dart 文件中导入该插件。
import 'package:budinoh/budinoh.dart';
3. 初始化和使用
由于我们不知道 budinoh
插件的具体功能,下面是一个假设的使用案例,其中我们尝试调用一个假想的 unknownFunction
方法。
import 'package:flutter/material.dart';
import 'package:budinoh/budinoh.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Budinoh Plugin Example'),
),
body: Center(
child: BudinohExample(),
),
),
);
}
}
class BudinohExample extends StatefulWidget {
@override
_BudinohExampleState createState() => _BudinohExampleState();
}
class _BudinohExampleState extends State<BudinohExample> {
String result = 'Unknown';
@override
void initState() {
super.initState();
// 假设budinoh有一个名为unknownFunction的异步方法
_callUnknownFunction();
}
Future<void> _callUnknownFunction() async {
try {
// 调用假想的unknownFunction方法,并处理结果
var response = await Budinoh.unknownFunction();
setState(() {
result = response.toString(); // 假设返回的是一个可以被toString()的对象
});
} catch (e) {
setState(() {
result = 'Error: ${e.message}';
});
}
}
@override
Widget build(BuildContext context) {
return Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text('Result from Budinoh:'),
Text(result),
],
);
}
}
注意事项
- 文档和示例:尽可能查找
budinoh
插件的官方文档、示例代码或GitHub仓库,以获取更准确的使用方法和功能描述。 - 错误处理:在实际使用中,务必添加适当的错误处理逻辑,以处理可能的异常和错误。
- 社区资源:利用Stack Overflow、GitHub Issues等社区资源,查找其他开发者可能遇到的问题和解决方案。
由于我们不知道 budinoh
插件的具体实现和API,上述代码只是一个基于假设的示例。在实际使用中,请务必参考插件的官方文档和示例代码。