一、环境准备
·支持 Flutter 3.16.0及以上版本。
·Android 端开发:
·Android Studio 3.5及以上版本。
·Android SDK API Level 19及以上。
·Android 4.4及以上,支持 armeabi-v7a、arm-v8a 架构的移动设备。
·iOS 端开发:
·Xcode 11.0及以上版本。
·iOS 9.0以上的 iPhone 或者 iPad 真机。
·项目已配置有效的开发者签名。
二、pub 方式集成
在 pubspec.yaml 中增加配置:
# 默认可以不写,如果遇到与美颜SDK冲突问题可以加上,并指定 NoXMagicEffectPlayer: sub_spec: 'Default' # 可根据自身需要,切换如下版本(从3.4.1版本开始支持) # Default: 默认值,会集成全量SDK,包括 TCXMagicAuth 库 # NoXMagic: 集成SDK时不会引入 TCXMagicAuth 库,一般用于项目内同时存在美颜SDK时,用于解决类冲突问题 flutter_effect_player: ^3.4.1
三、远程仓库方式集成
集成 EffectPlayer_Player 最新版本,默认情况下也是集成此版本。在 pubspec.yaml 中增加配置:
# 默认可以不写,如果遇到与美颜SDK冲突问题可以加上,并指定 NoXMagicEffectPlayer: sub_spec: 'Default' # 可根据自身需要,切换如下版本(从3.4.1版本开始支持) # Default: 默认值,会集成全量SDK,包括 TCXMagicAuth 库 # NoXMagic: 集成SDK时不会引入 TCXMagicAuth 库,一般用于项目内同时存在美颜SDK时,用于解决类冲突问题 flutter_effect_player: git: url: https://github.com/Tencent-RTC/EffectPlayer_Flutter.git
如果需要集成特定版本,可以指定通过 ref 依赖的 tag 来指定到对应版本,如下所示。更多归档的 tag 请参考 release 列表 。
flutter_effect_player: git: url: https://github.com/Tencent-RTC/EffectPlayer_Flutter ref: release_example_tag
集成之后,可以通过代码编辑器自带的 UI 界面来获取 Flutter 依赖,也可以直接使用如下命令获取:
flutter pub get
使用过程中,可以通过以下命令来更新现有 Flutter 依赖:
flutter pub upgrade
四、加密视频播放配置
如果你在使用 TepTools 工具转换动画时,勾选了 Anim Encrypt 开关,那么转换出来的动画则是加密的。此时在使用特效播放器播放时,如果你的应用 targetSDKVersion 大于或等于28,那么需要单独进行如下配置:
1. 在项目新建 res/xml/network_security_config.xml 文件,设置网络安全性配置:
<?xml version="1.0" encoding="utf-8"?> <network-security-config> <domain-config cleartextTrafficPermitted="true"> <domain includeSubdomains="true">localhost</domain> <domain includeSubdomains="true">127.0.0.1</domain> </domain-config> </network-security-config>
2. 在 AndroidManifest.xml 文件下的 application 标签增加以下属性:
<?xml version="1.0" encoding="utf-8"?> <manifest … > <application android:networkSecurityConfig="@xml/network_security_config" … > … </application></manifest>
五、iOS 端配置
注意:iOS 端目前暂不支持模拟器运行调试,建议在真机下进行开发调试。
六、加密视频播放配置
如果你在使用 TepTools 工具转换动画时,勾选了 Anim Encrypt 开关,那么转换出来的动画则是加密的。此时在使用特效播放器播放时,那么需要单独进行如下配置,在 iOS 的 Info.plist 中增加如下配置:
<key>NSAppTransportSecurity</key><dict> <key>NSAllowsArbitraryLoads</key> <true/></dict>