Skip to content

Commit 8c68871

Browse files
committed
[ohos]更新plugin注册逻辑
1 parent 41aeaf2 commit 8c68871

File tree

11 files changed

+47
-79
lines changed

11 files changed

+47
-79
lines changed

CHANGELOG.md

+1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
## NEXT
22
1. [ohos]支持传入启动参数和dart入口参数
3+
2. [ohos]更新plugin注册逻辑
34

45
## 4.5.3
56
1. [ohos]移除不必要的生命周期通知
13.9 MB
Binary file not shown.
Binary file not shown.

example/ohos/entry/src/main/ets/entryability/EntryAbility.ets

+4-2
Original file line numberDiff line numberDiff line change
@@ -79,11 +79,13 @@ export default class EntryAbility extends UIAbility implements FlutterBoostDeleg
7979
const optionsBuilder: FlutterBoostSetupOptionsBuilder = new FlutterBoostSetupOptionsBuilder()
8080
.setShellArgs(['--trace-systrace', '--user-authorization-code=QZvoUptODA+KDgeFUluhheYns7X7CnDu9YRv8YmU0GXQcKLzs4C2WgjblrAIhtkqqGg=='])
8181
.setDartEntrypointArgs(['I am from ohos!', '--for-test'])
82-
.setPlugins(GeneratedPluginRegistrant.getPlugins())
8382

