Compare commits

...

61 Commits

Author SHA1 Message Date
gem
9ffe7e4ec7 no message 2025-11-24 14:22:07 +08:00
gem
1d6c53e0ff no message 2025-11-21 12:03:49 +08:00
gem
a35eba1160 增加群组通知过滤 2025-11-20 14:27:36 +08:00
gem
cdc12e513c 增加配置支持35 2025-06-30 14:30:52 +08:00
cpdl
ee0cea6c2b no message 2025-05-07 17:35:06 +08:00
cpdl
b2c3c09c20 no message 2025-05-07 17:01:30 +08:00
cpdl
114980dab0 no message 2025-05-07 16:01:31 +08:00
cpdl
1af1ecfbb9 no message 2025-05-07 11:27:33 +08:00
cpdl
b7c04d16b3 no message 2025-05-07 09:31:53 +08:00
cpdl
67bf71c998 no message 2025-05-06 17:25:49 +08:00
cpdl
43515d8058 临时保存 2025-04-30 17:36:24 +08:00
cpdl
7ed7033716 no message 2025-03-31 18:08:32 +08:00
cpdl
c4c87f34fc no message 2025-03-25 10:23:44 +08:00
cpdl
5028e0ee32 no message 2025-03-24 17:03:46 +08:00
cpdl
bf500772cb no message 2025-03-24 11:25:41 +08:00
cpdl
22fde157ba no message 2025-03-07 16:21:44 +08:00
cpdl
55fa48dbe4 Merge remote-tracking branch 'github/main' into dev_gem_s1
# Conflicts:
#	android/build.gradle
#	ios/flutter_openim_sdk.podspec
2025-03-07 13:43:46 +08:00
cpdl
9ba6c2a92f no message 2025-03-05 14:41:31 +08:00
cpdl
7b577ec8b8 修改android 调用方法错误 2025-03-04 18:01:42 +08:00
Brett
78979b424b fix: https://github.com/openimsdk/openim-sdk-core/releases/tag/v3.8.3-patch.2 2025-03-04 11:15:25 +08:00
cpdl
bd76c29f15 修改bug 2025-03-03 16:05:31 +08:00
cpdl
9998f9b99c 增加方法 2025-03-03 14:50:37 +08:00
cpdl
50bf41df51 ios调整 2025-02-28 14:36:43 +08:00
cpdl
7af14f995c no message 2025-02-28 13:48:48 +08:00
cpdl
3c28242303 no message 2025-02-28 13:33:22 +08:00
cpdl
b443caabc5 增加类型字段 2025-02-28 11:13:08 +08:00
cpdl
50dcfcf495 no message 2025-02-27 18:42:49 +08:00
cpdl
e13c4c6658 更新测试 2025-02-27 17:41:33 +08:00
Brett
95ececeba0 https://github.com/openimsdk/openim-sdk-core/releases/tag/v3.8.3 2025-01-08 16:21:28 +08:00
cpdl
58fa80a2f8 update 2024-12-23 15:00:15 +08:00
cpdl
f929c73d09 更新sdk 2024-12-23 11:37:32 +08:00
cpdl
1b70214455 修改版本 2024-12-20 14:30:53 +08:00
cpdl
6573f03e96 Merge remote-tracking branch 'github/main'
# Conflicts:
#	android/build.gradle
#	ios/flutter_openim_sdk.podspec
2024-12-20 14:06:49 +08:00
cpdl
8852275b1e Revert "测试"
This reverts commit 80a8fab891.
2024-12-10 15:54:23 +08:00
cpdl
80a8fab891 测试 2024-12-09 17:18:50 +08:00
cpdl
ea82c50d79 修改 tostring导致异常 2024-12-06 11:13:48 +08:00
cpdl
70423d9756 测试 2024-12-05 15:38:58 +08:00
Brett
d02be57c1e feat: https://github.com/openimsdk/openim-sdk-core/releases/tag/v3.8.2 2024-11-27 18:47:37 +08:00
Brett
239e111ee4 fix: Error flutter build apk SDK. (#178) 2024-11-27 18:39:34 +08:00
Brett
5d88b4e5d1 feat: https://github.com/openimsdk/openim-sdk-core/releases/tag/v3.8.2 2024-11-22 19:24:57 +08:00
cpdl
a8942269b4 test 2024-11-18 13:05:40 +08:00
cpdl
408f12eb57 no message 2024-11-18 12:30:10 +08:00
cpdl
875dbf5bb2 no message 2024-11-18 10:22:14 +08:00
cpdl
a091534d2c no message 2024-11-18 09:30:19 +08:00
cpdl
3263ebb46f no message 2024-11-18 09:21:26 +08:00
cpdl
a3752065fa no message 2024-11-17 18:31:14 +08:00
Brett
fb56f7747a chore: update SDK version. 2024-11-12 11:00:23 +08:00
Brett
b534ef0fb6 feat: Error with run android (#172) 2024-11-12 10:54:23 +08:00
Brett
91b0f4eb00 chore: update SDK. 2024-10-15 10:10:38 +08:00
Brett
bd210e74cb fix: Why does 3.8.1 getFriendList return List<PublicUserInfo> instead of List<FriendInfo>? (#165) 2024-10-15 10:06:21 +08:00
卡色
0acd81bd70 fix: missing required exports
缺失的部分导出,会导致需要额外引用 `import "package:flutter_openim_sdk/src/models/update_req.dart";`,最终导致:

```
Import of a library in the 'lib/src' directory of another package.
Try importing a public library that exports this library, or removing the import.dartimplementation_imports
```
2024-10-09 14:22:52 +08:00
Brett
6a446a7b33 chore: https://github.com/openimsdk/openim-sdk-core/releases/tag/v3.8.1 2024-09-29 17:27:30 +08:00
Brett
9f57971ee9 feat: Added getFriendListPageMap interface. 2024-08-15 16:28:18 +08:00
Brett
29b43d03ac feat: Add input status related API; update synchronization monitoring related API. 2024-08-07 16:57:15 +08:00
Brett
cade0091a7 fix: Calling setConversationEx will report that type 'String' is not a subtype of type 'List<dynamic>' in type cast. (#138) 2024-08-07 14:55:35 +08:00
Brett
d90bb33764 feat: [Bug fixes and performance enhancements.](https://github.com/openimsdk/openim-sdk-core/releases/tag/v3.8.1-rc.0) 2024-08-06 15:24:10 +08:00
Brett
8c64af6798 feat: [Bug fixes and performance enhancements.](https://github.com/openimsdk/openim-sdk-core/releases/tag/v3.8.1-rc.0) 2024-08-06 15:22:10 +08:00
Brett
c10dabc7e8 feat: [Bug fixes and performance enhancements.](https://github.com/openimsdk/openim-sdk-core/releases/tag/v3.8.0) 2024-08-02 21:59:30 +08:00
Brett
ff25636516 fix: Bug fixes and performance enhancements. 2024-07-28 19:02:22 +08:00
Brett
43d3f05d4d Update README.md 2024-05-16 14:45:23 +08:00
Brett
3b8ec30625 Update README.md 2024-04-25 21:01:53 +08:00
199 changed files with 37242 additions and 1479 deletions

9
.gitignore vendored
View File

@@ -2,3 +2,12 @@
#/.packages
#/.dart_tool
#/example/ios/Podfile.lock
build/
.dart_tool/
.vscode/
.metadata
.idea/encodings.xml
.idea/other.xml
windows/openlib/
windows/third_party/
.claude/

View File

@@ -30,6 +30,192 @@
<excludeFolder url="file://$MODULE_DIR$/example/ios/.symlinks/plugins/flutter_openim_sdk/example/ios/.symlinks/plugins/flutter_openim_sdk/example/ios/.symlinks/plugins/flutter_openim_sdk/example/ios/.symlinks/plugins/flutter_openim_sdk/example/ios/.symlinks/plugins/flutter_openim_sdk/example/ios/.symlinks/plugins/flutter_openim_sdk/example/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/example/ios/.symlinks/plugins/flutter_openim_sdk/example/ios/.symlinks/plugins/flutter_openim_sdk/example/ios/.symlinks/plugins/flutter_openim_sdk/example/ios/.symlinks/plugins/flutter_openim_sdk/example/ios/.symlinks/plugins/flutter_openim_sdk/example/ios/.symlinks/plugins/flutter_openim_sdk/example/.pub" />
<excludeFolder url="file://$MODULE_DIR$/example/ios/.symlinks/plugins/flutter_openim_sdk/example/ios/.symlinks/plugins/flutter_openim_sdk/example/ios/.symlinks/plugins/flutter_openim_sdk/example/ios/.symlinks/plugins/flutter_openim_sdk/example/ios/.symlinks/plugins/flutter_openim_sdk/example/ios/.symlinks/plugins/flutter_openim_sdk/example/build" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/.pub" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/build" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/.pub" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/build" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/.pub" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/build" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/.pub" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/build" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/.pub" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/build" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/.pub" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/build" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/.pub" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/build" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/.pub" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/build" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/.pub" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/build" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/.pub" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/build" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/.pub" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/build" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/.pub" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/build" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/.pub" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/build" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/.pub" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/build" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/.pub" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/build" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/.pub" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/build" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/.pub" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/build" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/.pub" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/build" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/.pub" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/build" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/.pub" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/build" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/.pub" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/build" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/.pub" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/build" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/.pub" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/build" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/.pub" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/build" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/.pub" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/build" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/.pub" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/build" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/.pub" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/build" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/.pub" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/build" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/.pub" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/build" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/.pub" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/build" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/.pub" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/build" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.pub" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/build" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.pub" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/build" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.pub" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/build" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.pub" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/build" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.pub" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/build" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.pub" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/build" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.pub" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/build" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.pub" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/build" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.pub" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/build" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.pub" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/build" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.pub" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/build" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.pub" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/build" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.pub" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/build" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.pub" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/build" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.pub" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/build" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.pub" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/build" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.pub" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/build" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.pub" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/build" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.pub" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/build" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.pub" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/build" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.pub" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/build" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.pub" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/build" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.pub" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/build" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.pub" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/build" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.pub" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/build" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.pub" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/build" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.pub" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/build" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.pub" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/build" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.pub" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/build" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.pub" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/build" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/.pub" />
<excludeFolder url="file://$MODULE_DIR$/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/example/windows/flutter/ephemeral/.plugin_symlinks/flutter_openim_sdk/build" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />

View File

@@ -1,27 +1,29 @@
<component name="libraryTable">
<library name="Dart SDK">
<CLASSES>
<root url="file://$PROJECT_DIR$/../../install/flutter_sdk/bin/cache/dart-sdk/lib/async" />
<root url="file://$PROJECT_DIR$/../../install/flutter_sdk/bin/cache/dart-sdk/lib/cli" />
<root url="file://$PROJECT_DIR$/../../install/flutter_sdk/bin/cache/dart-sdk/lib/collection" />
<root url="file://$PROJECT_DIR$/../../install/flutter_sdk/bin/cache/dart-sdk/lib/convert" />
<root url="file://$PROJECT_DIR$/../../install/flutter_sdk/bin/cache/dart-sdk/lib/core" />
<root url="file://$PROJECT_DIR$/../../install/flutter_sdk/bin/cache/dart-sdk/lib/developer" />
<root url="file://$PROJECT_DIR$/../../install/flutter_sdk/bin/cache/dart-sdk/lib/ffi" />
<root url="file://$PROJECT_DIR$/../../install/flutter_sdk/bin/cache/dart-sdk/lib/html" />
<root url="file://$PROJECT_DIR$/../../install/flutter_sdk/bin/cache/dart-sdk/lib/indexed_db" />
<root url="file://$PROJECT_DIR$/../../install/flutter_sdk/bin/cache/dart-sdk/lib/io" />
<root url="file://$PROJECT_DIR$/../../install/flutter_sdk/bin/cache/dart-sdk/lib/isolate" />
<root url="file://$PROJECT_DIR$/../../install/flutter_sdk/bin/cache/dart-sdk/lib/js" />
<root url="file://$PROJECT_DIR$/../../install/flutter_sdk/bin/cache/dart-sdk/lib/js_interop" />
<root url="file://$PROJECT_DIR$/../../install/flutter_sdk/bin/cache/dart-sdk/lib/js_interop_unsafe" />
<root url="file://$PROJECT_DIR$/../../install/flutter_sdk/bin/cache/dart-sdk/lib/js_util" />
<root url="file://$PROJECT_DIR$/../../install/flutter_sdk/bin/cache/dart-sdk/lib/math" />
<root url="file://$PROJECT_DIR$/../../install/flutter_sdk/bin/cache/dart-sdk/lib/mirrors" />
<root url="file://$PROJECT_DIR$/../../install/flutter_sdk/bin/cache/dart-sdk/lib/svg" />
<root url="file://$PROJECT_DIR$/../../install/flutter_sdk/bin/cache/dart-sdk/lib/typed_data" />
<root url="file://$PROJECT_DIR$/../../install/flutter_sdk/bin/cache/dart-sdk/lib/web_audio" />
<root url="file://$PROJECT_DIR$/../../install/flutter_sdk/bin/cache/dart-sdk/lib/web_gl" />
<root url="file://$PROJECT_DIR$/../../../../fvm/versions/3.29.2/bin/cache/dart-sdk/lib/_internal" />
<root url="file://$PROJECT_DIR$/../../../../fvm/versions/3.29.2/bin/cache/dart-sdk/lib/async" />
<root url="file://$PROJECT_DIR$/../../../../fvm/versions/3.29.2/bin/cache/dart-sdk/lib/cli" />
<root url="file://$PROJECT_DIR$/../../../../fvm/versions/3.29.2/bin/cache/dart-sdk/lib/collection" />
<root url="file://$PROJECT_DIR$/../../../../fvm/versions/3.29.2/bin/cache/dart-sdk/lib/concurrent" />
<root url="file://$PROJECT_DIR$/../../../../fvm/versions/3.29.2/bin/cache/dart-sdk/lib/convert" />
<root url="file://$PROJECT_DIR$/../../../../fvm/versions/3.29.2/bin/cache/dart-sdk/lib/core" />
<root url="file://$PROJECT_DIR$/../../../../fvm/versions/3.29.2/bin/cache/dart-sdk/lib/developer" />
<root url="file://$PROJECT_DIR$/../../../../fvm/versions/3.29.2/bin/cache/dart-sdk/lib/ffi" />
<root url="file://$PROJECT_DIR$/../../../../fvm/versions/3.29.2/bin/cache/dart-sdk/lib/html" />
<root url="file://$PROJECT_DIR$/../../../../fvm/versions/3.29.2/bin/cache/dart-sdk/lib/indexed_db" />
<root url="file://$PROJECT_DIR$/../../../../fvm/versions/3.29.2/bin/cache/dart-sdk/lib/io" />
<root url="file://$PROJECT_DIR$/../../../../fvm/versions/3.29.2/bin/cache/dart-sdk/lib/isolate" />
<root url="file://$PROJECT_DIR$/../../../../fvm/versions/3.29.2/bin/cache/dart-sdk/lib/js" />
<root url="file://$PROJECT_DIR$/../../../../fvm/versions/3.29.2/bin/cache/dart-sdk/lib/js_interop" />
<root url="file://$PROJECT_DIR$/../../../../fvm/versions/3.29.2/bin/cache/dart-sdk/lib/js_interop_unsafe" />
<root url="file://$PROJECT_DIR$/../../../../fvm/versions/3.29.2/bin/cache/dart-sdk/lib/js_util" />
<root url="file://$PROJECT_DIR$/../../../../fvm/versions/3.29.2/bin/cache/dart-sdk/lib/math" />
<root url="file://$PROJECT_DIR$/../../../../fvm/versions/3.29.2/bin/cache/dart-sdk/lib/mirrors" />
<root url="file://$PROJECT_DIR$/../../../../fvm/versions/3.29.2/bin/cache/dart-sdk/lib/svg" />
<root url="file://$PROJECT_DIR$/../../../../fvm/versions/3.29.2/bin/cache/dart-sdk/lib/typed_data" />
<root url="file://$PROJECT_DIR$/../../../../fvm/versions/3.29.2/bin/cache/dart-sdk/lib/web_audio" />
<root url="file://$PROJECT_DIR$/../../../../fvm/versions/3.29.2/bin/cache/dart-sdk/lib/web_gl" />
</CLASSES>
<JAVADOC />
<SOURCES />

3
.idea/misc.xml generated
View File

@@ -3,4 +3,7 @@
<type id="android" />
</component>
<component name="ProjectRootManager" version="2" project-jdk-name="Android API 25 Platform" project-jdk-type="Android SDK" />
<component name="ProjectType">
<option name="id" value="io.flutter" />
</component>
</project>

View File

@@ -1,3 +1,31 @@
## 3.8.2
- [Bug fixes and performance enhancements.](https://github.com/openimsdk/openim-sdk-core/releases/tag/v3.8.2)
## 3.8.1+2
- [Bug fixes and performance enhancements.](https://github.com/openimsdk/openim-sdk-core/releases/tag/v3.8.1)
## 3.8.1+1
- [Bug fixes and performance enhancements.](https://github.com/openimsdk/openim-sdk-core/releases/tag/v3.8.1)
## 3.8.1
- [Bug fixes and performance enhancements.](https://github.com/openimsdk/openim-sdk-core/releases/tag/v3.8.1)
## 3.8.1-rc.0
- [Bug fixes and performance enhancements.](https://github.com/openimsdk/openim-sdk-core/releases/tag/v3.8.1-rc.0)
## 3.8.0
- [Bug fixes and performance enhancements.](https://github.com/openimsdk/openim-sdk-core/releases/tag/v3.8.0)
## 3.8.0-rc.16
- [Bug fixes and performance enhancements.](https://github.com/openimsdk/openim-sdk-core/releases/tag/v3.8.0-rc.16)
## 3.5.1
- [Bug fixes and performance enhancements.](https://github.com/openimsdk/openim-sdk-core/releases/tag/v3.5.1)

195
CLAUDE.md Normal file
View File

@@ -0,0 +1,195 @@
# CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
## 项目概述
这是一个 Flutter 插件项目,为 OpenIM 即时通讯服务提供 Flutter SDK 封装。该 SDK 支持 Android、iOS 和 Windows 平台。
**核心架构:**
- Flutter 层通过 MethodChannel 与原生层通信
- Android 原生层使用 gomobile 编译的 AAR 包与 OpenIM SDK Core (Go) 交互
- iOS 原生层使用 gomobile 编译的 XCFramework 与 OpenIM SDK Core 交互
- 数据传输格式为 JSON,数据存储使用 OpenIM SDK Core 内置的 SQLite
## 常用命令
### 开发环境设置
```bash
# 安装依赖
flutter pub get
# 运行示例应用
cd example
flutter pub get
flutter run
```
### 测试
```bash
# 运行单元测试
flutter test
# 运行集成测试
cd example
flutter test integration_test/plugin_integration_test.dart
```
### 代码格式化
```bash
# 格式化代码
dart format .
# 分析代码
flutter analyze
```
### Android 构建
```bash
# 在 example 目录中构建 Android
cd example
flutter build apk
# 构建 Android AAR
cd android
./gradlew assembleRelease
```
### iOS 构建
```bash
# 在 example 目录中构建 iOS
cd example
flutter build ios
```
## 核心架构设计
### 1. 管理器层次结构
`IMManager` 是核心管理器,包含以下子管理器:
- `ConversationManager`: 会话管理(lib/src/manager/im_conversation_manager.dart)
- `MessageManager`: 消息管理(lib/src/manager/im_message_manager.dart)
- `FriendshipManager`: 好友关系管理(lib/src/manager/im_friendship_manager.dart)
- `GroupManager`: 群组管理(lib/src/manager/im_group_manager.dart)
- `ChannelManager`: <20><>道管理(lib/src/manager/im_channel_manager.dart)
- `UserManager`: 用户管理(lib/src/manager/im_user_manager.dart)
### 2. 双向通信机制
**Flutter → Native (方法调用):**
- Flutter 通过 MethodChannel 调用原生方法
- 参数统一使用 `_buildParam()` 封装,添加 `ManagerName` 和清理空值
- 每个请求可携带 `operationID` 用于追踪
**Native → Flutter (回调监听):**
- 原生层通过 MethodChannel 回调 Flutter 层
- Flutter 在 `IMManager._addNativeCallback()` 中统一处理所有监听器回调
- 监听器类型定义在 `lib/src/enum/listener_type.dart`
### 3. 数据模型转换
所有数据模型位于 `lib/src/models/`,使用 JSON 序列化/反序列化:
- `Utils.toObj()`: JSON Map 转对象
- `Utils.toList()`: JSON Array 转对象列表
- 所有模型类实现 `fromJson()``toJson()` 方法
### 4. 监听器系统
监听器定义在 `lib/src/listener/`,主要包括:
- `OnConnectListener`: 连接状态监听
- `OnAdvancedMsgListener`: 高级消息监听
- `OnConversationListener`: 会话变化监听
- `OnFriendshipListener`: 好友关系监听
- `OnGroupListener`: 群组事件监听
- `OnChannelListener`: 频道事件监听
- `OnUserListener`: 用户信息监听
### 5. 原生层实现
**Android (Java):**
- 插件入口: `android/src/main/java/io/openim/flutter_openim_sdk/FlutterOpenimSdkPlugin.java`
- 各管理器实现: `android/src/main/java/io/openim/flutter_openim_sdk/manager/`
- 依赖的 OpenIM SDK Core AAR 包位于 `android/libs/`
**iOS (Swift/ObjC):**
- 插件入口: `ios/Classes/SwiftFlutterOpenimSdkPlugin.swift`
- 模块化管理器: `ios/Classes/Module/`
- 工具类: `ios/Classes/Util/`
## 开发注意事项
### SDK 初始化和登录流程
1. **必须先初始化 SDK** (`initSDK()``init()`)
2. **设置监听器** (必须在登录前完成)
3. **登录** (`login()`)
4. SDK 初始化需要提供:
- `platformID`: 平台 ID (参考 `IMPlatform` 枚举)
- `apiAddr`: OpenIM Server API <20><><EFBFBD>
- `wsAddr`: OpenIM Server WebSocket 地址
- `dataDir`: 数据存储目录
### 消息收发
- 创建消息使用 `MessageManager.create*Message()` 系列方法
- 发送消息使用 `MessageManager.sendMessage()`
- 接收消息通过 `OnAdvancedMsgListener` 监听
- 支持单聊、群聊、在线消息等多种场景
### 平台特定功能
- **Android 独有**: `setListenerForService()` - 用于后台服务监听
- **通知可见性规则**: Android SDK 35+ 支持的通知管理功能
- **文件上传**: 支持自定义上传监听器 (`OnUploadFileListener`)
### 版本管理
- SDK 版本定义在 `lib/src/openim.dart` 中的 `OpenIM.version`
- `pubspec.yaml` 中的版本应与之保持一致
- 使用格式: `major.minor.patch+build` (如 `3.8.3+2`)
### 日志和调试
- 使用 `Logger.print()` 输出日志 (lib/src/logger.dart)
- 支持上传日志到服务器: `uploadLogs()`
- 可自定义日志级别 (1-6,默认 6 为全部输出)
## Android 特定配置
### ProGuard 规则
项目使用 ProGuard 混淆,规则文件在 `example/android/app/proguard-rules.pro`:
```proguard
-keep class io.openim.** { *; }
-keep class open_im_sdk.** { *; }
-keep class open_im_sdk_callback.** { *; }
```
### Gradle 配置
- 使用阿里云 Maven 镜像加速依赖下载
- 本地 Maven 仓库: `http://192.168.77.132:8081/repository/mvn2-group` (需根据实际情况修改)
- `compileSdkVersion`: 34
- `minSdkVersion`: 21
## 常见任务
### 添加新的 API 方法
1. 在对应的 Manager 类(Dart)中添加方法
2. 在 Android Manager 类(Java)中实现
3. 在 iOS Module 类(Swift)中实现
4. 确保参数序列化和回调处理正确
### 添加新的监听器
1.`lib/src/listener/` 创建监听器类
2.`ListenerType` 枚举中添加类型
3.`IMManager._addNativeCallback()` 中添加处理逻辑
4. 在原生层实现对应的回调触发
### 调试原生层交互
- Flutter → Native: 在 `Logger.print()` 查看方法调用日志
- Native → Flutter: 在 `_addNativeCallback()` 设置断点查看回调数据
- 使用 `operationID` 追踪特定操作的完整流程

View File

@@ -138,7 +138,7 @@ You can find a demo Flutter app that uses the SDK in the [open-im-flutter-demo](
- 📚 [OpenIM Community](https://github.com/OpenIMSDK/community)
- 💕 [OpenIM Interest Group](https://github.com/Openim-sigs)
- 🚀 [Join our Slack community](https://join.slack.com/t/openimsdk/shared_invite/zt-22720d66b-o_FvKxMTGXtcnnnHiMqe9Q)
- 🚀 [Join our Slack community](https://join.slack.com/t/openimsdk/shared_invite/zt-2ijy1ys1f-O0aEDCr7ExRZ7mwsHAVg9A)
- :eyes: [Join our wechat (微信群)](https://openim-1253691595.cos.ap-nanjing.myqcloud.com/WechatIMG20.jpeg)
## Community Meetings :calendar:

View File

@@ -3,7 +3,6 @@ version '1.0'
def dir = getCurrentProjectDir()
// 将aar放到libs本地仓库替换远程仓库
def getCurrentProjectDir() {
String result = ""
rootProject.allprojects { project ->
@@ -15,42 +14,60 @@ def getCurrentProjectDir() {
}
buildscript {
ext.kotlin_version = '1.9.24'
repositories {
maven { url 'https://maven.aliyun.com/repository/public' }
maven { url 'https://maven.aliyun.com/repository/central' }
maven { url 'https://maven.aliyun.com/nexus/content/repositories/google' }
maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }
google()
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.5.4'
classpath 'com.android.tools.build:gradle:7.3.1'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
rootProject.allprojects {
repositories {
// 将aar放到libs本地仓库替换远程仓库
// maven { url "$dir/libs" }
maven { url 'https://open-im-online.rentsoft.cn:51000/repository/maven2/' }
// 本地 AAR 调试配置 - 使用 rootProject.projectDir 确保路径正确
// maven { url 'file://' + rootProject.projectDir.absolutePath + '/local-maven' }
maven {
url 'http://192.168.77.132:8081/repository/mvn2-group'
allowInsecureProtocol true
}
google()
mavenCentral()
}
}
apply plugin: 'com.android.library'
apply plugin: 'kotlin-android'
android {
compileSdkVersion 30
namespace 'io.openim.flutter_openim_sdk'
compileSdkVersion 34
defaultConfig {
minSdkVersion 21
ndk {
abiFilters "arm64-v8a","x86" // 根据需要添加其他 ABI
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = '1.8'
}
}
dependencies {
// 本地依赖现将aar复制到libs/io/openim/core-sdk/0.0.1/ 下命名core-sdk-0.0.1.aar
// implementation 'io.openim:core-sdk:0.0.1@aar'
implementation 'io.openim:core-sdk:3.5.1@aar'
//implementation 'com.openim:sdkcore:1.0.15-local'
implementation 'com.openim:sdkcore:1.0.16'
}

View File

@@ -1,5 +1,6 @@
#Tue Nov 12 14:22:37 CST 2024
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://mirrors.cloud.tencent.com/gradle/gradle-7.4-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip

View File

@@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="io.openim.flutter_openim_sdk">
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
</manifest>

View File

@@ -24,7 +24,7 @@ import io.openim.flutter_openim_sdk.manager.GroupManager;
import io.openim.flutter_openim_sdk.manager.IMManager;
import io.openim.flutter_openim_sdk.manager.MessageManager;
import io.openim.flutter_openim_sdk.manager.UserManager;
import io.openim.flutter_openim_sdk.manager.ChannelManager;
/**
* FlutterOpenimSdkPlugin
@@ -42,6 +42,7 @@ public class FlutterOpenimSdkPlugin implements FlutterPlugin, MethodCallHandler,
private static MessageManager messageManager;
private static ConversationManager conversationManager;
private static GroupManager groupManager;
private static ChannelManager channelManager;
private static Activity activity;
private static Context context;
private ConnectivityListener connectivityListener;
@@ -55,6 +56,8 @@ public class FlutterOpenimSdkPlugin implements FlutterPlugin, MethodCallHandler,
FlutterOpenimSdkPlugin.messageManager = new MessageManager();
FlutterOpenimSdkPlugin.conversationManager = new ConversationManager();
FlutterOpenimSdkPlugin.groupManager = new GroupManager();
FlutterOpenimSdkPlugin.channelManager = new ChannelManager();
}

View File

@@ -29,6 +29,14 @@ public class OnAdvancedMsgListener implements open_im_sdk_callback.OnAdvancedMsg
CommonUtil.emitEvent("advancedMsgListener", "onNewRecvMessageRevoked", values);
}
@Override
public void onNewRecvMessageEdited(String s) {
final Map<String, String> values = new ArrayMap<>();
values.put("id", id);
values.put("messageEdited", s);
CommonUtil.emitEvent("advancedMsgListener", "onNewRecvMessageEdited", values);
}
@Override
public void onRecvC2CReadReceipt(String s) {
final Map<String, String> values = new ArrayMap<>();
@@ -37,42 +45,6 @@ public class OnAdvancedMsgListener implements open_im_sdk_callback.OnAdvancedMsg
CommonUtil.emitEvent("advancedMsgListener", "onRecvC2CReadReceipt", values);
}
@Override
public void onRecvGroupReadReceipt(String s) {
final Map<String, String> values = new ArrayMap<>();
values.put("id", id);
values.put("groupMsgReceiptList", s);
CommonUtil.emitEvent("advancedMsgListener", "onRecvGroupReadReceipt", values);
}
@Override
public void onRecvMessageExtensionsAdded(String s, String s1) {
final Map<String, String> values = new ArrayMap<>();
values.put("id", id);
values.put("msgID", s);
values.put("reactionExtensionList", s1);
CommonUtil.emitEvent("advancedMsgListener", "onRecvMessageExtensionsAdded", values);
}
@Override
public void onRecvMessageExtensionsChanged(String s, String s1) {
final Map<String, String> values = new ArrayMap<>();
values.put("id", id);
values.put("msgID", s);
values.put("reactionExtensionList", s1);
CommonUtil.emitEvent("advancedMsgListener", "onRecvMessageExtensionsChanged", values);
}
@Override
public void onRecvMessageExtensionsDeleted(String s, String s1) {
final Map<String, String> values = new ArrayMap<>();
values.put("id", id);
values.put("msgID", s);
values.put("reactionExtensionKeyList", s1);
CommonUtil.emitEvent("advancedMsgListener", "onRecvMessageExtensionsDeleted", values);
}
@Override
public void onRecvNewMessage(String s) {
final Map<String, String> values = new ArrayMap<>();

View File

@@ -19,13 +19,15 @@ public class OnBaseListener implements Base {
@Override
public void onError(int l, String s) {
Log.i("F-OpenIMSDK(native call flutter)", "method: 【 " + call.method + " 】, onError: { code:" + l + ", message:" + s + "}");
String threadName = Thread.currentThread().getName();
Log.i("F-OpenIMSDK(native call flutter)", "thread: " + threadName + " method: 【 " + call.method + " 】, onError: { code:" + l + ", message:" + s + "}");
CommonUtil.runMainThreadReturnError(result, l, s, null);
}
@Override
public void onSuccess(String s) {
Log.i("F-OpenIMSDK(native call flutter)", "method: 【 " + call.method + " 】, onSuccess: " + s);
String threadName = Thread.currentThread().getName();
Log.i("F-OpenIMSDK(native call flutter)", "thread: " + threadName + " method: 【 " + call.method + " 】, onSuccess: " + s);
CommonUtil.runMainThreadReturn(result, s);
}
}

View File

@@ -0,0 +1,32 @@
package io.openim.flutter_openim_sdk.listener;
import io.openim.flutter_openim_sdk.util.CommonUtil;
public class OnChannelListener implements open_im_sdk_callback.OnChannelListener {
@Override
public void onChannelDismissed(String s) {
CommonUtil.emitEvent("channelListener", "onChannelDismissed", s);
}
@Override
public void onChannelInfoChanged(String s) {
CommonUtil.emitEvent("channelListener", "onChannelInfoChanged", s);
}
@Override
public void onChannelMemberAdded(String s) {
CommonUtil.emitEvent("channelListener", "onChannelMemberAdded", s);
}
@Override
public void onChannelMemberDeleted(String s) {
CommonUtil.emitEvent("channelListener", "onChannelMemberDeleted", s);
}
@Override
public void onChannelMemberInfoChanged(String s) {
CommonUtil.emitEvent("channelListener", "onChannelMemberInfoChanged", s);
}
}

View File

@@ -31,4 +31,9 @@ public class OnConnListener implements open_im_sdk_callback.OnConnListener {
public void onUserTokenExpired() {
CommonUtil.emitEvent("connectListener", "onUserTokenExpired", null);
}
@Override
public void onUserTokenInvalid(String s) {
CommonUtil.emitEvent("connectListener", "onUserTokenInvalid", s);
}
}

View File

@@ -21,18 +21,23 @@ public class OnConversationListener implements open_im_sdk_callback.OnConversati
}
@Override
public void onSyncServerFailed() {
CommonUtil.emitEvent("conversationListener", "onSyncServerFailed", null);
public void onSyncServerFailed(boolean reinstalled) {
CommonUtil.emitEvent("conversationListener", "onSyncServerFailed", reinstalled);
}
@Override
public void onSyncServerFinish() {
CommonUtil.emitEvent("conversationListener", "onSyncServerFinish", null);
public void onSyncServerFinish(boolean reinstalled) {
CommonUtil.emitEvent("conversationListener", "onSyncServerFinish", reinstalled);
}
@Override
public void onSyncServerStart() {
CommonUtil.emitEvent("conversationListener", "onSyncServerStart", null);
public void onSyncServerStart(boolean reinstalled) {
CommonUtil.emitEvent("conversationListener", "onSyncServerStart", reinstalled);
}
@Override
public void onSyncServerProgress(long progress) {
CommonUtil.emitEvent("conversationListener", "onSyncServerProgress", progress);
}
@Override

View File

@@ -24,66 +24,6 @@
// }
//
// @Override
// public void onHangUp(String s) {
//
// }
//
// @Override
// public void onInvitationCancelled(String s) {
//
// }
//
// @Override
// public void onInvitationTimeout(String s) {
//
// }
//
// @Override
// public void onInviteeAccepted(String s) {
//
// }
//
// @Override
// public void onInviteeAcceptedByOtherDevice(String s) {
//
// }
//
// @Override
// public void onInviteeRejected(String s) {
//
// }
//
// @Override
// public void onInviteeRejectedByOtherDevice(String s) {
//
// }
//
// @Override
// public void onReceiveCustomSignal(String s) {
//
// }
//
// @Override
// public void onReceiveNewInvitation(String s) {
//
// }
//
// @Override
// public void onRoomParticipantConnected(String s) {
//
// }
//
// @Override
// public void onRoomParticipantDisconnected(String s) {
//
// }
//
// @Override
// public void onStreamChange(String s) {
//
// }
//
// @Override
// public void onRecvNewMessage(String s) {
// CommonUtil.emitEvent("listenerForService", "onRecvNewMessage", s);
// }

View File

@@ -13,4 +13,19 @@ public class OnUserListener implements open_im_sdk_callback.OnUserListener {
public void onUserStatusChanged(String s) {
CommonUtil.emitEvent("userListener", "onUserStatusChanged", s);
}
@Override
public void onUserCommandAdd(String s) {
CommonUtil.emitEvent("userListener", "onUserCommandAdd", s);
}
@Override
public void onUserCommandDelete(String s) {
CommonUtil.emitEvent("userListener", "onUserCommandDelete", s);
}
@Override
public void onUserCommandUpdate(String s) {
CommonUtil.emitEvent("userListener", "onUserCommandUpdate", s);
}
}

View File

@@ -0,0 +1,103 @@
package io.openim.flutter_openim_sdk.manager;
import io.flutter.plugin.common.MethodCall;
import io.flutter.plugin.common.MethodChannel;
import io.openim.flutter_openim_sdk.listener.OnBaseListener;
import io.openim.flutter_openim_sdk.listener.OnChannelListener;
import open_im_sdk.Open_im_sdk;
public class ChannelManager extends BaseManager {
public void setChannelListener(MethodCall methodCall, MethodChannel.Result result) {
Open_im_sdk.setChannelListener(new OnChannelListener());
result.success(null);
}
public void getChannelMembersInfo(MethodCall methodCall, MethodChannel.Result result) {
Open_im_sdk.getSpecifiedChannelMembersInfo(
new OnBaseListener(result, methodCall),
value(methodCall, "operationID"),
value(methodCall, "channelID"),
jsonValue(methodCall, "userIDList")
);
}
public void getChannelMemberList(MethodCall methodCall, MethodChannel.Result result) {
Open_im_sdk.getChannelMemberList(
new OnBaseListener(result, methodCall),
value(methodCall, "operationID"),
value(methodCall, "channelID"),
value(methodCall, "filter"),
value(methodCall, "offset"),
value(methodCall, "count")
);
}
public void getChannelsInfo(MethodCall methodCall, MethodChannel.Result result) {
Open_im_sdk.getSpecifiedChannelsInfo(
new OnBaseListener(result, methodCall),
value(methodCall, "operationID"),
jsonValue(methodCall, "channelIDList")
);
}
public void joinChannel(MethodCall methodCall, MethodChannel.Result result) {
Open_im_sdk.joinChannel(
new OnBaseListener(result, methodCall),
value(methodCall, "operationID"),
value(methodCall, "channelID"),
value(methodCall, "reason"),
value(methodCall, "joinSource"),
value(methodCall, "ex")
);
}
public void quitChannel(MethodCall methodCall, MethodChannel.Result result) {
Open_im_sdk.quitChannel(
new OnBaseListener(result, methodCall),
value(methodCall, "operationID"),
value(methodCall, "channelID")
);
}
public void changeChannelMute(MethodCall methodCall, MethodChannel.Result result) {
Open_im_sdk.changeChannelMute(
new OnBaseListener(result, methodCall),
value(methodCall, "operationID"),
value(methodCall, "channelID"),
value(methodCall, "mute")
);
}
public void changeChannelMemberMute(MethodCall methodCall, MethodChannel.Result result) {
Open_im_sdk.changeChannelMemberMute(
new OnBaseListener(result, methodCall),
value(methodCall, "operationID"),
value(methodCall, "channelID"),
value(methodCall, "userID"),
int2long(methodCall, "seconds")
);
}
public void isJoinChannel(MethodCall methodCall, MethodChannel.Result result) {
Open_im_sdk.isJoinChannel(new OnBaseListener(result, methodCall),
value(methodCall, "operationID"),
value(methodCall, "channelID")
);
}
public void getUsersInChannel(MethodCall methodCall, MethodChannel.Result result) {
Open_im_sdk.getUsersInChannel(new OnBaseListener(result, methodCall),
value(methodCall, "operationID"),
value(methodCall, "channelID"),
jsonValue(methodCall, "userIDs")
);
}
}

View File

@@ -59,15 +59,6 @@ public class ConversationManager extends BaseManager {
);
}
public void pinConversation(MethodCall methodCall, MethodChannel.Result result) {
Open_im_sdk.pinConversation(
new OnBaseListener(result, methodCall),
value(methodCall, "operationID"),
value(methodCall, "conversationID"),
value(methodCall, "isPinned")
);
}
public void hideConversation(MethodCall methodCall, MethodChannel.Result result) {
Open_im_sdk.hideConversation(
new OnBaseListener(result, methodCall),
@@ -98,32 +89,6 @@ public class ConversationManager extends BaseManager {
int2long(methodCall, "sessionType")));
}
public void setConversationRecvMessageOpt(MethodCall methodCall, MethodChannel.Result result) {
Open_im_sdk.setConversationRecvMessageOpt(
new OnBaseListener(result, methodCall),
value(methodCall, "operationID"),
value(methodCall, "conversationID"),
int2long(methodCall, "status")
);
}
public void getConversationRecvMessageOpt(MethodCall methodCall, MethodChannel.Result result) {
Open_im_sdk.getConversationRecvMessageOpt(
new OnBaseListener(result, methodCall),
value(methodCall, "operationID"),
jsonValue(methodCall, "conversationIDList")
);
}
public void setConversationPrivateChat(MethodCall methodCall, MethodChannel.Result result) {
Open_im_sdk.setConversationPrivateChat(
new OnBaseListener(result, methodCall),
value(methodCall, "operationID"),
value(methodCall, "conversationID"),
value(methodCall, "isPrivate")
);
}
public void clearConversationAndDeleteAllMsg(MethodCall methodCall, MethodChannel.Result result) {
Open_im_sdk.clearConversationAndDeleteAllMsg(
new OnBaseListener(result, methodCall),
@@ -140,56 +105,10 @@ public class ConversationManager extends BaseManager {
);
}
public void deleteAllConversationFromLocal(MethodCall methodCall, MethodChannel.Result result) {
}
public void resetConversationGroupAtType(MethodCall methodCall, MethodChannel.Result result) {
Open_im_sdk.resetConversationGroupAtType(
new OnBaseListener(result, methodCall),
value(methodCall, "operationID"),
value(methodCall, "conversationID")
);
}
public void getAtAllTag(MethodCall methodCall, MethodChannel.Result result) {
CommonUtil.runMainThreadReturn(result, Open_im_sdk.getAtAllTag(value(methodCall, "operationID")));
}
public void setGlobalRecvMessageOpt(MethodCall methodCall, MethodChannel.Result result) {
Open_im_sdk.setGlobalRecvMessageOpt(
new OnBaseListener(result, methodCall),
value(methodCall, "operationID"),
int2long(methodCall, "status")
);
}
public void setConversationBurnDuration(MethodCall methodCall, MethodChannel.Result result) {
Open_im_sdk.setConversationBurnDuration(
new OnBaseListener(result, methodCall),
value(methodCall, "operationID"),
value(methodCall, "conversationID"),
value(methodCall, "burnDuration")
);
}
public void setConversationIsMsgDestruct(MethodCall methodCall, MethodChannel.Result result) {
Open_im_sdk.setConversationIsMsgDestruct(
new OnBaseListener(result, methodCall),
value(methodCall, "operationID"),
value(methodCall, "conversationID"),
value(methodCall, "isMsgDestruct")
);
}
public void setConversationMsgDestructTime(MethodCall methodCall, MethodChannel.Result result) {
Open_im_sdk.setConversationMsgDestructTime(
new OnBaseListener(result, methodCall),
value(methodCall, "operationID"),
value(methodCall, "conversationID"),
int2long(methodCall, "duration")
);
}
public void hideAllConversations(MethodCall methodCall, MethodChannel.Result result) {
Open_im_sdk.hideAllConversations(
new OnBaseListener(result, methodCall),
@@ -205,12 +124,39 @@ public class ConversationManager extends BaseManager {
);
}
public void setConversationEx(MethodCall methodCall, MethodChannel.Result result) {
Open_im_sdk.setConversationEx(
public void changeInputStates(MethodCall methodCall, MethodChannel.Result result) {
Open_im_sdk.changeInputStates(
new OnBaseListener(result, methodCall),
value(methodCall, "operationID"),
value(methodCall, "conversationID"),
value(methodCall, "ex")
value(methodCall, "focus")
);
}
public void getInputStates(MethodCall methodCall, MethodChannel.Result result) {
Open_im_sdk.getInputStates(
new OnBaseListener(result, methodCall),
value(methodCall, "operationID"),
value(methodCall, "conversationID"),
value(methodCall, "userID")
);
}
public void setConversation(MethodCall methodCall, MethodChannel.Result result) {
Open_im_sdk.setConversation(
new OnBaseListener(result, methodCall),
value(methodCall, "operationID"),
value(methodCall, "conversationID"),
jsonValue(methodCall, "req")
);
}
public void searchConversations(MethodCall methodCall, MethodChannel.Result result) {
Open_im_sdk.searchConversation(
new OnBaseListener(result, methodCall),
value(methodCall, "operationID"),
value(methodCall, "name")
);
}
}

View File

@@ -19,7 +19,8 @@ public class FriendshipManager extends BaseManager {
Open_im_sdk.getSpecifiedFriendsInfo(
new OnBaseListener(result, methodCall),
value(methodCall, "operationID"),
jsonValue(methodCall, "userIDList")
jsonValue(methodCall, "userIDList"),
value(methodCall, "filterBlack")
);
}
@@ -48,15 +49,18 @@ public class FriendshipManager extends BaseManager {
public void getFriendList(MethodCall methodCall, MethodChannel.Result result) {
Open_im_sdk.getFriendList(
new OnBaseListener(result, methodCall),
value(methodCall, "operationID")
value(methodCall, "operationID"),
value(methodCall, "filterBlack")
);
}
public void setFriendRemark(MethodCall methodCall, MethodChannel.Result result) {
Open_im_sdk.setFriendRemark(
public void getFriendListPage(MethodCall methodCall, MethodChannel.Result result) {
Open_im_sdk.getFriendListPage(
new OnBaseListener(result, methodCall),
value(methodCall, "operationID"),
jsonValue(methodCall)
value(methodCall, "offset"),
value(methodCall, "count"),
value(methodCall, "filterBlack")
);
}
@@ -124,12 +128,11 @@ public class FriendshipManager extends BaseManager {
);
}
public void setFriendsEx(MethodCall methodCall, MethodChannel.Result result) {
Open_im_sdk.setFriendsEx(
public void updateFriends(MethodCall methodCall, MethodChannel.Result result) {
Open_im_sdk.updateFriends(
new OnBaseListener(result, methodCall),
value(methodCall, "operationID"),
jsonValue(methodCall, "friendIDs"),
value(methodCall, "ex")
jsonValue(methodCall, "req")
);
}
}

View File

@@ -62,6 +62,15 @@ public class GroupManager extends BaseManager {
);
}
public void getJoinedGroupListPage(MethodCall methodCall, MethodChannel.Result result) {
Open_im_sdk.getJoinedGroupListPage(
new OnBaseListener(result, methodCall),
value(methodCall, "operationID"),
value(methodCall, "offset"),
value(methodCall, "count")
);
}
public void createGroup(MethodCall methodCall, MethodChannel.Result result) {
Open_im_sdk.createGroup(
new OnBaseListener(result, methodCall),
@@ -177,15 +186,6 @@ public class GroupManager extends BaseManager {
);
}
public void setGroupMemberNickname(MethodCall methodCall, MethodChannel.Result result) {
Open_im_sdk.setGroupMemberNickname(new OnBaseListener(result, methodCall),
value(methodCall, "operationID"),
value(methodCall, "groupID"),
value(methodCall, "userID"),
value(methodCall, "groupNickname")
);
}
public void searchGroups(MethodCall methodCall, MethodChannel.Result result) {
Open_im_sdk.searchGroups(new OnBaseListener(result, methodCall),
value(methodCall, "operationID"),
@@ -193,15 +193,6 @@ public class GroupManager extends BaseManager {
);
}
public void setGroupMemberRoleLevel(MethodCall methodCall, MethodChannel.Result result) {
Open_im_sdk.setGroupMemberRoleLevel(new OnBaseListener(result, methodCall),
value(methodCall, "operationID"),
value(methodCall, "groupID"),
value(methodCall, "userID"),
int2long(methodCall, "roleLevel")
);
}
public void getGroupMemberListByJoinTimeFilter(MethodCall methodCall, MethodChannel.Result result) {
Open_im_sdk.getGroupMemberListByJoinTimeFilter(new OnBaseListener(result, methodCall),
value(methodCall, "operationID"),
@@ -214,30 +205,6 @@ public class GroupManager extends BaseManager {
);
}
public void setGroupVerification(MethodCall methodCall, MethodChannel.Result result) {
Open_im_sdk.setGroupVerification(new OnBaseListener(result, methodCall),
value(methodCall, "operationID"),
value(methodCall, "groupID"),
value(methodCall, "needVerification")
);
}
public void setGroupLookMemberInfo(MethodCall methodCall, MethodChannel.Result result) {
Open_im_sdk.setGroupLookMemberInfo(new OnBaseListener(result, methodCall),
value(methodCall, "operationID"),
value(methodCall, "groupID"),
value(methodCall, "status")
);
}
public void setGroupApplyMemberFriend(MethodCall methodCall, MethodChannel.Result result) {
Open_im_sdk.setGroupApplyMemberFriend(new OnBaseListener(result, methodCall),
value(methodCall, "operationID"),
value(methodCall, "groupID"),
value(methodCall, "status")
);
}
public void getGroupMemberOwnerAndAdmin(MethodCall methodCall, MethodChannel.Result result) {
Open_im_sdk.getGroupMemberOwnerAndAdmin(new OnBaseListener(result, methodCall),
value(methodCall, "operationID"),
@@ -265,4 +232,12 @@ public class GroupManager extends BaseManager {
value(methodCall, "groupID")
);
}
public void getUsersInGroup(MethodCall methodCall, MethodChannel.Result result) {
Open_im_sdk.getUsersInGroup(new OnBaseListener(result, methodCall),
value(methodCall, "operationID"),
value(methodCall, "groupID"),
jsonValue(methodCall, "userIDs")
);
}
}

View File

@@ -67,11 +67,25 @@ public class IMManager extends BaseManager {
Open_im_sdk.uploadLogs(
new OnBaseListener(result, methodCall),
value(methodCall, "operationID"),
int2long(methodCall, "line"),
value(methodCall, "ex"),
new OnUploadLogsListener(result, methodCall)
);
}
public void logs(MethodCall methodCall, MethodChannel.Result result) {
Open_im_sdk.logs(
new OnBaseListener(result, methodCall),
value(methodCall, "operationID"),
int2long(methodCall, "logLevel"),
value(methodCall, "file"),
int2long(methodCall, "line"),
value(methodCall, "msgs"),
value(methodCall, "err"),
value(methodCall, "keyAndValue")
);
}
public void setAppBackgroundStatus(MethodCall methodCall, MethodChannel.Result result) {
Open_im_sdk.setAppBackgroundStatus(
new OnBaseListener(result, methodCall),
@@ -88,6 +102,69 @@ public class IMManager extends BaseManager {
);
}
public void setNotificationVisibilityRule(MethodCall methodCall, MethodChannel.Result result) {
Open_im_sdk.setNotificationVisibilityRule(
new OnBaseListener(result, methodCall),
value(methodCall, "operationID"),
value(methodCall, "notificationType"),
value(methodCall, "visibilityType")
);
}
public void setNotificationVisibilityRules(MethodCall methodCall, MethodChannel.Result result) {
Open_im_sdk.setNotificationVisibilityRules(
new OnBaseListener(result, methodCall),
value(methodCall, "operationID"),
value(methodCall, "rulesJSON")
);
}
public void getNotificationVisibilityRule(MethodCall methodCall, MethodChannel.Result result) {
Open_im_sdk.getNotificationVisibilityRule(
new OnBaseListener(result, methodCall),
value(methodCall, "operationID"),
value(methodCall, "notificationType")
);
}
public void getNotificationVisibilityRules(MethodCall methodCall, MethodChannel.Result result) {
Open_im_sdk.getNotificationVisibilityRules(
new OnBaseListener(result, methodCall),
value(methodCall, "operationID")
);
}
public void enableNotificationVisibilityRule(MethodCall methodCall, MethodChannel.Result result) {
Open_im_sdk.enableNotificationVisibilityRule(
new OnBaseListener(result, methodCall),
value(methodCall, "operationID"),
value(methodCall, "notificationType")
);
}
public void disableNotificationVisibilityRule(MethodCall methodCall, MethodChannel.Result result) {
Open_im_sdk.disableNotificationVisibilityRule(
new OnBaseListener(result, methodCall),
value(methodCall, "operationID"),
value(methodCall, "notificationType")
);
}
public void deleteNotificationVisibilityRule(MethodCall methodCall, MethodChannel.Result result) {
Open_im_sdk.deleteNotificationVisibilityRule(
new OnBaseListener(result, methodCall),
value(methodCall, "operationID"),
value(methodCall, "notificationType")
);
}
public void resetNotificationVisibilityRules(MethodCall methodCall, MethodChannel.Result result) {
Open_im_sdk.resetNotificationVisibilityRules(
new OnBaseListener(result, methodCall),
value(methodCall, "operationID")
);
}
// public void setListenerForService(MethodCall methodCall, MethodChannel.Result result) {
// Open_im_sdk.setListenerForService(new OnListenerForService());
//

View File

@@ -27,6 +27,7 @@ public class MessageManager extends BaseManager {
jsonValue(methodCall, "message"),
value(methodCall, "userID"),
value(methodCall, "groupID"),
value(methodCall, "channelID"),
jsonValue(methodCall, "offlinePushInfo"),
value(methodCall, "isOnlineOnly")
);
@@ -41,6 +42,16 @@ public class MessageManager extends BaseManager {
);
}
public void editMessage(MethodCall methodCall, MethodChannel.Result result) {
Open_im_sdk.editMessage(
new OnBaseListener(result, methodCall),
value(methodCall, "operationID"),
value(methodCall, "conversationID"),
value(methodCall, "clientMsgID"),
jsonValue(methodCall, "message")
);
}
public void deleteMessageFromLocalStorage(MethodCall methodCall, MethodChannel.Result result) {
Open_im_sdk.deleteMessageFromLocalStorage(
new OnBaseListener(result, methodCall),
@@ -89,6 +100,7 @@ public class MessageManager extends BaseManager {
value(methodCall, "operationID"),
jsonValue(methodCall, "message"),
value(methodCall, "groupID"),
value(methodCall, "channelID"),
value(methodCall, "senderID")
);
}
@@ -339,6 +351,7 @@ public class MessageManager extends BaseManager {
jsonValue(methodCall, "message"),
value(methodCall, "userID"),
value(methodCall, "groupID"),
value(methodCall, "channelId"),
jsonValue(methodCall, "offlinePushInfo"),
value(methodCall, "isOnlineOnly")
);
@@ -375,6 +388,16 @@ public class MessageManager extends BaseManager {
jsonValue(methodCall, "fileElem")));
}
public void fetchSurroundingMessages(MethodCall methodCall, MethodChannel.Result result) {
Open_im_sdk.fetchSurroundingMessages(
new OnBaseListener(result, methodCall),
value(methodCall, "operationID"),
jsonValue(methodCall, "message"),
int2long(methodCall, "before"),
int2long(methodCall, "after"));
}
public void setCustomBusinessListener(MethodCall methodCall, MethodChannel.Result result) {
Open_im_sdk.setCustomBusinessListener(new OnCustomBusinessListener());

View File

@@ -61,20 +61,4 @@ public class UserManager extends BaseManager {
value(methodCall, "operationID"),
jsonValue(methodCall, "userIDs"));
}
public void getUsersInfoWithCache(MethodCall methodCall, MethodChannel.Result result) {
Open_im_sdk.getUsersInfoWithCache(
new OnBaseListener(result, methodCall),
value(methodCall, "operationID"),
jsonValue(methodCall, "userIDs"),
value(methodCall, "groupID"));
}
/*
public void setSelfInfoEx(MethodCall methodCall, MethodChannel.Result result) {
Open_im_sdk.setSelfInfoEx(
new OnBaseListener(result, methodCall),
value(methodCall, "operationID"),
jsonValue(methodCall));
}
*/
}

View File

@@ -33,6 +33,7 @@ public class CommonUtil {
}
public synchronized static <T> void emitEvent(String method, String type, Object errCode, String errMsg, T data) {
String threadName = Thread.currentThread().getName();
runMainThread(() -> {
Map<String, Object> res = new ArrayMap<>();
if (null != type) {
@@ -47,8 +48,26 @@ public class CommonUtil {
if (null != errMsg) {
res.put("errMsg", errMsg);
}
Log.i("F-OpenIMSDK(native call flutter)", "{ method:" + method + ", type:" + type + " }");
FlutterOpenimSdkPlugin.channel.invokeMethod(method, res);
Log.i("F-OpenIMSDK(native call flutter)", "thread: " + threadName + " { method:" + method + ", type:" + type + " }");
FlutterOpenimSdkPlugin.channel.invokeMethod(method, res, new MethodChannel.Result() {
@Override
public void success(Object result) {
// 处理成功返回值
Log.i("F-OpenIMSDK(native call flutter)", "Method " + method + " returned: ");
}
@Override
public void error(String errorCode, String errorMessage, Object errorDetails) {
// 处理错误
Log.e("F-OpenIMSDK(native call flutter)", "Method " + method + " error: " + errorCode + ", " + errorMessage);
}
@Override
public void notImplemented() {
// 处理未实现的方法
Log.w("F-OpenIMSDK(native call flutter)", "Method " + method + " not implemented");
}
});
});
}

View File

@@ -0,0 +1,27 @@
package io.openim.flutter_openim_sdk
import io.flutter.plugin.common.MethodCall
import io.flutter.plugin.common.MethodChannel
import kotlin.test.Test
import org.mockito.Mockito
/*
* This demonstrates a simple unit test of the Kotlin portion of this plugin's implementation.
*
* Once you have built the plugin's example app, you can run these tests from the command
* line by running `./gradlew testDebugUnitTest` in the `example/android/` directory, or
* you can run them directly from IDEs that support JUnit such as Android Studio.
*/
internal class FlutterOpenimSdkPluginTest {
@Test
fun onMethodCall_getPlatformVersion_returnsExpectedValue() {
val plugin = FlutterOpenimSdkPlugin()
val call = MethodCall("getPlatformVersion", null)
val mockResult: MethodChannel.Result = Mockito.mock(MethodChannel.Result::class.java)
plugin.onMethodCall(call, mockResult)
Mockito.verify(mockResult).success("Android " + android.os.Build.VERSION.RELEASE)
}
}

9
example/.gitignore vendored
View File

@@ -8,6 +8,7 @@
.buildlog/
.history
.svn/
migrate_working_dir/
# IntelliJ related
*.iml
@@ -26,14 +27,10 @@
.dart_tool/
.flutter-plugins
.flutter-plugins-dependencies
.packages
.pub-cache/
.pub/
/build/
# Web related
lib/generated_plugin_registrant.dart
# Symbolication related
app.*.symbols
@@ -44,3 +41,7 @@ app.*.map.json
/android/app/debug
/android/app/profile
/android/app/release
# 本地调试 AAR 文件
/libs/*.aar
/android/local-maven/

View File

@@ -4,7 +4,42 @@
# This file should be version controlled and should not be manually edited.
version:
revision: b22742018b3edf16c6cadd7b76d9db5e7f9064b5
channel: stable
revision: "b0850beeb25f6d5b10426284f506557f66181b36"
channel: "stable"
project_type: app
# Tracks metadata for the flutter migrate command
migration:
platforms:
- platform: root
create_revision: b0850beeb25f6d5b10426284f506557f66181b36
base_revision: b0850beeb25f6d5b10426284f506557f66181b36
- platform: android
create_revision: b0850beeb25f6d5b10426284f506557f66181b36
base_revision: b0850beeb25f6d5b10426284f506557f66181b36
- platform: ios
create_revision: b0850beeb25f6d5b10426284f506557f66181b36
base_revision: b0850beeb25f6d5b10426284f506557f66181b36
- platform: linux
create_revision: b0850beeb25f6d5b10426284f506557f66181b36
base_revision: b0850beeb25f6d5b10426284f506557f66181b36
- platform: macos
create_revision: b0850beeb25f6d5b10426284f506557f66181b36
base_revision: b0850beeb25f6d5b10426284f506557f66181b36
- platform: web
create_revision: b0850beeb25f6d5b10426284f506557f66181b36
base_revision: b0850beeb25f6d5b10426284f506557f66181b36
- platform: windows
create_revision: b0850beeb25f6d5b10426284f506557f66181b36
base_revision: b0850beeb25f6d5b10426284f506557f66181b36
# User provided section
# List of Local paths (relative to this file) that should be
# ignored by the migrate tool.
#
# Files that are not part of the templates will be ignored by default.
unmanaged_files:
- 'lib/main.dart'
- 'ios/Runner.xcodeproj/project.pbxproj'

View File

@@ -1,6 +1,6 @@
# flutter_openim_sdk_example
# example
Demonstrates how to use the flutter_openim_sdk plugin.
A new Flutter project.
## Getting Started
@@ -8,9 +8,9 @@ This project is a starting point for a Flutter application.
A few resources to get you started if this is your first Flutter project:
- [Lab: Write your first Flutter app](https://flutter.dev/docs/get-started/codelab)
- [Cookbook: Useful Flutter samples](https://flutter.dev/docs/cookbook)
- [Lab: Write your first Flutter app](https://docs.flutter.dev/get-started/codelab)
- [Cookbook: Useful Flutter samples](https://docs.flutter.dev/cookbook)
For help getting started with Flutter, view our
[online documentation](https://flutter.dev/docs), which offers tutorials,
For help getting started with Flutter development, view the
[online documentation](https://docs.flutter.dev/), which offers tutorials,
samples, guidance on mobile development, and a full API reference.

View File

@@ -0,0 +1,28 @@
# This file configures the analyzer, which statically analyzes Dart code to
# check for errors, warnings, and lints.
#
# The issues identified by the analyzer are surfaced in the UI of Dart-enabled
# IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be
# invoked from the command line by running `flutter analyze`.
# The following line activates a set of recommended lints for Flutter apps,
# packages, and plugins designed to encourage good coding practices.
include: package:flutter_lints/flutter.yaml
linter:
# The lint rules applied to this project can be customized in the
# section below to disable rules from the `package:flutter_lints/flutter.yaml`
# included above or to enable additional rules. A list of all available lints
# and their documentation is published at https://dart.dev/lints.
#
# Instead of disabling a lint rule for the entire project in the
# section below, it can also be suppressed for a single line of code
# or a specific dart file by using the `// ignore: name_of_lint` and
# `// ignore_for_file: name_of_lint` syntax on the line or in the file
# producing the lint.
rules:
# avoid_print: false # Uncomment to disable the `avoid_print` rule
# prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule
# Additional information about this file can be found at
# https://dart.dev/guides/language/analysis-options

View File

@@ -9,3 +9,5 @@ GeneratedPluginRegistrant.java
# Remember to never publicly share your keystore.
# See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app
key.properties
**/*.keystore
**/*.jks

View File

@@ -1,69 +1,59 @@
plugins {
id "com.android.application"
id "kotlin-android"
// The Flutter Gradle Plugin must be applied after the Android and Kotlin Gradle plugins.
id "dev.flutter.flutter-gradle-plugin"
}
def localProperties = new Properties()
def localPropertiesFile = rootProject.file('local.properties')
def localPropertiesFile = rootProject.file("local.properties")
if (localPropertiesFile.exists()) {
localPropertiesFile.withReader('UTF-8') { reader ->
localPropertiesFile.withReader("UTF-8") { reader ->
localProperties.load(reader)
}
}
def flutterRoot = localProperties.getProperty('flutter.sdk')
if (flutterRoot == null) {
throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
}
def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
def flutterVersionCode = localProperties.getProperty("flutter.versionCode")
if (flutterVersionCode == null) {
flutterVersionCode = '1'
flutterVersionCode = "1"
}
def flutterVersionName = localProperties.getProperty('flutter.versionName')
def flutterVersionName = localProperties.getProperty("flutter.versionName")
if (flutterVersionName == null) {
flutterVersionName = '1.0'
flutterVersionName = "1.0"
}
apply plugin: 'com.android.application'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
android {
compileSdkVersion 30
namespace = "com.example.example"
compileSdk = flutter.compileSdkVersion
ndkVersion = flutter.ndkVersion
compileOptions {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}
defaultConfig {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId "io.openim.flutter_openim_sdk_example"
minSdkVersion 21
targetSdkVersion 30
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
applicationId = "com.example.example"
// You can update the following values to match your application needs.
// For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration.
minSdk = flutter.minSdkVersion
targetSdk = flutter.targetSdkVersion
versionCode = flutterVersionCode.toInteger()
versionName = flutterVersionName
}
buildTypes {
debug {
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
release {
// TODO: Add your own signing config for the release build.
// Signing with the debug keys for now, so `flutter run --release` works.
// signingConfig signingConfigs.debug
signingConfig signingConfigs.debug
minifyEnabled false
shrinkResources false
useProguard true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
repositories{
flatDir {
dirs 'libs'
signingConfig = signingConfigs.debug
minifyEnabled true
}
}
}
dependencies {
}
flutter {
source '../..'
source = "../.."
}

View File

@@ -1,6 +1,6 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="io.openim.flutter_openim_sdk_example">
<!-- Flutter needs it to communicate with the running application
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<!-- The INTERNET permission is required for development. Specifically,
the Flutter tool needs it to communicate with the running application
to allow setting breakpoints, to provide hot reload, etc.
-->
<uses-permission android:name="android.permission.INTERNET"/>

View File

@@ -1,11 +1,21 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="io.openim.flutter_openim_sdk_example">
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />
<uses-permission android:name="android.permission.READ_MEDIA_AUDIO" />
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<application
android:label="flutter_openim_sdk_example"
android:label="example"
android:name="${applicationName}"
android:icon="@mipmap/ic_launcher">
<activity
android:name=".MainActivity"
android:exported="true"
android:launchMode="singleTop"
android:taskAffinity=""
android:theme="@style/LaunchTheme"
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
android:hardwareAccelerated="true"
@@ -18,15 +28,6 @@
android:name="io.flutter.embedding.android.NormalTheme"
android:resource="@style/NormalTheme"
/>
<!-- Displays an Android View that continues showing the launch screen
Drawable until Flutter paints its first frame, then this splash
screen fades out. A splash screen is useful to avoid any visual
gap between the end of Android's launch screen and the painting of
Flutter's first frame. -->
<meta-data
android:name="io.flutter.embedding.android.SplashScreenDrawable"
android:resource="@drawable/launch_background"
/>
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
@@ -38,4 +39,15 @@
android:name="flutterEmbedding"
android:value="2" />
</application>
<!-- Required to query activities that can process text, see:
https://developer.android.com/training/package-visibility and
https://developer.android.com/reference/android/content/Intent#ACTION_PROCESS_TEXT.
In particular, this is used by the Flutter engine in io.flutter.plugin.text.ProcessTextPlugin. -->
<queries>
<intent>
<action android:name="android.intent.action.PROCESS_TEXT"/>
<data android:mimeType="text/plain"/>
</intent>
</queries>
</manifest>

View File

@@ -1,6 +0,0 @@
package io.openim.flutter_openim_sdk_example;
import io.flutter.embedding.android.FlutterActivity;
public class MainActivity extends FlutterActivity {
}

View File

@@ -0,0 +1,5 @@
package com.example.example
import io.flutter.embedding.android.FlutterActivity
class MainActivity: FlutterActivity()

View File

@@ -0,0 +1,5 @@
package io.openim.flutter_openim_sdk_example
import io.flutter.embedding.android.FlutterActivity
class MainActivity: FlutterActivity()

Binary file not shown.

Before

Width:  |  Height:  |  Size: 544 B

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 442 B

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 721 B

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 11 KiB

View File

@@ -3,7 +3,7 @@
<!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is on -->
<style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar">
<!-- Show a splash screen on the activity. Automatically removed when
Flutter draws its first frame -->
the Flutter engine draws its first frame -->
<item name="android:windowBackground">@drawable/launch_background</item>
</style>
<!-- Theme applied to the Android Window as soon as the process has started.

View File

@@ -3,7 +3,7 @@
<!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is off -->
<style name="LaunchTheme" parent="@android:style/Theme.Light.NoTitleBar">
<!-- Show a splash screen on the activity. Automatically removed when
Flutter draws its first frame -->
the Flutter engine draws its first frame -->
<item name="android:windowBackground">@drawable/launch_background</item>
</style>
<!-- Theme applied to the Android Window as soon as the process has started.

View File

@@ -1,6 +1,6 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="io.openim.flutter_openim_sdk_example">
<!-- Flutter needs it to communicate with the running application
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<!-- The INTERNET permission is required for development. Specifically,
the Flutter tool needs it to communicate with the running application
to allow setting breakpoints, to provide hot reload, etc.
-->
<uses-permission android:name="android.permission.INTERNET"/>

View File

@@ -1,33 +1,60 @@
buildscript {
// 1. 修改这里:将 Kotlin 版本升级到 1.9.24 以解决 "Module was compiled with... 1.9.0" 报错
ext.kotlin_version = '1.9.24'
repositories {
maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
maven { url 'http://maven.aliyun.com/nexus/content/repositories/jcenter' }
maven { url 'http://maven.aliyun.com/nexus/content/repositories/google' }
maven { url 'http://maven.aliyun.com/nexus/content/repositories/gradle-plugin' }
// 2. 优化网络:优先使用阿里云镜像,解决下载慢/超时/握手失败问题
maven { url 'https://maven.aliyun.com/repository/google' }
maven { url 'https://maven.aliyun.com/repository/public' }
maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }
google()
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.5.1'
// Android Gradle 插件版本 (保持您当前的 7.3.0 即可,如果报错提示不兼容再升级到 7.4.2)
classpath 'com.android.tools.build:gradle:7.3.0'
// Kotlin 插件 (这里引用了上面定义的 ext.kotlin_version)
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
allprojects {
repositories {
maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
maven { url 'http://maven.aliyun.com/nexus/content/repositories/jcenter' }
maven { url 'http://maven.aliyun.com/nexus/content/repositories/google' }
maven { url 'http://maven.aliyun.com/nexus/content/repositories/gradle-plugin' }
// === 本地 AAR 调试配置 ===
// 启用本地调试: 取消下面这行的注释
maven { url 'file://' + projectDir.absolutePath + '/local-maven' }
// === 本地 AAR 配置结束 ===
// 3. 优化网络allprojects 也要加镜像
maven { url 'https://maven.aliyun.com/repository/google' }
maven { url 'https://maven.aliyun.com/repository/public' }
maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }
google()
mavenCentral()
}
}
rootProject.buildDir = '../build'
// === 强制使用本地 AAR 版本 (调试时取消注释) ===
// 注意: 必须配合上面的本地 Maven 仓库一起使用
configurations.all {
resolutionStrategy {
force 'com.openim:sdkcore:1.0.15-local'
}
}
rootProject.buildDir = "../build"
subprojects {
project.buildDir = "${rootProject.buildDir}/${project.name}"
project.evaluationDependsOn(':app')
}
subprojects {
project.evaluationDependsOn(":app")
}
tasks.register("clean", Delete) {

View File

@@ -1,3 +1,3 @@
org.gradle.jvmargs=-Xmx1536M
org.gradle.jvmargs=-Xmx4G -XX:+HeapDumpOnOutOfMemoryError
android.useAndroidX=true
android.enableJetifier=true

View File

@@ -1,6 +1,5 @@
#Fri Jun 23 08:50:38 CEST 2017
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.3-all.zip

View File

@@ -1,107 +0,0 @@
#默认的proguard-android.txt已经增加了Annotationnativeview的setget方法Activity参数为view的 方法Enum枚举ParcelableR,此处不再写
#------------------------------------------通用区域----------------------------------------------------
#----------------------基本指令------------------------
-optimizationpasses 5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontskipnonpubliclibraryclassmembers
-dontpreverify
-verbose
-printmapping proguardMapping.txt
-optimizations !code/simplification/cast,!field/*,!class/merging/*
-keepattributes *Annotation*,InnerClasses
-keepattributes Signature
-keepattributes SourceFile,LineNumberTable
#如果引用了v4或者v7包
-dontwarn android.support.**
-keep class android.support.** { *; }
-keep interface android.support.** { *; }
-keep public class * extends android.support.**
-dontwarn android.support.**
#如果引用了androidx包
-keep class com.google.android.material.** {*;}
-keep class androidx.** {*;}
-keep public class * extends androidx.**
-keep interface androidx.** {*;}
-dontwarn com.google.android.material.**
-dontnote com.google.android.material.**
-dontwarn androidx.**
#---------------------默认保留-------------------------
## 基础保留 ##
-keep public class * extends android.app.Fragment
-keep public class * extends android.app.Activity
-keep public class * extends android.app.Application
-keep public class * extends android.app.Service
-keep public class * extends android.content.BroadcastReceiver
-keep public class * extends android.content.ContentProvider
-keep public class * extends android.app.backup.BackupAgentHelper
-keep public class * extends android.preference.Preference
-keep public class com.android.vending.licensing.ILicensingService
-keep public class * extends android.view.View {
public <init>(android.content.Context);
public <init>(android.content.Context, android.util.AttributeSet);
public <init>(android.content.Context, android.util.AttributeSet, int);
public void set*(...);
}
# 保持自定义控件类不被混淆
-keepclasseswithmembers class * {
public <init>(android.content.Context, android.util.AttributeSet);
public <init>(android.content.Context, android.util.AttributeSet, int);
}
#保持自定义控件类不被混淆
-keepclassmembers class * extends android.app.Activity {
public void *(android.view.View);
}
-keepclassmembers enum * { # 保持枚举 enum 类不被混淆
public static **[] values();
public static ** valueOf(java.lang.String);
}
-keep class * implements android.os.Parcelable { # 保持 Parcelable 不被混淆
public static final android.os.Parcelable$Creator *;
}
-keep class * implements java.io.Serializable # 保持 Serializable 不被混淆
#保持 Serializable 不被混淆并且enum 类也不被混淆
-keepclassmembers class * implements java.io.Serializable {
static final long serialVersionUID;
private static final java.io.ObjectStreamField[] serialPersistentFields;
!static !transient <fields>;
!private <fields>;
!private <methods>;
private void writeObject(java.io.ObjectOutputStream);
private void readObject(java.io.ObjectInputStream);
java.lang.Object writeReplace();
java.lang.Object readResolve();
}
#不混淆资源类
-keepclassmembers class **.R$* {
public static <fields>;
}
# 保持 native 方法不被混淆
-keepclasseswithmembernames class * {
native <methods>;
}
#WebView
-keepclassmembers class * extends android.webkit.WebView {*;}
-keepclassmembers class * extends android.webkit.WebViewClient {*;}
-keepclassmembers class * extends android.webkit.WebChromeClient {*;}
-keepclassmembers class * {
@android.webkit.JavascriptInterface <methods>;
}
-keep class androidx.lifecycle.DefaultLifecycleObserver
#-------------------------------------------项目定义区-------------------------------------------------
#im
-keep class io.openim.flutter_openim_sdk.** { *; }
#Flutter Wrapper
#-dontwarn io.flutter.**
#-keep class io.flutter.app.** { *; }
#-keep class io.flutter.plugin.** { *; }
#-keep class io.flutter.util.** { *; }
#-keep class io.flutter.view.** { *; }
#-keep class io.flutter.** { *; }
#-keep class io.flutter.plugins.** { *; }

View File

@@ -1,11 +1,25 @@
include ':app'
pluginManagement {
def flutterSdkPath = {
def properties = new Properties()
file("local.properties").withInputStream { properties.load(it) }
def flutterSdkPath = properties.getProperty("flutter.sdk")
assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
return flutterSdkPath
}()
def localPropertiesFile = new File(rootProject.projectDir, "local.properties")
def properties = new Properties()
includeBuild("$flutterSdkPath/packages/flutter_tools/gradle")
assert localPropertiesFile.exists()
localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) }
repositories {
google()
mavenCentral()
gradlePluginPortal()
}
}
def flutterSdkPath = properties.getProperty("flutter.sdk")
assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle"
plugins {
id "dev.flutter.flutter-plugin-loader" version "1.0.0"
id "com.android.application" version "7.3.0" apply false
id "org.jetbrains.kotlin.android" version "1.9.24" apply false
}
include ":app"

View File

@@ -0,0 +1,21 @@
// This is a basic Flutter integration test.
//
// Since integration tests run in a full Flutter application, they can interact
// with the host side of a plugin implementation, unlike Dart unit tests.
//
// For more information about Flutter integration tests, please see
// https://flutter.dev/to/integration-testing
import 'package:flutter_test/flutter_test.dart';
void main() {
// IntegrationTestWidgetsFlutterBinding.ensureInitialized();
// testWidgets('getPlatformVersion test', (WidgetTester tester) async {
// final FlutterOpenimSdk plugin = FlutterOpenimSdk();
// final String? version = await plugin.getPlatformVersion();
// // The version string depends on the host platform running the test, so
// // just assert that some non-empty string is returned.
// expect(version?.isNotEmpty, true);
// });
}

View File

@@ -1,3 +1,4 @@
**/dgph
*.mode1v3
*.mode2v3
*.moved-aside

View File

@@ -21,6 +21,6 @@
<key>CFBundleVersion</key>
<string>1.0</string>
<key>MinimumOSVersion</key>
<string>11.0</string>
<string>12.0</string>
</dict>
</plist>

View File

@@ -1,5 +1,5 @@
# Uncomment this line to define a global platform for your project
platform :ios, '11.0'
# platform :ios, '12.0'
# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
ENV['COCOAPODS_DISABLE_STATS'] = 'true'
@@ -32,6 +32,9 @@ target 'Runner' do
use_modular_headers!
flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
target 'RunnerTests' do
inherit! :search_paths
end
end
post_install do |installer|

View File

@@ -2,8 +2,8 @@ PODS:
- Flutter (1.0.0)
- flutter_openim_sdk (0.0.1):
- Flutter
- OpenIMSDKCore (= 3.4.0)
- OpenIMSDKCore (3.4.0)
- OpenIMSDKCore (= 3.8.2)
- OpenIMSDKCore (3.8.2)
DEPENDENCIES:
- Flutter (from `Flutter`)
@@ -20,10 +20,10 @@ EXTERNAL SOURCES:
:path: ".symlinks/plugins/flutter_openim_sdk/ios"
SPEC CHECKSUMS:
Flutter: f04841e97a9d0b0a8025694d0796dd46242b2854
flutter_openim_sdk: 54d1c836ff60ebb5b99d246521ef0cb1d834fb13
OpenIMSDKCore: 47e0e830afe0d2dd905ad3dda255e6a6d26a555c
Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7
flutter_openim_sdk: 77bdd08fb8dda1644a0c150b8ba7324f11b32404
OpenIMSDKCore: aaffd63079a874d9272b8b962598723cb8128d32
PODFILE CHECKSUM: 7368163408c647b7eb699d0d788ba6718e18fb8d
PODFILE CHECKSUM: 819463e6a0290f5a72f145ba7cde16e8b6ef0796
COCOAPODS: 1.13.0
COCOAPODS: 1.15.2

View File

@@ -8,14 +8,26 @@
/* Begin PBXBuildFile section */
1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };
331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; };
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
3E0FE62DE2A4D4E61AC3FD02 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8BB3D975831D21A8FACEF96B /* Pods_Runner.framework */; };
74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; };
79CF11091A38454F94DA1EB4 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2F48A41A58786A29BEEBCFE3 /* Pods_Runner.framework */; };
97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; };
97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; };
97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; };
F32475A5B591900F07118022 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 119B0071FAB85FAD36937602 /* Pods_RunnerTests.framework */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
331C8085294A63A400263BE5 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 97C146E61CF9000F007C117D /* Project object */;
proxyType = 1;
remoteGlobalIDString = 97C146ED1CF9000F007C117D;
remoteInfo = Runner;
};
/* End PBXContainerItemProxy section */
/* Begin PBXCopyFilesBuildPhase section */
9705A1C41CF9048500538489 /* Embed Frameworks */ = {
isa = PBXCopyFilesBuildPhase;
@@ -30,16 +42,19 @@
/* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */
119B0071FAB85FAD36937602 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = "<group>"; };
1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = "<group>"; };
2F48A41A58786A29BEEBCFE3 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
331C807B294A618700263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = "<group>"; };
331C8081294A63A400263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = "<group>"; };
3F8F3496860058CED33C418C /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = "<group>"; };
564E6205C72C7CB32AC49601 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = "<group>"; };
4D6806EF7C87F4A8E899A73E /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = "<group>"; };
5C84146D7BEE11433AA4DE9E /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = "<group>"; };
74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = "<group>"; };
74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = "<group>"; };
85A1617DD2AFC45DFFDD8B11 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = "<group>"; };
7D277EA428A8FDCA196F3196 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = "<group>"; };
8BB3D975831D21A8FACEF96B /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = "<group>"; };
9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = "<group>"; };
97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; };
@@ -47,26 +62,51 @@
97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
BD60456F5D1660BF5A90F9A1 /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = "<group>"; };
F0FFA291A8BB24B66A6DCC8C /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = "<group>"; };
FA507785CCEA4423C40C3CCD /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
1B803A0F046E9658A8FCEED0 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
F32475A5B591900F07118022 /* Pods_RunnerTests.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
97C146EB1CF9000F007C117D /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
79CF11091A38454F94DA1EB4 /* Pods_Runner.framework in Frameworks */,
3E0FE62DE2A4D4E61AC3FD02 /* Pods_Runner.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
0EDFEBEB76AE7FAFA44EF2AF /* Frameworks */ = {
331C8082294A63A400263BE5 /* RunnerTests */ = {
isa = PBXGroup;
children = (
2F48A41A58786A29BEEBCFE3 /* Pods_Runner.framework */,
331C807B294A618700263BE5 /* RunnerTests.swift */,
);
name = Frameworks;
path = RunnerTests;
sourceTree = "<group>";
};
8575235C80CAB4F7FB7F5B46 /* Pods */ = {
isa = PBXGroup;
children = (
FA507785CCEA4423C40C3CCD /* Pods-Runner.debug.xcconfig */,
4D6806EF7C87F4A8E899A73E /* Pods-Runner.release.xcconfig */,
7D277EA428A8FDCA196F3196 /* Pods-Runner.profile.xcconfig */,
F0FFA291A8BB24B66A6DCC8C /* Pods-RunnerTests.debug.xcconfig */,
5C84146D7BEE11433AA4DE9E /* Pods-RunnerTests.release.xcconfig */,
BD60456F5D1660BF5A90F9A1 /* Pods-RunnerTests.profile.xcconfig */,
);
name = Pods;
path = Pods;
sourceTree = "<group>";
};
9740EEB11CF90186004384FC /* Flutter */ = {
@@ -86,8 +126,9 @@
9740EEB11CF90186004384FC /* Flutter */,
97C146F01CF9000F007C117D /* Runner */,
97C146EF1CF9000F007C117D /* Products */,
E653626F5A38799455FF26C4 /* Pods */,
0EDFEBEB76AE7FAFA44EF2AF /* Frameworks */,
331C8082294A63A400263BE5 /* RunnerTests */,
8575235C80CAB4F7FB7F5B46 /* Pods */,
B94289CF044A7671B3BECB8E /* Frameworks */,
);
sourceTree = "<group>";
};
@@ -95,6 +136,7 @@
isa = PBXGroup;
children = (
97C146EE1CF9000F007C117D /* Runner.app */,
331C8081294A63A400263BE5 /* RunnerTests.xctest */,
);
name = Products;
sourceTree = "<group>";
@@ -114,24 +156,42 @@
path = Runner;
sourceTree = "<group>";
};
E653626F5A38799455FF26C4 /* Pods */ = {
B94289CF044A7671B3BECB8E /* Frameworks */ = {
isa = PBXGroup;
children = (
85A1617DD2AFC45DFFDD8B11 /* Pods-Runner.debug.xcconfig */,
3F8F3496860058CED33C418C /* Pods-Runner.release.xcconfig */,
564E6205C72C7CB32AC49601 /* Pods-Runner.profile.xcconfig */,
8BB3D975831D21A8FACEF96B /* Pods_Runner.framework */,
119B0071FAB85FAD36937602 /* Pods_RunnerTests.framework */,
);
path = Pods;
name = Frameworks;
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
331C8080294A63A400263BE5 /* RunnerTests */ = {
isa = PBXNativeTarget;
buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */;
buildPhases = (
70DBF52745AF25A4FC72D8C3 /* [CP] Check Pods Manifest.lock */,
331C807D294A63A400263BE5 /* Sources */,
331C807F294A63A400263BE5 /* Resources */,
1B803A0F046E9658A8FCEED0 /* Frameworks */,
);
buildRules = (
);
dependencies = (
331C8086294A63A400263BE5 /* PBXTargetDependency */,
);
name = RunnerTests;
productName = RunnerTests;
productReference = 331C8081294A63A400263BE5 /* RunnerTests.xctest */;
productType = "com.apple.product-type.bundle.unit-test";
};
97C146ED1CF9000F007C117D /* Runner */ = {
isa = PBXNativeTarget;
buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */;
buildPhases = (
DFE84742E2B41158E8703A14 /* [CP] Check Pods Manifest.lock */,
3DCEC8459668E43AE9B4C8D5 /* [CP] Check Pods Manifest.lock */,
9740EEB61CF901F6004384FC /* Run Script */,
97C146EA1CF9000F007C117D /* Sources */,
97C146EB1CF9000F007C117D /* Frameworks */,
@@ -154,9 +214,14 @@
97C146E61CF9000F007C117D /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 1300;
BuildIndependentTargetsInParallel = YES;
LastUpgradeCheck = 1510;
ORGANIZATIONNAME = "";
TargetAttributes = {
331C8080294A63A400263BE5 = {
CreatedOnToolsVersion = 14.0;
TestTargetID = 97C146ED1CF9000F007C117D;
};
97C146ED1CF9000F007C117D = {
CreatedOnToolsVersion = 7.3.1;
LastSwiftMigration = 1100;
@@ -177,11 +242,19 @@
projectRoot = "";
targets = (
97C146ED1CF9000F007C117D /* Runner */,
331C8080294A63A400263BE5 /* RunnerTests */,
);
};
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
331C807F294A63A400263BE5 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
97C146EC1CF9000F007C117D /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
@@ -203,6 +276,7 @@
files = (
);
inputPaths = (
"${TARGET_BUILD_DIR}/${INFOPLIST_PATH}",
);
name = "Thin Binary";
outputPaths = (
@@ -211,22 +285,7 @@
shellPath = /bin/sh;
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin";
};
9740EEB61CF901F6004384FC /* Run Script */ = {
isa = PBXShellScriptBuildPhase;
alwaysOutOfDate = 1;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
);
name = "Run Script";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build";
};
DFE84742E2B41158E8703A14 /* [CP] Check Pods Manifest.lock */ = {
3DCEC8459668E43AE9B4C8D5 /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
@@ -248,9 +307,54 @@
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
showEnvVarsInLog = 0;
};
70DBF52745AF25A4FC72D8C3 /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
);
inputPaths = (
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
"${PODS_ROOT}/Manifest.lock",
);
name = "[CP] Check Pods Manifest.lock";
outputFileListPaths = (
);
outputPaths = (
"$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
showEnvVarsInLog = 0;
};
9740EEB61CF901F6004384FC /* Run Script */ = {
isa = PBXShellScriptBuildPhase;
alwaysOutOfDate = 1;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
);
name = "Run Script";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build";
};
/* End PBXShellScriptBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
331C807D294A63A400263BE5 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
97C146EA1CF9000F007C117D /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
@@ -262,6 +366,14 @@
};
/* End PBXSourcesBuildPhase section */
/* Begin PBXTargetDependency section */
331C8086294A63A400263BE5 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 97C146ED1CF9000F007C117D /* Runner */;
targetProxy = 331C8085294A63A400263BE5 /* PBXContainerItemProxy */;
};
/* End PBXTargetDependency section */
/* Begin PBXVariantGroup section */
97C146FA1CF9000F007C117D /* Main.storyboard */ = {
isa = PBXVariantGroup;
@@ -286,7 +398,7 @@
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
ARCHS = arm64;
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
CLANG_ANALYZER_NONNULL = YES;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
@@ -316,6 +428,7 @@
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_USER_SCRIPT_SANDBOXING = NO;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_NO_COMMON_BLOCKS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
@@ -324,7 +437,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
SUPPORTED_PLATFORMS = iphoneos;
@@ -337,18 +450,17 @@
isa = XCBuildConfiguration;
baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
buildSettings = {
ARCHS = "$(ARCHS_STANDARD)";
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
DEVELOPMENT_TEAM = BDLHL8GNFV;
DEVELOPMENT_TEAM = V57RT7LMFH;
ENABLE_BITCODE = NO;
INFOPLIST_FILE = Runner/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = cn.rentsoft.uni;
PRODUCT_BUNDLE_IDENTIFIER = com.example.example;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_VERSION = 5.0;
@@ -356,11 +468,61 @@
};
name = Profile;
};
331C8088294A63A400263BE5 /* Debug */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = F0FFA291A8BB24B66A6DCC8C /* Pods-RunnerTests.debug.xcconfig */;
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
GENERATE_INFOPLIST_FILE = YES;
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = com.example.example.RunnerTests;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_VERSION = 5.0;
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner";
};
name = Debug;
};
331C8089294A63A400263BE5 /* Release */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 5C84146D7BEE11433AA4DE9E /* Pods-RunnerTests.release.xcconfig */;
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
GENERATE_INFOPLIST_FILE = YES;
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = com.example.example.RunnerTests;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 5.0;
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner";
};
name = Release;
};
331C808A294A63A400263BE5 /* Profile */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = BD60456F5D1660BF5A90F9A1 /* Pods-RunnerTests.profile.xcconfig */;
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
GENERATE_INFOPLIST_FILE = YES;
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = com.example.example.RunnerTests;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 5.0;
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner";
};
name = Profile;
};
97C147031CF9000F007C117D /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
ARCHS = arm64;
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = AppIcon;
CLANG_ANALYZER_NONNULL = YES;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
@@ -390,6 +552,7 @@
DEBUG_INFORMATION_FORMAT = dwarf;
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES;
ENABLE_USER_SCRIPT_SANDBOXING = NO;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_DYNAMIC_NO_PIC = NO;
GCC_NO_COMMON_BLOCKS = YES;
@@ -404,7 +567,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
@@ -416,7 +579,7 @@
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
ARCHS = arm64;
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = AppIcon;
CLANG_ANALYZER_NONNULL = YES;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
@@ -446,6 +609,7 @@
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_USER_SCRIPT_SANDBOXING = NO;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_NO_COMMON_BLOCKS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
@@ -454,7 +618,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
SUPPORTED_PLATFORMS = iphoneos;
@@ -469,18 +633,17 @@
isa = XCBuildConfiguration;
baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */;
buildSettings = {
ARCHS = "$(ARCHS_STANDARD)";
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
DEVELOPMENT_TEAM = BDLHL8GNFV;
DEVELOPMENT_TEAM = V57RT7LMFH;
ENABLE_BITCODE = NO;
INFOPLIST_FILE = Runner/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = cn.rentsoft.uni;
PRODUCT_BUNDLE_IDENTIFIER = com.example.example;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
@@ -493,18 +656,17 @@
isa = XCBuildConfiguration;
baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
buildSettings = {
ARCHS = "$(ARCHS_STANDARD)";
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
DEVELOPMENT_TEAM = BDLHL8GNFV;
DEVELOPMENT_TEAM = V57RT7LMFH;
ENABLE_BITCODE = NO;
INFOPLIST_FILE = Runner/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = cn.rentsoft.uni;
PRODUCT_BUNDLE_IDENTIFIER = com.example.example;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_VERSION = 5.0;
@@ -515,6 +677,16 @@
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */ = {
isa = XCConfigurationList;
buildConfigurations = (
331C8088294A63A400263BE5 /* Debug */,
331C8089294A63A400263BE5 /* Release */,
331C808A294A63A400263BE5 /* Profile */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = {
isa = XCConfigurationList;
buildConfigurations = (

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1300"
LastUpgradeVersion = "1510"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
@@ -27,8 +27,6 @@
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
@@ -38,8 +36,19 @@
ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
<Testables>
<TestableReference
skipped = "NO"
parallelizable = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "331C8080294A63A400263BE5"
BuildableName = "RunnerTests.xctest"
BlueprintName = "RunnerTests"
ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference>
</TestableReference>
</Testables>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
@@ -61,8 +70,6 @@
ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration = "Profile"

View File

@@ -1,7 +1,7 @@
import UIKit
import Flutter
import UIKit
@UIApplicationMain
@main
@objc class AppDelegate: FlutterAppDelegate {
override func application(
_ application: UIApplication,

View File

@@ -1,103 +1,122 @@
{
"images" : [
{
"size" : "20x20",
"idiom" : "iphone",
"scale" : "2x",
"size" : "20x20"
"filename" : "Icon-App-20x20@2x.png",
"scale" : "2x"
},
{
"size" : "20x20",
"idiom" : "iphone",
"scale" : "3x",
"size" : "20x20"
"filename" : "Icon-App-20x20@3x.png",
"scale" : "3x"
},
{
"size" : "29x29",
"idiom" : "iphone",
"scale" : "1x",
"size" : "29x29"
"filename" : "Icon-App-29x29@1x.png",
"scale" : "1x"
},
{
"size" : "29x29",
"idiom" : "iphone",
"scale" : "2x",
"size" : "29x29"
"filename" : "Icon-App-29x29@2x.png",
"scale" : "2x"
},
{
"size" : "29x29",
"idiom" : "iphone",
"scale" : "3x",
"size" : "29x29"
"filename" : "Icon-App-29x29@3x.png",
"scale" : "3x"
},
{
"size" : "40x40",
"idiom" : "iphone",
"scale" : "2x",
"size" : "40x40"
"filename" : "Icon-App-40x40@2x.png",
"scale" : "2x"
},
{
"size" : "40x40",
"idiom" : "iphone",
"scale" : "3x",
"size" : "40x40"
"filename" : "Icon-App-40x40@3x.png",
"scale" : "3x"
},
{
"size" : "60x60",
"idiom" : "iphone",
"scale" : "2x",
"size" : "60x60"
"filename" : "Icon-App-60x60@2x.png",
"scale" : "2x"
},
{
"size" : "60x60",
"idiom" : "iphone",
"scale" : "3x",
"size" : "60x60"
"filename" : "Icon-App-60x60@3x.png",
"scale" : "3x"
},
{
"size" : "20x20",
"idiom" : "ipad",
"scale" : "1x",
"size" : "20x20"
"filename" : "Icon-App-20x20@1x.png",
"scale" : "1x"
},
{
"size" : "20x20",
"idiom" : "ipad",
"scale" : "2x",
"size" : "20x20"
"filename" : "Icon-App-20x20@2x.png",
"scale" : "2x"
},
{
"size" : "29x29",
"idiom" : "ipad",
"scale" : "1x",
"size" : "29x29"
"filename" : "Icon-App-29x29@1x.png",
"scale" : "1x"
},
{
"size" : "29x29",
"idiom" : "ipad",
"scale" : "2x",
"size" : "29x29"
"filename" : "Icon-App-29x29@2x.png",
"scale" : "2x"
},
{
"size" : "40x40",
"idiom" : "ipad",
"scale" : "1x",
"size" : "40x40"
"filename" : "Icon-App-40x40@1x.png",
"scale" : "1x"
},
{
"size" : "40x40",
"idiom" : "ipad",
"scale" : "2x",
"size" : "40x40"
"filename" : "Icon-App-40x40@2x.png",
"scale" : "2x"
},
{
"size" : "76x76",
"idiom" : "ipad",
"scale" : "1x",
"size" : "76x76"
"filename" : "Icon-App-76x76@1x.png",
"scale" : "1x"
},
{
"size" : "76x76",
"idiom" : "ipad",
"scale" : "2x",
"size" : "76x76"
"filename" : "Icon-App-76x76@2x.png",
"scale" : "2x"
},
{
"size" : "83.5x83.5",
"idiom" : "ipad",
"scale" : "2x",
"size" : "83.5x83.5"
"filename" : "Icon-App-83.5x83.5@2x.png",
"scale" : "2x"
},
{
"size" : "1024x1024",
"idiom" : "ios-marketing",
"scale" : "1x",
"size" : "1024x1024"
"filename" : "Icon-App-1024x1024@1x.png",
"scale" : "1x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
"version" : 1,
"author" : "xcode"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 579 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 970 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.4 KiB

View File

@@ -2,19 +2,22 @@
"images" : [
{
"idiom" : "universal",
"filename" : "LaunchImage.png",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "LaunchImage@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "LaunchImage@3x.png",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
"version" : 1,
"author" : "xcode"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 B

View File

@@ -1,10 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="19455" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES" initialViewController="BYZ-38-t0r">
<device id="retina6_1" orientation="portrait" appearance="light"/>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="10117" systemVersion="15F34" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="BYZ-38-t0r">
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="19454"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="10085"/>
</dependencies>
<scenes>
<!--Flutter View Controller-->
@@ -16,14 +14,13 @@
<viewControllerLayoutGuide type="bottom" id="wfy-db-euE"/>
</layoutGuides>
<view key="view" contentMode="scaleToFill" id="8bC-Xf-vdC">
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
<rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
</view>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="dkx-z0-nzr" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="-26" y="-44"/>
</scene>
</scenes>
</document>

View File

@@ -2,10 +2,10 @@
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CADisableMinimumFrameDurationOnPhone</key>
<true/>
<key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleDisplayName</key>
<string>Example</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
@@ -13,7 +13,7 @@
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>flutter_openim_sdk_example</string>
<string>example</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
@@ -24,8 +24,6 @@
<string>$(FLUTTER_BUILD_NUMBER)</string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>UIApplicationSupportsIndirectInputEvents</key>
<true/>
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
<key>UIMainStoryboardFile</key>
@@ -43,7 +41,9 @@
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
<key>CADisableMinimumFrameDurationOnPhone</key>
<true/>
<key>UIApplicationSupportsIndirectInputEvents</key>
<true/>
</dict>
</plist>

View File

@@ -0,0 +1,12 @@
import Flutter
import UIKit
import XCTest
class RunnerTests: XCTestCase {
func testExample() {
// If you add code to the Runner application, consider adding tests here.
// See https://developer.apple.com/documentation/xctest for more information about using XCTest.
}
}

View File

@@ -1,26 +1,198 @@
import 'package:flutter/material.dart';
import 'package:flutter_openim_sdk/flutter_openim_sdk.dart';
import 'package:flutter_openim_sdk/src/enum/group_notify_filter.dart';
import 'package:permission_handler/permission_handler.dart';
import 'package:path/path.dart' as p;
import 'package:path_provider/path_provider.dart';
void main() {
runApp(MyApp());
try {
runApp(const MyApp());
} catch (e, stackTrace) {
print('Error during app startup: $e');
print('Stack trace: $stackTrace');
}
}
class MyApp extends StatefulWidget {
const MyApp({super.key});
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
bool _isLoading = true;
bool _isLoggedIn = false;
@override
void initState() {
super.initState();
OpenIM.iMManager.initSDK(
platformID: 1,
apiAddr: '',
wsAddr: '',
dataDir: '/',
objectStorage: 'minio',
listener: OnConnectListener());
_init();
}
Future<void> _init() async {
await _requestPermissions();
await _initSDK();
setState(() {
_isLoading = false;
});
}
Future<void> _requestPermissions() async {
// 请求存储权限
var status = await Permission.storage.request();
if (status.isGranted) {
// 权限已授予,可以读写文件
}
}
Future<void> _initSDK() async {
var directory = await getApplicationDocumentsDirectory();
final rootPath = directory.path;
OpenIM.iMManager
.initSDK(
platformID: 2,
apiAddr: 'http://192.168.77.135:10002',
wsAddr: 'ws://192.168.77.135:10001',
dataDir: '$rootPath/',
listener: OnConnectListener(onConnectSuccess: () {
// Already connected to the server
_isLoggedIn = true;
}, onConnecting: () {
// Connecting to the server, can be used for UI prompts
}, onUserTokenExpired: () {
// User token has expired, can be used for UI prompts
_isLoggedIn = false;
}, onKickedOffline: () {
// The current user is kicked offline, and the user needs to be prompted to log in again
_isLoggedIn = false;
}))
.then((value) {
if (value) {
OpenIM.iMManager.userManager.setUserListener(OnUserListener(
onSelfInfoUpdated: (userInfo) {
debugPrint('onSelfInfoUpdated: ${userInfo.toJson()}');
},
));
OpenIM.iMManager.setNotificationVisibilityRule(
notificationType: MessageType.memberQuitNotification,
visibilityType:
GroupNotifyFilter.notificationVisibleToOperatorAndAdmin);
OpenIM.iMManager.setNotificationVisibilityRule(
notificationType: MessageType.memberKickedNotification,
visibilityType:
GroupNotifyFilter.notificationVisibleToOperatorAndAdmin);
// success
} else {
// fail
}
});
}
Future<void> _login() async {
try {
await OpenIM.iMManager
.login(
userID: "8bfe13b5eac44e87963652abb91d80d2",
token:
"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJVc2VySUQiOiI4YmZlMTNiNWVhYzQ0ZTg3OTYzNjUyYWJiOTFkODBkMiIsIlBsYXRmb3JtSUQiOjIsImV4cCI6MTc3MTQwNzc2MCwiaWF0IjoxNzYzNjMxNzU1fQ.Da8DBofn085JsQlnSHfDqakH6puabZn7A2NAsUs9FoM")
.then((value) {
_isLoggedIn = true;
List<String> list = [];
OpenIM.iMManager.userManager.subscribeUsersStatus(list);
//send();
OpenIM.iMManager.messageManager
.setAdvancedMsgListener(OnAdvancedMsgListener(
// 当消息被撤回时调用
onRecvNewMessage: (msg) {
debugPrint('Received onRecvNewMessage: ${msg.toJson()}');
},
onRecvOnlineOnlyMessage: (msg) =>
debugPrint('Received online-only message: ${msg.toJson()}'),
onRecvOfflineNewMessage: (msg) =>
debugPrint('Received offline message: ${msg.toJson()}'),
));
OpenIM.iMManager.groupManager.setGroupListener(OnGroupListener(
// 当群组申请被接受时调用
onGroupApplicationAccepted: (groupApplication) {},
// 当群组申请被添加时调用
onGroupApplicationAdded: (groupApplication) {},
// 当群组申请被删除时调用
onGroupApplicationDeleted: (groupApplication) {},
// 当群组申请被拒绝时调用
onGroupApplicationRejected: (groupApplication) {
debugPrint('Group application rejected: $groupApplication');
},
// 当群组信息发生变化时调用
onGroupInfoChanged: (groupInfo) {
debugPrint('Group info changed: $groupInfo');
//等待一段时间,获得会话的最后一条消息
Future.delayed(const Duration(seconds: 2), () {
OpenIM.iMManager.conversationManager
.getOneConversation(
sourceID: groupInfo.groupID,
sessionType: ConversationType.superGroup)
.then((conversation) {
debugPrint(
'Updated conversation last message: ${conversation.latestMsg}');
});
});
},
// 当群组成员被添加时调用
onGroupMemberAdded: (groupMember) {
debugPrint('Group member added: $groupMember');
},
// 当群组成员被删除时调用
onGroupMemberDeleted: (groupMember) {
debugPrint('Group member deleted: $groupMember');
},
// 当群组成员信息发生变化时调用
onGroupMemberInfoChanged: (groupMember) {
debugPrint('Group member info changed: $groupMember');
},
// 当加入的群组被添加时调用
onJoinedGroupAdded: (groupInfo) {
debugPrint('Joined group added: $groupInfo');
},
// 当加入的群组被删除时调用
onJoinedGroupDeleted: (groupInfo) {
debugPrint('Joined group deleted: $groupInfo');
},
));
OpenIM.iMManager.conversationManager
.getAllConversationList()
.then((value) {
print('Get all conversation list successful');
});
});
} catch (error) {
_isLoggedIn = false;
} finally {
setState(() {
_isLoading = false;
});
}
}
Future<void> send() async {
OpenIM.iMManager.messageManager
.sendMessage(
userID: "724f91aceb434a28a1cd10f5564b2c68",
message: await OpenIM.iMManager.messageManager
.createTextMessage(text: 'hello openim'),
offlinePushInfo: OfflinePushInfo(title: 'title', desc: 'desc'))
.then((value) {
print('send success');
}).catchError((error) {
print('send error');
});
}
@override
@@ -30,11 +202,35 @@ class _MyAppState extends State<MyApp> {
appBar: AppBar(
title: const Text('Plugin example app'),
),
body: Column(
body: _isLoading
? const Center(child: CircularProgressIndicator())
: _isLoggedIn
? Column(
children: [
TextButton(onPressed: () {}, child: Text('login')),
TextButton(
onPressed: () {
OpenIM.iMManager.logout().then((_) {
setState(() {
_isLoggedIn = false;
});
});
},
child: const Text('logout')),
],
),
)
: Center(
child: TextButton(
onPressed: () {
setState(() {
_isLoading = true;
});
_login().then((_) {
setState(() {
_isLoading = false;
});
});
},
child: const Text('login'))),
),
);
}

114
example/libs/README.md Normal file
View File

@@ -0,0 +1,114 @@
# 本地 AAR 调试配置
此目录用于放置本地编译的 OpenIM SDK AAR 文件,仅在 example 项目调试时使用。
## 快速开始
### 步骤 1: 准备 AAR 文件
将你的 AAR 文件重命名为 `sdkcore-debug.aar` 并放在本目录:
```
example/libs/
└── sdkcore-debug.aar (你的本地编译 AAR 文件)
```
### 步骤 2: 复制到 Maven 仓库结构
```bash
# Linux/Mac/Git Bash
cd example
cp libs/sdkcore-debug.aar android/local-maven/com/openim/sdkcore/1.0.15-local/sdkcore-1.0.15-local.aar
# Windows PowerShell
cd example
Copy-Item libs\sdkcore-debug.aar android\local-maven\com\openim\sdkcore\1.0.15-local\sdkcore-1.0.15-local.aar
```
**注意**: POM 文件已自动创建在 `android/local-maven/com/openim/sdkcore/1.0.15-local/sdkcore-1.0.15-local.pom`
### 步骤 3: 启用本地 AAR
编辑 `example/android/build.gradle`,取消以下两处注释:
**1. 第 28 行 - 启用本地 Maven 仓库:**
```gradle
maven { url 'file://' + projectDir.absolutePath + '/local-maven' }
```
**2. 第 43-49 行 - 强制使用本地版本:**
```gradle
configurations.all {
resolutionStrategy {
force 'com.openim:sdkcore:1.0.15-local'
}
}
```
### 步骤 4: 清理并重新构建
```bash
cd example
flutter clean
flutter pub get
flutter build apk # 或 flutter run
```
## 更新 AAR 后快速替换
如果你已经配置过一次,只是更新了 AAR 文件:
```bash
cd example
# 复制新的 AAR 文件
cp libs/sdkcore-debug.aar android/local-maven/com/openim/sdkcore/1.0.15-local/sdkcore-1.0.15-local.aar
# 清理并重新构建
flutter clean && flutter pub get && flutter run
```
## 调试完成后恢复
重新注释掉 `example/android/build.gradle` 中的两处配置即可恢复使用远程 Maven 仓库的版本。
## 目录结构
```
example/
├── libs/
│ ├── README.md (本文件)
│ └── sdkcore-debug.aar (你的 AAR 源文件)
└── android/
└── local-maven/ (Git 已忽略)
└── com/openim/sdkcore/1.0.15-local/
├── sdkcore-1.0.15-local.aar (Maven 仓库中的 AAR)
└── sdkcore-1.0.15-local.pom (Maven 元数据)
```
## 注意事项
- ✅ 此配置只影响 example 项目,不会修改插件本身
- ✅ 切换远程/本地版本只需注释/取消注释即可
-`.gitignore` 已配置忽略 `android/local-maven/` 目录
- ⚠️ 每次修改 AAR 文件后需要重新复制到 Maven 目录并运行 `flutter clean`
- ⚠️ 确保 AAR 文件名和版本号匹配
## 故障排查
### 问题 1: Kotlin 版本不兼容错误
已修复:插件的 `android/build.gradle` 已添加 Kotlin 插件和正确的配置。
### 问题 2: "Zip file already contains entry" 错误
运行彻底清理:
```bash
cd example
flutter clean
rm -rf build
cd android && ./gradlew clean
```
### 问题 3: 找不到 sdkcore 依赖
确保:
1. `android/build.gradle` 中的本地 Maven 仓库已取消注释
2. `resolutionStrategy.force` 配置已取消注释
3. AAR 文件已正确复制到 Maven 目录结构中

View File

@@ -45,10 +45,10 @@ packages:
dependency: "direct main"
description:
name: cupertino_icons
sha256: d57953e10f9f8327ce64a508a355f0b1ec902193f66288e8cb5070e7c47eeb2d
sha256: ba631d1c7f7bef6b729a622b7b752645a2d076dba9976925b8f25725a30e1ee6
url: "https://pub.dev"
source: hosted
version: "1.0.6"
version: "1.0.8"
fake_async:
dependency: transitive
description:
@@ -57,55 +57,220 @@ packages:
url: "https://pub.dev"
source: hosted
version: "1.3.1"
ffi:
dependency: transitive
description:
name: ffi
sha256: "16ed7b077ef01ad6170a3d0c57caa4a112a38d7a2ed5602e0aca9ca6f3d98da6"
url: "https://pub.dev"
source: hosted
version: "2.1.3"
flutter:
dependency: "direct main"
description: flutter
source: sdk
version: "0.0.0"
flutter_lints:
dependency: "direct dev"
description:
name: flutter_lints
sha256: "9e8c3858111da373efc5aa341de011d9bd23e2c5c5e0c62bccf32438e192d7b1"
url: "https://pub.dev"
source: hosted
version: "3.0.2"
flutter_openim_sdk:
dependency: "direct main"
description:
path: ".."
relative: true
source: path
version: "3.5.0-rc.1+1"
version: "3.8.3+2"
flutter_test:
dependency: "direct dev"
description: flutter
source: sdk
version: "0.0.0"
flutter_web_plugins:
dependency: transitive
description: flutter
source: sdk
version: "0.0.0"
leak_tracker:
dependency: transitive
description:
name: leak_tracker
sha256: "3f87a60e8c63aecc975dda1ceedbc8f24de75f09e4856ea27daf8958f2f0ce05"
url: "https://pub.dev"
source: hosted
version: "10.0.5"
leak_tracker_flutter_testing:
dependency: transitive
description:
name: leak_tracker_flutter_testing
sha256: "932549fb305594d82d7183ecd9fa93463e9914e1b67cacc34bc40906594a1806"
url: "https://pub.dev"
source: hosted
version: "3.0.5"
leak_tracker_testing:
dependency: transitive
description:
name: leak_tracker_testing
sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3"
url: "https://pub.dev"
source: hosted
version: "3.0.1"
lints:
dependency: transitive
description:
name: lints
sha256: cbf8d4b858bb0134ef3ef87841abdf8d63bfc255c266b7bf6b39daa1085c4290
url: "https://pub.dev"
source: hosted
version: "3.0.0"
matcher:
dependency: transitive
description:
name: matcher
sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e"
sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb
url: "https://pub.dev"
source: hosted
version: "0.12.16"
version: "0.12.16+1"
material_color_utilities:
dependency: transitive
description:
name: material_color_utilities
sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41"
sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec
url: "https://pub.dev"
source: hosted
version: "0.5.0"
version: "0.11.1"
meta:
dependency: transitive
description:
name: meta
sha256: a6e590c838b18133bb482a2745ad77c5bb7715fb0451209e1a7567d416678b8e
sha256: bdb68674043280c3428e9ec998512fb681678676b3c54e773629ffe74419f8c7
url: "https://pub.dev"
source: hosted
version: "1.10.0"
version: "1.15.0"
path:
dependency: transitive
description:
name: path
sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917"
sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af"
url: "https://pub.dev"
source: hosted
version: "1.8.3"
version: "1.9.0"
path_provider:
dependency: "direct main"
description:
name: path_provider
sha256: "50c5dd5b6e1aaf6fb3a78b33f6aa3afca52bf903a8a5298f53101fdaee55bbcd"
url: "https://pub.dev"
source: hosted
version: "2.1.5"
path_provider_android:
dependency: transitive
description:
name: path_provider_android
sha256: "4adf4fd5423ec60a29506c76581bc05854c55e3a0b72d35bb28d661c9686edf2"
url: "https://pub.dev"
source: hosted
version: "2.2.15"
path_provider_foundation:
dependency: transitive
description:
name: path_provider_foundation
sha256: "4843174df4d288f5e29185bd6e72a6fbdf5a4a4602717eed565497429f179942"
url: "https://pub.dev"
source: hosted
version: "2.4.1"
path_provider_linux:
dependency: transitive
description:
name: path_provider_linux
sha256: f7a1fe3a634fe7734c8d3f2766ad746ae2a2884abe22e241a8b301bf5cac3279
url: "https://pub.dev"
source: hosted
version: "2.2.1"
path_provider_platform_interface:
dependency: transitive
description:
name: path_provider_platform_interface
sha256: "88f5779f72ba699763fa3a3b06aa4bf6de76c8e5de842cf6f29e2e06476c2334"
url: "https://pub.dev"
source: hosted
version: "2.1.2"
path_provider_windows:
dependency: transitive
description:
name: path_provider_windows
sha256: bd6f00dbd873bfb70d0761682da2b3a2c2fccc2b9e84c495821639601d81afe7
url: "https://pub.dev"
source: hosted
version: "2.3.0"
permission_handler:
dependency: "direct main"
description:
name: permission_handler
sha256: "59adad729136f01ea9e35a48f5d1395e25cba6cea552249ddbe9cf950f5d7849"
url: "https://pub.dev"
source: hosted
version: "11.4.0"
permission_handler_android:
dependency: transitive
description:
name: permission_handler_android
sha256: d3971dcdd76182a0c198c096b5db2f0884b0d4196723d21a866fc4cdea057ebc
url: "https://pub.dev"
source: hosted
version: "12.1.0"
permission_handler_apple:
dependency: transitive
description:
name: permission_handler_apple
sha256: f000131e755c54cf4d84a5d8bd6e4149e262cc31c5a8b1d698de1ac85fa41023
url: "https://pub.dev"
source: hosted
version: "9.4.7"
permission_handler_html:
dependency: transitive
description:
name: permission_handler_html
sha256: "38f000e83355abb3392140f6bc3030660cfaef189e1f87824facb76300b4ff24"
url: "https://pub.dev"
source: hosted
version: "0.1.3+5"
permission_handler_platform_interface:
dependency: transitive
description:
name: permission_handler_platform_interface
sha256: eb99b295153abce5d683cac8c02e22faab63e50679b937fa1bf67d58bb282878
url: "https://pub.dev"
source: hosted
version: "4.3.0"
permission_handler_windows:
dependency: transitive
description:
name: permission_handler_windows
sha256: "1a790728016f79a41216d88672dbc5df30e686e811ad4e698bfc51f76ad91f1e"
url: "https://pub.dev"
source: hosted
version: "0.2.1"
platform:
dependency: transitive
description:
name: platform
sha256: "5d6b1b0036a5f331ebc77c850ebc8506cbc1e9416c27e59b439f917a902a4984"
url: "https://pub.dev"
source: hosted
version: "3.1.6"
plugin_platform_interface:
dependency: transitive
description:
name: plugin_platform_interface
sha256: "4820fbfdb9478b1ebae27888254d445073732dae3d6ea81f0b7e06d5dedc3f02"
url: "https://pub.dev"
source: hosted
version: "2.1.8"
sky_engine:
dependency: transitive
description: flutter
@@ -155,10 +320,10 @@ packages:
dependency: transitive
description:
name: test_api
sha256: "5c2f730018264d276c20e4f1503fd1308dfbbae39ec8ee63c5236311ac06954b"
sha256: "5b8a98dafc4d5c4c9c72d8b31ab2b23fc13422348d2997120294d3bac86b4ddb"
url: "https://pub.dev"
source: hosted
version: "0.6.1"
version: "0.7.2"
vector_math:
dependency: transitive
description:
@@ -167,14 +332,30 @@ packages:
url: "https://pub.dev"
source: hosted
version: "2.1.4"
vm_service:
dependency: transitive
description:
name: vm_service
sha256: "5c5f338a667b4c644744b661f309fb8080bb94b18a7e91ef1dbd343bed00ed6d"
url: "https://pub.dev"
source: hosted
version: "14.2.5"
web:
dependency: transitive
description:
name: web
sha256: afe077240a270dcfd2aafe77602b4113645af95d0ad31128cc02bce5ac5d5152
sha256: "868d88a33d8a87b18ffc05f9f030ba328ffefba92d6c127917a2ba740f9cfe4a"
url: "https://pub.dev"
source: hosted
version: "0.3.0"
version: "1.1.1"
xdg_directories:
dependency: transitive
description:
name: xdg_directories
sha256: "7a3f37b05d989967cdddcbb571f1ea834867ae2faa29725fd085180e0883aa15"
url: "https://pub.dev"
source: hosted
version: "1.1.0"
sdks:
dart: ">=3.2.0-194.0.dev <4.0.0"
flutter: ">=1.20.0"
dart: ">=3.5.0 <4.0.0"
flutter: ">=3.24.0"

View File

@@ -2,13 +2,32 @@ name: flutter_openim_sdk_example
description: Demonstrates how to use the flutter_openim_sdk plugin.
# The following line prevents the package from being accidentally published to
# pub.dev using `pub publish`. This is preferred for private packages.
#publish_to: 'none' # Remove this line if you wish to publish to pub.dev
version: 1.0.0
# pub.dev using `flutter pub publish`. This is preferred for private packages.
publish_to: 'none' # Remove this line if you wish to publish to pub.dev
# The following defines the version and build number for your application.
# A version number is three numbers separated by dots, like 1.2.43
# followed by an optional build number separated by a +.
# Both the version and the builder number may be overridden in flutter
# build by specifying --build-name and --build-number, respectively.
# In Android, build-name is used as versionName while build-number used as versionCode.
# Read more about Android versioning at https://developer.android.com/studio/publish/versioning
# In iOS, build-name is used as CFBundleShortVersionString while build-number is used as CFBundleVersion.
# Read more about iOS versioning at
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
# In Windows, build-name is used as the major, minor, and patch parts
# of the product and file versions while build-number is used as the build suffix.
version: 1.0.0+1
environment:
sdk: ">=2.12.0 <3.0.0"
sdk: '>=3.4.4 <4.0.0'
# Dependencies specify other packages that your package needs in order to work.
# To automatically upgrade your package dependencies to the latest versions
# consider running `flutter pub upgrade --major-versions`. Alternatively,
# dependencies can be manually updated by changing the version numbers below to
# the latest version available on pub.dev. To see which dependencies have newer
# versions available, run `flutter pub outdated`.
dependencies:
flutter:
sdk: flutter
@@ -23,16 +42,27 @@ dependencies:
# The following adds the Cupertino Icons font to your application.
# Use with the CupertinoIcons class for iOS style icons.
cupertino_icons: ^1.0.2
cupertino_icons: ^1.0.6
permission_handler: ^11.3.1
path_provider: ^2.1.4
dev_dependencies:
flutter_test:
sdk: flutter
# The "flutter_lints" package below contains a set of recommended lints to
# encourage good coding practices. The lint set provided by the package is
# activated in the `analysis_options.yaml` file located at the root of your
# package. See that file for information about deactivating specific lint
# rules and activating additional ones.
flutter_lints: ^3.0.0
# For information on the generic Dart part of this file, see the
# following page: https://dart.dev/tools/pub/pubspec
# The following section is specific to Flutter.
# The following section is specific to Flutter packages.
flutter:
# The following line ensures that the Material Icons font is
@@ -46,7 +76,7 @@ flutter:
# - images/a_dot_ham.jpeg
# An image asset can refer to one or more resolution-specific "variants", see
# https://flutter.dev/assets-and-images/#resolution-aware.
# https://flutter.dev/assets-and-images/#resolution-aware
# For details regarding adding assets from package dependencies, see
# https://flutter.dev/assets-and-images/#from-packages

View File

@@ -1,7 +1,7 @@
// This is a basic Flutter widget test.
//
// To perform an interaction with a widget in your test, use the WidgetTester
// utility that Flutter provides. For example, you can send tap and scroll
// utility in the flutter_test package. For example, you can send tap and scroll
// gestures. You can also use WidgetTester to find child widgets in the widget
// tree, read text, and verify that the values of widget properties are correct.
@@ -11,17 +11,20 @@ import 'package:flutter_test/flutter_test.dart';
import 'package:flutter_openim_sdk_example/main.dart';
void main() {
testWidgets('Verify Platform version', (WidgetTester tester) async {
testWidgets('Counter increments smoke test', (WidgetTester tester) async {
// Build our app and trigger a frame.
await tester.pumpWidget(MyApp());
await tester.pumpWidget(const MyApp());
// Verify that platform version is retrieved.
expect(
find.byWidgetPredicate(
(Widget widget) => widget is Text &&
widget.data!.startsWith('Running on:'),
),
findsOneWidget,
);
// Verify that our counter starts at 0.
expect(find.text('0'), findsOneWidget);
expect(find.text('1'), findsNothing);
// Tap the '+' icon and trigger a frame.
await tester.tap(find.byIcon(Icons.add));
await tester.pump();
// Verify that our counter has incremented.
expect(find.text('0'), findsNothing);
expect(find.text('1'), findsOneWidget);
});
}

View File

@@ -0,0 +1,34 @@
@echo off
REM ====================================
REM 更新本地 AAR 并重新构建
REM ====================================
echo [1/5] 复制 AAR 文件到 Maven 仓库...
copy /Y libs\sdkcore-debug.aar android\local-maven\com\openim\sdkcore\1.0.15-local\sdkcore-1.0.15-local.aar
if %errorlevel% neq 0 (
echo 错误: AAR 文件复制失败,请检查 libs\sdkcore-debug.aar 是否存在
pause
exit /b 1
)
echo [2/5] 清理 Flutter 缓存...
flutter clean
echo [3/5] 删除构建目录...
if exist build rmdir /S /Q build
echo [4/5] 清理 Gradle 缓存...
cd android
call gradlew.bat clean
cd ..
echo [5/5] 重新获取依赖...
flutter pub get
echo.
echo ========================================
echo 更新完成!现在可以运行:
echo flutter run (运行应用)
echo flutter build apk (构建 APK)
echo ========================================
pause

View File

@@ -0,0 +1,34 @@
#!/bin/bash
####################################
# 更新本地 AAR 并重新构建
####################################
set -e # 遇到错误立即退出
echo "[1/5] 复制 AAR 文件到 Maven 仓库..."
if [ ! -f "libs/sdkcore-debug.aar" ]; then
echo "错误: libs/sdkcore-debug.aar 不存在"
exit 1
fi
cp libs/sdkcore-debug.aar android/local-maven/com/openim/sdkcore/1.0.15-local/sdkcore-1.0.15-local.aar
echo "[2/5] 清理 Flutter 缓存..."
flutter clean
echo "[3/5] 删除构建目录..."
rm -rf build
echo "[4/5] 清理 Gradle 缓存..."
cd android
./gradlew clean
cd ..
echo "[5/5] 重新获取依赖..."
flutter pub get
echo ""
echo "========================================"
echo "更新完成!现在可以运行:"
echo " flutter run (运行应用)"
echo " flutter build apk (构建 APK)"
echo "========================================"

17
example/windows/.gitignore vendored Normal file
View File

@@ -0,0 +1,17 @@
flutter/ephemeral/
# Visual Studio user-specific files.
*.suo
*.user
*.userosscache
*.sln.docstates
# Visual Studio build-related files.
x64/
x86/
# Visual Studio cache files
# files ending in .cache can be ignored
*.[Cc]ache
# but keep track of directories ending in .cache
!*.[Cc]ache/

View File

@@ -0,0 +1,110 @@
# Project-level configuration.
cmake_minimum_required(VERSION 3.14)
project(flutter_openim_sdk_example LANGUAGES CXX)
# The name of the executable created for the application. Change this to change
# the on-disk name of your application.
set(BINARY_NAME "flutter_openim_sdk_example")
# Explicitly opt in to modern CMake behaviors to avoid warnings with recent
# versions of CMake.
cmake_policy(VERSION 3.14...3.25)
# Define build configuration option.
get_property(IS_MULTICONFIG GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
if(IS_MULTICONFIG)
set(CMAKE_CONFIGURATION_TYPES "Debug;Profile;Release"
CACHE STRING "" FORCE)
else()
if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
set(CMAKE_BUILD_TYPE "Debug" CACHE
STRING "Flutter build mode" FORCE)
set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS
"Debug" "Profile" "Release")
endif()
endif()
# Define settings for the Profile build mode.
set(CMAKE_EXE_LINKER_FLAGS_PROFILE "${CMAKE_EXE_LINKER_FLAGS_RELEASE}")
set(CMAKE_SHARED_LINKER_FLAGS_PROFILE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE}")
set(CMAKE_C_FLAGS_PROFILE "${CMAKE_C_FLAGS_RELEASE}")
set(CMAKE_CXX_FLAGS_PROFILE "${CMAKE_CXX_FLAGS_RELEASE}")
# Use Unicode for all projects.
add_definitions(-DUNICODE -D_UNICODE)
# Compilation settings that should be applied to most targets.
#
# Be cautious about adding new options here, as plugins use this function by
# default. In most cases, you should add new options to specific targets instead
# of modifying this function.
function(APPLY_STANDARD_SETTINGS TARGET)
target_compile_features(${TARGET} PUBLIC cxx_std_17)
target_compile_options(${TARGET} PRIVATE /W4 /WX /wd"4100")
target_compile_options(${TARGET} PRIVATE /EHsc)
target_compile_definitions(${TARGET} PRIVATE "_HAS_EXCEPTIONS=0")
target_compile_definitions(${TARGET} PRIVATE "$<$<CONFIG:Debug>:_DEBUG>")
endfunction()
# Flutter library and tool build rules.
set(FLUTTER_MANAGED_DIR "${CMAKE_CURRENT_SOURCE_DIR}/flutter")
add_subdirectory(${FLUTTER_MANAGED_DIR})
# Application build; see runner/CMakeLists.txt.
add_subdirectory("runner")
# Enable the test target.
set(include_flutter_openim_sdk_tests TRUE)
# Generated plugin build rules, which manage building the plugins and adding
# them to the application.
include(flutter/generated_plugins.cmake)
# === Installation ===
# Support files are copied into place next to the executable, so that it can
# run in place. This is done instead of making a separate bundle (as on Linux)
# so that building and running from within Visual Studio will work.
set(BUILD_BUNDLE_DIR "$<TARGET_FILE_DIR:${BINARY_NAME}>")
# Make the "install" step default, as it's required to run.
set(CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD 1)
if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
set(CMAKE_INSTALL_PREFIX "${BUILD_BUNDLE_DIR}" CACHE PATH "..." FORCE)
endif()
set(INSTALL_BUNDLE_DATA_DIR "${CMAKE_INSTALL_PREFIX}/data")
set(INSTALL_BUNDLE_LIB_DIR "${CMAKE_INSTALL_PREFIX}")
install(TARGETS ${BINARY_NAME} RUNTIME DESTINATION "${CMAKE_INSTALL_PREFIX}"
COMPONENT Runtime)
install(FILES "${FLUTTER_ICU_DATA_FILE}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}"
COMPONENT Runtime)
install(FILES "${FLUTTER_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}"
COMPONENT Runtime)
if(PLUGIN_BUNDLED_LIBRARIES)
install(FILES "${PLUGIN_BUNDLED_LIBRARIES}"
DESTINATION "${INSTALL_BUNDLE_LIB_DIR}"
COMPONENT Runtime)
endif()
# Copy the native assets provided by the build.dart from all packages.
set(NATIVE_ASSETS_DIR "${PROJECT_BUILD_DIR}native_assets/windows/")
install(DIRECTORY "${NATIVE_ASSETS_DIR}"
DESTINATION "${INSTALL_BUNDLE_LIB_DIR}"
COMPONENT Runtime)
# Fully re-copy the assets directory on each build to avoid having stale files
# from a previous install.
set(FLUTTER_ASSET_DIR_NAME "flutter_assets")
install(CODE "
file(REMOVE_RECURSE \"${INSTALL_BUNDLE_DATA_DIR}/${FLUTTER_ASSET_DIR_NAME}\")
" COMPONENT Runtime)
install(DIRECTORY "${PROJECT_BUILD_DIR}/${FLUTTER_ASSET_DIR_NAME}"
DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" COMPONENT Runtime)
# Install the AOT library on non-Debug builds only.
install(FILES "${AOT_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}"
CONFIGURATIONS Profile;Release
COMPONENT Runtime)

View File

@@ -0,0 +1,109 @@
# This file controls Flutter-level build steps. It should not be edited.
cmake_minimum_required(VERSION 3.14)
set(EPHEMERAL_DIR "${CMAKE_CURRENT_SOURCE_DIR}/ephemeral")
# Configuration provided via flutter tool.
include(${EPHEMERAL_DIR}/generated_config.cmake)
# TODO: Move the rest of this into files in ephemeral. See
# https://github.com/flutter/flutter/issues/57146.
set(WRAPPER_ROOT "${EPHEMERAL_DIR}/cpp_client_wrapper")
# Set fallback configurations for older versions of the flutter tool.
if (NOT DEFINED FLUTTER_TARGET_PLATFORM)
set(FLUTTER_TARGET_PLATFORM "windows-x64")
endif()
# === Flutter Library ===
set(FLUTTER_LIBRARY "${EPHEMERAL_DIR}/flutter_windows.dll")
# Published to parent scope for install step.
set(FLUTTER_LIBRARY ${FLUTTER_LIBRARY} PARENT_SCOPE)
set(FLUTTER_ICU_DATA_FILE "${EPHEMERAL_DIR}/icudtl.dat" PARENT_SCOPE)
set(PROJECT_BUILD_DIR "${PROJECT_DIR}/build/" PARENT_SCOPE)
set(AOT_LIBRARY "${PROJECT_DIR}/build/windows/app.so" PARENT_SCOPE)
list(APPEND FLUTTER_LIBRARY_HEADERS
"flutter_export.h"
"flutter_windows.h"
"flutter_messenger.h"
"flutter_plugin_registrar.h"
"flutter_texture_registrar.h"
)
list(TRANSFORM FLUTTER_LIBRARY_HEADERS PREPEND "${EPHEMERAL_DIR}/")
add_library(flutter INTERFACE)
target_include_directories(flutter INTERFACE
"${EPHEMERAL_DIR}"
)
target_link_libraries(flutter INTERFACE "${FLUTTER_LIBRARY}.lib")
add_dependencies(flutter flutter_assemble)
# === Wrapper ===
list(APPEND CPP_WRAPPER_SOURCES_CORE
"core_implementations.cc"
"standard_codec.cc"
)
list(TRANSFORM CPP_WRAPPER_SOURCES_CORE PREPEND "${WRAPPER_ROOT}/")
list(APPEND CPP_WRAPPER_SOURCES_PLUGIN
"plugin_registrar.cc"
)
list(TRANSFORM CPP_WRAPPER_SOURCES_PLUGIN PREPEND "${WRAPPER_ROOT}/")
list(APPEND CPP_WRAPPER_SOURCES_APP
"flutter_engine.cc"
"flutter_view_controller.cc"
)
list(TRANSFORM CPP_WRAPPER_SOURCES_APP PREPEND "${WRAPPER_ROOT}/")
# Wrapper sources needed for a plugin.
add_library(flutter_wrapper_plugin STATIC
${CPP_WRAPPER_SOURCES_CORE}
${CPP_WRAPPER_SOURCES_PLUGIN}
)
apply_standard_settings(flutter_wrapper_plugin)
set_target_properties(flutter_wrapper_plugin PROPERTIES
POSITION_INDEPENDENT_CODE ON)
set_target_properties(flutter_wrapper_plugin PROPERTIES
CXX_VISIBILITY_PRESET hidden)
target_link_libraries(flutter_wrapper_plugin PUBLIC flutter)
target_include_directories(flutter_wrapper_plugin PUBLIC
"${WRAPPER_ROOT}/include"
)
add_dependencies(flutter_wrapper_plugin flutter_assemble)
# Wrapper sources needed for the runner.
add_library(flutter_wrapper_app STATIC
${CPP_WRAPPER_SOURCES_CORE}
${CPP_WRAPPER_SOURCES_APP}
)
apply_standard_settings(flutter_wrapper_app)
target_link_libraries(flutter_wrapper_app PUBLIC flutter)
target_include_directories(flutter_wrapper_app PUBLIC
"${WRAPPER_ROOT}/include"
)
add_dependencies(flutter_wrapper_app flutter_assemble)
# === Flutter tool backend ===
# _phony_ is a non-existent file to force this command to run every time,
# since currently there's no way to get a full input/output list from the
# flutter tool.
set(PHONY_OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/_phony_")
set_source_files_properties("${PHONY_OUTPUT}" PROPERTIES SYMBOLIC TRUE)
add_custom_command(
OUTPUT ${FLUTTER_LIBRARY} ${FLUTTER_LIBRARY_HEADERS}
${CPP_WRAPPER_SOURCES_CORE} ${CPP_WRAPPER_SOURCES_PLUGIN}
${CPP_WRAPPER_SOURCES_APP}
${PHONY_OUTPUT}
COMMAND ${CMAKE_COMMAND} -E env
${FLUTTER_TOOL_ENVIRONMENT}
"${FLUTTER_ROOT}/packages/flutter_tools/bin/tool_backend.bat"
${FLUTTER_TARGET_PLATFORM} $<CONFIG>
VERBATIM
)
add_custom_target(flutter_assemble DEPENDS
"${FLUTTER_LIBRARY}"
${FLUTTER_LIBRARY_HEADERS}
${CPP_WRAPPER_SOURCES_CORE}
${CPP_WRAPPER_SOURCES_PLUGIN}
${CPP_WRAPPER_SOURCES_APP}
)

View File

@@ -0,0 +1,17 @@
//
// Generated file. Do not edit.
//
// clang-format off
#include "generated_plugin_registrant.h"
#include <flutter_openim_sdk/flutter_openim_sdk_plugin.h>
#include <permission_handler_windows/permission_handler_windows_plugin.h>
void RegisterPlugins(flutter::PluginRegistry* registry) {
FlutterOpenimSdkPluginRegisterWithRegistrar(
registry->GetRegistrarForPlugin("FlutterOpenimSdkPlugin"));
PermissionHandlerWindowsPluginRegisterWithRegistrar(
registry->GetRegistrarForPlugin("PermissionHandlerWindowsPlugin"));
}

View File

@@ -0,0 +1,15 @@
//
// Generated file. Do not edit.
//
// clang-format off
#ifndef GENERATED_PLUGIN_REGISTRANT_
#define GENERATED_PLUGIN_REGISTRANT_
#include <flutter/plugin_registry.h>
// Registers Flutter plugins.
void RegisterPlugins(flutter::PluginRegistry* registry);
#endif // GENERATED_PLUGIN_REGISTRANT_

Some files were not shown because too many files have changed in this diff Show More