赞
踩
前提条件:
完成Flutter安装与环境搭建
1、在Android项目中,添加Flutter支持的体系结构过滤器
项目 - > app -> build.gradle
- ......
- defaultConfig {
- ......
-
- ndk {
- // Flutter支持的体系结构过滤器
- abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86_64'
- }
- }
2、 Android Studio需要将你的 Flutter 模块作为依赖:
1)、在现有Android项目同级目录终端创建flutter module
前往File > New > New Flutter Project…
选择“Flutter”
填写你的 Flutter SDK path
之后点击“Next”
点击“Next”之后,进入下面图示:
- compileOptions {
- sourceCompatibility 1.8
- targetCompatibility 1.8
- }
- // 加入下面配置
-
- setBinding(new Binding([gradle: this]))
-
- evaluate(new File(
-
- settingsDir.parentFile,
-
- 'flutter_data/.android/include_flutter.groovy'
-
- ))
说明:flutter_data是上面刚创建的Flutter Module项目名称
之后“Sync Now”一下项目。
改后:
将RepositoriesMode模式替换后,再点击“Try Again”
如果还遇到第三方解析失败,在app -> build.gradle中添加maven:
- dependencyResolutionManagement {
- repositoriesMode.set(RepositoriesMode.PREFER_PROJECT)
- repositories {
- maven { url 'https://jitpack.io' }
- maven { url 'https://maven.aliyun.com/nexus/content/groups/public/' }
- maven { url 'https://maven.aliyun.com/repository/central' }
- maven { url 'https://maven.aliyun.com/nexus/content/repositories/google' }
- google()
- mavenCentral()
- }
- }
另外在项目下的build.gradel 添加:
- allprojects {
- repositories {
- maven { url 'https://jitpack.io' }
- maven { url 'https://maven.aliyun.com/nexus/content/groups/public/' }
- maven { url 'https://maven.aliyun.com/repository/central' }
- maven { url 'https://maven.aliyun.com/nexus/content/repositories/google' }
- google()
- mavenCentral()
- }
- }
-
- task clean(type: Delete) {
- delete rootProject.buildDir
- }
如图所示:
我们需要在app下的build.gradle文件中添加该module的依赖。
- dependencies {
- ......
-
- implementation project(':flutter')
- }
“Sync”一下项目这样就成功地将Flutter引入到了Android原生项目中。
上面的项目,每次要看flutter代码是不是每次都要切过来切过去的,所以呢,我们可以在setting.gradle 加上这么一行代码:
加下面两行主要目的是直接在原生的app工程下,查看flutter的代码,避免切来切去
include "flutter_data"
project(':flutter_data').projectDir = new File('../flutter_data')
添加代码后“sync”项目,会生成flutter_data项目,这样就可以直接在原生app中修改flutter中代码了。
1、Android跳转Flutter
1)、在清单AndroidManifest里面添加 FlutterActivity在清单AndroidManifest里面添加 FlutterActivity
- <activity
- android:name="io.flutter.embedding.android.FlutterActivity"
- android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
- android:hardwareAccelerated="true"
- android:windowSoftInputMode="adjustResize" />
在MainActivity中,调用点击事件,直接跳转:
- btnSendFlutter.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- startActivity(FlutterActivity.createDefaultIntent(MainActivity.this));
- }
- });
- public class MyApplication extends Application {
- private FlutterEngine flutterEngine;
-
- @Override
- public void onCreate() {
- super.onCreate();
- // 创建一个Flutter引擎
- flutterEngine = new FlutterEngine(this);
-
- // 开始执行 Dart 代码来预热flutter引擎
- flutterEngine.getDartExecutor().executeDartEntrypoint(
- DartExecutor.DartEntrypoint.createDefault()
- );
-
- //缓存Flutter引擎用来开启FlutterActivity
- FlutterEngineCache
- .getInstance()
- .put("my_engine_id", flutterEngine);
- }
-
- }
在AndroidManifest.xml中使用引用的Application:
android:name=".MyApplication"
使用缓存引擎跳转Flutter:
- startActivity(
- FlutterActivity
- .withCachedEngine("my_engine_id")
- .build(MainActivity.this)
- );
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。