84-
FlutterBoost.getInstance().setup(this, this.context, () => {
83+
FlutterBoost.getInstance().setup(this, this.context, (engine) => {
8584
hilog.info(0x0000, 'testTag', '%{public}s', '引擎初始化成功');
8685

86+
// register plugins
87+
GeneratedPluginRegistrant.registerWith(engine)
88+
8789
windowStage.loadContent('pages/EntryPage', (err, data) => {
8890
if (err.code) {
8991
hilog.error(0x0000, 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err) ?? '');

example/ohos/entry/src/main/ets/fmflutterability/FMFlutterAbility.ets

-5
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ import AbilityConstant from '@ohos.app.ability.AbilityConstant';
2525
import hilog from '@ohos.hilog';
2626
import Want from '@ohos.app.ability.Want';
2727
import List from '@ohos.util.List';
28-
import { GeneratedPluginRegistrant } from '../plugins/GeneratedPluginRegistrant';
2928
import { FlutterPlugin } from '@ohos/flutter_ohos/src/main/ets/embedding/engine/plugins/FlutterPlugin';
3029
import { FlutterBoost, FlutterBoostDelegate, FlutterBoostRouteOptions, FlutterBoostAbility } from '@ohos/flutter_boost'
3130

@@ -34,8 +33,4 @@ export default class FMFlutterAbility extends FlutterBoostAbility {
3433
async onCreate(want: Want, launchParam: AbilityConstant.LaunchParam) {
3534
await super.onCreate(want, launchParam)
3635
}
37-
38-
getPlugins():List<FlutterPlugin>{
39-
return GeneratedPluginRegistrant.getPlugins()
40-
}
4136
}
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,27 @@
1-
import { FlutterPlugin } from '@ohos/flutter_ohos/src/main/ets/embedding/engine/plugins/FlutterPlugin';
2-
import List from '@ohos.util.List';
1+
import FlutterEngine from '@ohos/flutter_ohos/src/main/ets/embedding/engine/FlutterEngine';
2+
import Log from '@ohos/flutter_ohos/src/main/ets/util/Log';
33
import FlutterBoostPlugin from '@ohos/flutter_boost'
44

55
/**
66
* Generated file. Do not edit.
77
* This file is generated by the Flutter tool based on the
88
* plugins that support the Ohos platform.
99
*/
10+
11+
const TAG = "GeneratedPluginRegistrant";
12+
1013
export class GeneratedPluginRegistrant {
11-
static getPlugins(): List<FlutterPlugin> {
12-
let pluginList : List<FlutterPlugin> = new List();
13-
pluginList.add(new FlutterBoostPlugin());
14-
return pluginList;
14+
15+
static registerWith(flutterEngine: FlutterEngine) {
16+
try {
17+
flutterEngine.getPlugins()?.add(new FlutterBoostPlugin());
18+
} catch (e) {
19+
Log.e(
20+
TAG,
21+
"Tried to register plugins with FlutterEngine ("
22+
+ flutterEngine
23+
+ ") failed.");
24+
Log.e(TAG, "Received exception while registering", e);
25+
}
1526
}
1627
}

example/ohos/entry/src/main/ets/pureflutterability/PureFlutterAbility.ets

-6
Original file line numberDiff line numberDiff line change
@@ -29,16 +29,10 @@ import Want from '@ohos.app.ability.Want';
2929
import window from '@ohos.window';
3030
import { FlutterAbility } from '@ohos/flutter_ohos'
3131
import { FlutterPlugin } from '@ohos/flutter_ohos/src/main/ets/embedding/engine/plugins/FlutterPlugin';
32-
import { GeneratedPluginRegistrant } from '../plugins/GeneratedPluginRegistrant';
33-
import List from '@ohos.util.List';
3432

3533
export default class PureFlutterAbility extends FlutterAbility {
3634
async onCreate(want: Want, launchParam: AbilityConstant.LaunchParam) {
3735
// want.uri
3836
await super.onCreate(want, launchParam)
3937
}
40-
41-
getPlugins(): List<FlutterPlugin> {
42-
return GeneratedPluginRegistrant.getPlugins()
43-
}
4438
}
+3-18
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,6 @@
1-
/*
2-
* Copyright (c) 2023 Hunan OpenValley Digital Industry Development Co., Ltd.
3-
* Licensed under the Apache License, Version 2.0 (the "License");
4-
* you may not use this file except in compliance with the License.
5-
* You may obtain a copy of the License at
6-
*
7-
* http://www.apache.org/licenses/LICENSE-2.0
8-
*
9-
* Unless required by applicable law or agreed to in writing, software
10-
* distributed under the License is distributed on an "AS IS" BASIS,
11-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12-
* See the License for the specific language governing permissions and
13-
* limitations under the License.
14-
*/
15-
16-
{
17-
"hvigorVersion": "4.0.2",
1+
{
2+
"hvigorVersion": "file:../dependencies/hvigor-4.2.0.tgz",
183
"dependencies": {
19-
"@ohos/hvigor-ohos-plugin": "4.0.2"
4+
"@ohos/hvigor-ohos-plugin": "file:../dependencies/hvigor-ohos-plugin-4.2.0.tgz"
205
}
216
}

example/ohos/hvigor/hvigor-wrapper.js

+2-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

ohos/flutter_boost/src/main/ets/components/FlutterBoost.ets

+18-26
Original file line numberDiff line numberDiff line change
@@ -61,42 +61,43 @@ export class FlutterBoost {
6161
* 设置FlutterBoost的配置信息
6262
* @param delegate FlutterBoost的委托对象
6363
* @param context 上下文对象
64-
* @param callback 回调函数
64+
* @param onEngineReady 回调函数
6565
* @param options FlutterBoost的配置选项
6666
*/
6767
public async setup(delegate: FlutterBoostDelegate,
6868
context: common.Context,
69-
callback: (engine: FlutterEngine) => void,
69+
onEngineReady: (engine: FlutterEngine) => void,
7070
options: FlutterBoostSetupOptions | null) {
7171

72-
this.delegate = delegate
72+
this.delegate = delegate;
7373

74-
// 0.如果为null,指定默认设置参数(初始路由为/,入口参数main)
7574
if (options == null) {
76-
options = FlutterBoostSetupOptions.createDefault()
75+
// 指定默认设置参数(初始路由为/,入口参数main)
76+
options = FlutterBoostSetupOptions.createDefault();
7777
}
7878

79-
// 1.初始化engine
79+
// 1. 初始化引擎
8080
let engine: FlutterEngine | null = this.getEngine()
8181
if (engine == null) {
82-
const engineProvider = options.getFlutterEngineProvider()
82+
const engineProvider = options.getFlutterEngineProvider();
8383
if (engineProvider) {
84-
engine = engineProvider.provideFlutterEngine(context)
84+
engine = engineProvider.provideFlutterEngine(context);
8585
}
8686
if (engine == null) {
87-
engine = new FlutterEngine(context, null, null, new PlatformViewsController())
88-
await engine.init(context, options.getShellArgs(), true, true, null, options.getPlugins())
87+
engine = new FlutterEngine(context, null, null, new PlatformViewsController());
88+
await engine.init(context, options.getShellArgs(), true);
8989
}
9090
FlutterEngineCache.getInstance().put(FlutterBoost.ENGINE_ID, engine);
9191
}
92+
this.flutterEngine = engine;
9293

93-
this.flutterEngine = engine
94-
//2. 设置代理
95-
if (this.delegate) {
96-
this.getPlugin()?.setDelegate(this.delegate)
97-
}
94+
// 2. 通知业务引擎就绪
95+
onEngineReady(engine);
96+
97+
// 3. 设置message channel消息代理
98+
this.getPlugin()!.setDelegate(this.delegate);
9899

99-
// 3.预热FlutterEngine
100+
// 4. DartVM预热
100101
if (!engine.getDartExecutor().isExecutingDart()) {
101102
const navigationChannel = engine.getNavigationChannel()
102103
if (navigationChannel) {
@@ -110,13 +111,6 @@ export class FlutterBoost {
110111
);
111112
engine.getDartExecutor().executeDartEntrypoint(dartEntrypoint, options.getDartEntrypointArgs());
112113
}
113-
114-
if (callback) {
115-
callback(engine)
116-
}
117-
118-
// TODO:添加OHOS实现
119-
// setupActivityLifecycleCallback(application, isBackForegroundEventOverridden);
120114
}
121115

122116

@@ -182,15 +176,13 @@ export class FlutterBoost {
182176
let engine = this.getEngine();
183177
if (engine) {
184178
const plugin: FlutterBoostPlugin | null = FlutterBoostUtils.getPlugin(engine);
185-
if (plugin !== undefined) {
179+
if (plugin != null) {
186180
this.plugin = plugin;
187181
} else {
188182
throw new Error('getPlugin fail. can not get the FlutterBoostPlugin instance,')
189-
return null
190183
}
191184
} else {
192185
throw new Error('getPlugin fail. can not get the engine instance,')
193-
return null
194186
}
195187
}
196188
return this.plugin;

ohos/flutter_boost/src/main/ets/components/FlutterBoostSetupOptions.ets

+2-15
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,7 @@ export class FlutterBoostSetupOptionsBuilder {
3030
public dartEntrypointArgs: string[];
3131
public shouldOverrideBackForegroundEvent: boolean = false;
3232
public shellArgs: string[];
33-
public flutterEngineProvider: FlutterEngineProvider | null
34-
public plugins: List<FlutterPlugin> | null = null;
33+
public flutterEngineProvider: FlutterEngineProvider | null;
3534

3635
constructor() {
3736
this.initialRoute = '/'
@@ -40,7 +39,6 @@ export class FlutterBoostSetupOptionsBuilder {
4039
this.shouldOverrideBackForegroundEvent = false
4140
this.shellArgs = []
4241
this.flutterEngineProvider = null
43-
this.plugins = null
4442
}
4543

4644
public setInitialRoute(initialRoute: string): FlutterBoostSetupOptionsBuilder {
@@ -74,11 +72,6 @@ export class FlutterBoostSetupOptionsBuilder {
7472
return this;
7573
}
7674

77-
public setPlugins(plugins: List<FlutterPlugin>): FlutterBoostSetupOptionsBuilder {
78-
this.plugins = plugins;
79-
return this;
80-
}
81-
8275
public build(): FlutterBoostSetupOptions {
8376
return new FlutterBoostSetupOptions(this);
8477
}
@@ -93,8 +86,7 @@ export class FlutterBoostSetupOptions {
9386
private readonly dartEntrypointArgs: string[];
9487
private readonly shellArgs: string[];
9588
private readonly shouldOverrideBackForegroundEvent: boolean;
96-
private flutterEngineProvider: FlutterEngineProvider | null
97-
private plugins: List<FlutterPlugin> | null = null;
89+
private flutterEngineProvider: FlutterEngineProvider | null;
9890

9991
public constructor(builder: FlutterBoostSetupOptionsBuilder) {
10092
this.initialRoute = builder.initialRoute;
@@ -103,7 +95,6 @@ export class FlutterBoostSetupOptions {
10395
this.shellArgs = builder.shellArgs;
10496
this.shouldOverrideBackForegroundEvent = builder.shouldOverrideBackForegroundEvent;
10597
this.flutterEngineProvider = builder.flutterEngineProvider;
106-
this.plugins = builder.plugins
10798
}
10899

109100
public static createDefault(): FlutterBoostSetupOptions {
@@ -134,10 +125,6 @@ export class FlutterBoostSetupOptions {
134125
return this.shouldOverrideBackForegroundEvent;
135126
}
136127

137-
public getPlugins(): List<FlutterPlugin> | null {
138-
return this.plugins;
139-
}
140-
141128
public toString(): string {
142129
let sb: string[] = ['['];
143130
if (this.shellArgs == null || this.shellArgs.length == 0) {

0 commit comments

Comments
 (0)