Android项目集成Flutter
Posted 一杯清泉
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android项目集成Flutter相关的知识,希望对你有一定的参考价值。
在android开发中某些组件或者页面需要使用Flutter开发,这篇文章主要介绍已有的Android项目集成Flutter开发环境。
一、Flutter开发环境配置
1、flutter插件配置
Android Studio ——>Preferences——>搜索flutter插件——>install——>重启项目
2、下载flutter-sdk
我使用的是Mac的系统,下载地址为:
https://storage.googleapis.com/flutter_infra/releases/stable/macos/flutter_macos_2.0.6-stable.zip
下载完成解压缩,放在合适的位置。
3、环境变量配置
open -e ~/.zshrc
文件中输入:
export FLUTTER_ROOT=/Users/xxx/Library/Flutter/flutter
export PUB_HOSTED_URL=https://pub.flutter-io.cn
export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn
export PATH=$PATH:$FLUTTER_ROOT/bin
FLUTTER_ROOT:SDK路径,改成你自己设置的地址。
PUB_HOSTED_URL和FLUTTER_STORAGE_BASE_URL根据:https://flutterchina.club/setup-macos/设置。
使环境变量生效:
source ~/.zshrc
4、flutter项目介绍
flutter项目分为以下几个,Android中集成Flutter需要新建Flutter Module。
- Flutter Application: Flutter应用
- Flutter Module :Flutter与原生混合开发
- Flutter Plugin:Flutter插件
- Flutter Package:纯Dart组件
二、Android项目中添加flutter
1、添加module
打开或者新建Android工程,选择New Module:
Project name:项目名称。
Flutter SDK path:上一步所下载的SDK放置的路径。
Project location:flutter_module所在的父级路径,这个路径需要和Android项目路径在同一等级,千万不能在Android项目内部的目录,否则会关联失败,没法编译。
之后会自动生成:
(1)AndroidFlutterDemo/settings.gradle
setBinding(new Binding([gradle: this]))
evaluate(new File(
settingsDir,
'../flutter_module/.android/include_flutter.groovy'
))
(2)AndroidFlutterDemo/app/build.gradle
implementation project(path: ':flutter')
如果没有则可以手动添加,注意:
- include_flutter.groovy的路径必须是flutter_module里面的,否则会找不到。
- implementation project(path: ':flutter')必须是固定的,不能更改为:implementation project(path: ':flutter_module')
2、添加清单文件
将FlutterActivity注册到Android项目的清单文件中,这一步需要手动操作。
<activity
android:name="io.flutter.embedding.android.FlutterActivity"
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
android:hardwareAccelerated="true"
android:theme="@style/AppTheme"
android:windowSoftInputMode="adjustResize" >
</activity>
3、跳转测试
MainActivity中:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.btn).setOnClickListener(view -> {
Intent intent = FlutterActivity.createDefaultIntent(MainActivity.this);
startActivity(intent);
});
}
}
这样就可以跳转到新的flutter页面了。
Demo地址:https://download.csdn.net/download/yoonerloop/18542251
以上是关于Android项目集成Flutter的主要内容,如果未能解决你的问题,请参考以下文章
如何在集成了 Flutter 模块的 Android 应用上运行 UI 测试?
Flutterflutter doctor 报错Android license status unknown. Run `flutter doctor --android-licenses‘(代码片段