diff --git a/app/build.gradle b/app/build.gradle
index 003bc9cb1..b8f3c81a0 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -291,6 +291,7 @@ dependencies {
implementation fileTree(dir: 'libs', include: ['oppo-mcssdk-2.0.2.jar'])
// xplan flutter module
implementation project(path: ':flutter')
+ implementation project(path: ':flutter_boost')
}
repositories {
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index d29174b56..71922af3f 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -1271,10 +1271,17 @@
tools:remove="android:screenOrientation" />
+ android:windowSoftInputMode="adjustResize" >
+
+
+
+
+
diff --git a/app/src/main/java/com/yizhuan/erban/MainActivity.java b/app/src/main/java/com/yizhuan/erban/MainActivity.java
index f03c722a7..559bcf09c 100644
--- a/app/src/main/java/com/yizhuan/erban/MainActivity.java
+++ b/app/src/main/java/com/yizhuan/erban/MainActivity.java
@@ -23,6 +23,8 @@ import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentTransaction;
+import com.idlefish.flutterboost.FlutterBoost;
+import com.idlefish.flutterboost.containers.FlutterBoostFragment;
import com.netease.nim.uikit.StatusBarUtil;
import com.netease.nim.uikit.api.NimUIKit;
import com.netease.nim.uikit.api.model.contact.ContactEventListener;
@@ -60,6 +62,7 @@ import com.yizhuan.erban.community.publish.view.PublishActivity;
import com.yizhuan.erban.community.square.SquareFragment;
import com.yizhuan.erban.family.view.activity.FamilyHomeActivity;
import com.yizhuan.erban.home.fragment.ContactsListFragment;
+import com.yizhuan.erban.home.fragment.HomeFlutterFragment;
import com.yizhuan.erban.home.fragment.HomeFragment;
import com.yizhuan.erban.home.fragment.MeFragment;
import com.yizhuan.erban.home.presenter.MainPresenter;
@@ -238,9 +241,9 @@ public class MainActivity extends BaseMvpActivity
fragmentArray.put(MainTabLayout.MAIN_TAB_POS_MSG, new ContactsListFragment());
fragmentArray.put(MainTabLayout.MAIN_TAB_POS_SQUARE, new SquareFragment());
fragmentArray.put(MainTabLayout.MAIN_TAB_POS_ME, new MeFragment());
- fragmentArray.put(MainTabLayout.MAIN_TAB_POS_GAME, FlutterFragment
- .withCachedEngine("xplan_engine")
- .renderMode(RenderMode.texture)
+ fragmentArray.put(MainTabLayout.MAIN_TAB_POS_GAME, new FlutterBoostFragment
+ .CachedEngineFragmentBuilder(FlutterBoostFragment.class, FlutterBoost.ENGINE_ID)
+ .url("/")
.build());
}
diff --git a/app/src/main/java/com/yizhuan/erban/application/XChatApplication.java b/app/src/main/java/com/yizhuan/erban/application/XChatApplication.java
index f93d1fb45..4175f4d2a 100644
--- a/app/src/main/java/com/yizhuan/erban/application/XChatApplication.java
+++ b/app/src/main/java/com/yizhuan/erban/application/XChatApplication.java
@@ -5,6 +5,7 @@ import android.annotation.TargetApi;
import android.app.ActivityManager;
import android.app.Application;
import android.content.Context;
+import android.content.Intent;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.graphics.Color;
@@ -24,6 +25,9 @@ import com.baidu.mobstat.StatService;
import com.bumptech.glide.request.target.ViewTarget;
import com.coorchice.library.utils.LogUtils;
import com.huawei.hms.support.common.ActivityMgr;
+import com.idlefish.flutterboost.FlutterBoost;
+import com.idlefish.flutterboost.FlutterBoostDelegate;
+import com.idlefish.flutterboost.containers.FlutterBoostActivity;
import com.ishumei.smantifraud.SmAntiFraud;
import com.llew.huawei.verifier.LoadedApkHuaWei;
import com.microquation.linkedme.android.LinkedME;
@@ -104,9 +108,11 @@ import com.yizhuan.xchat_android_library.utils.config.BasicConfig;
import java.io.File;
import java.io.IOException;
+import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
+import io.flutter.embedding.android.FlutterActivityLaunchConfigs;
import io.flutter.embedding.engine.FlutterEngine;
import io.flutter.embedding.engine.FlutterEngineCache;
import io.flutter.embedding.engine.dart.DartExecutor;
@@ -251,13 +257,26 @@ public class XChatApplication extends Application {
}
dealHuaWeiCrash();
- FlutterEngine flutterEngine = new FlutterEngine(this);
- flutterEngine.getDartExecutor().executeDartEntrypoint(
- DartExecutor.DartEntrypoint.createDefault()
- );
- FlutterEngineCache
- .getInstance()
- .put("xplan_engine", flutterEngine);
+ FlutterBoost.instance().setup(this, new FlutterBoostDelegate() {
+
+ @Override
+ public void pushNativeRoute(String pageName, HashMap arguments) {
+
+ }
+
+ @Override
+ public void pushFlutterRoute(String pageName, String uniqueId, HashMap arguments) {
+ Intent intent = new FlutterBoostActivity.CachedEngineIntentBuilder(FlutterBoostActivity.class, FlutterBoost.ENGINE_ID)
+ .backgroundMode(FlutterActivityLaunchConfigs.BackgroundMode.opaque)
+ .destroyEngineWithActivity(false)
+ .url(pageName)
+ .urlParams(arguments)
+ .build(FlutterBoost.instance().currentActivity());
+ FlutterBoost.instance().currentActivity().startActivity(intent);
+ }
+ }, engine->{
+ engine.getPlugins();
+ } );
LogUtils.d("init time = " +(System.currentTimeMillis() - startTime) +"ms");
}
diff --git a/app/src/main/java/com/yizhuan/erban/home/fragment/HomeFlutterFragment.java b/app/src/main/java/com/yizhuan/erban/home/fragment/HomeFlutterFragment.java
new file mode 100644
index 000000000..1a88842af
--- /dev/null
+++ b/app/src/main/java/com/yizhuan/erban/home/fragment/HomeFlutterFragment.java
@@ -0,0 +1,31 @@
+package com.yizhuan.erban.home.fragment;
+
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import androidx.annotation.Nullable;
+
+import com.idlefish.flutterboost.containers.FlutterBoostFragment;
+
+public class HomeFlutterFragment extends FlutterBoostFragment {
+
+ private String uniqueId;
+
+ @Nullable
+ @Override
+ public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
+ return super.onCreateView(inflater, container, savedInstanceState);
+ }
+
+ @Override
+ public void onResume() {
+ super.onResume();
+ }
+
+ @Override
+ public void onHiddenChanged(boolean hidden) {
+ super.onHiddenChanged(hidden);
+ }
+}
diff --git a/app/src/main/java/com/yizhuan/erban/ui/setting/LabActivity.java b/app/src/main/java/com/yizhuan/erban/ui/setting/LabActivity.java
index 7366ddd98..9daadd229 100644
--- a/app/src/main/java/com/yizhuan/erban/ui/setting/LabActivity.java
+++ b/app/src/main/java/com/yizhuan/erban/ui/setting/LabActivity.java
@@ -5,6 +5,7 @@ import android.view.View;
import android.widget.RadioButton;
import android.widget.RadioGroup;
+import com.idlefish.flutterboost.FlutterBoost;
import com.yizhuan.erban.R;
import com.yizhuan.erban.base.BaseActivity;
import com.yizhuan.erban.ui.webview.CommonWebViewActivity;
@@ -33,7 +34,7 @@ public class LabActivity extends BaseActivity {
findViewById(R.id.rb_h5_test).setOnClickListener(v -> CommonWebViewActivity.start(context, "http://192.168.10.7:5503/"));
//vue测试地址
findViewById(R.id.rb_vue_test).setOnClickListener(v -> CommonWebViewActivity.start(context, "http://192.168.10.7:8080/"));
- findViewById(R.id.rb_flutter_test).setOnClickListener(v -> startActivity(FlutterActivity.withCachedEngine("xplan_engine").build(context)));
+ findViewById(R.id.rb_flutter_test).setOnClickListener(v -> FlutterBoost.instance().open("/", null));
int enviroment = CommonPref.instance(BasicConfig.INSTANCE.getAppContext()).getInt(Env.KEY_ENVIRONMENT);
//根据ID找到RadioGroup实例
RadioGroup group = (RadioGroup) this.findViewById(R.id.radioGroup);
diff --git a/app/src/main/res/drawable/bg_flutter_splash.xml b/app/src/main/res/drawable/bg_flutter_splash.xml
new file mode 100644
index 000000000..b96af5cbf
--- /dev/null
+++ b/app/src/main/res/drawable/bg_flutter_splash.xml
@@ -0,0 +1,6 @@
+
+
+
+
diff --git a/settings.gradle b/settings.gradle
index eab46f086..bc2b9bc54 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -3,8 +3,6 @@ include ':core'
include ':library'
include ':nim_uikit'
// 添加 flutter module 依赖
-setBinding(new Binding([gradle: this]))// new
-evaluate(new File( // new
- settingsDir.parentFile, // new
- 'accompany-android/xplan-flutter/.android/include_flutter.groovy' // new
-))
\ No newline at end of file
+setBinding(new Binding([gradle: this]))
+evaluate(new File(settingsDir.parentFile,
+ 'accompany-android/xplan-flutter/.android/include_flutter.groovy'))
\ No newline at end of file
diff --git a/xplan-flutter b/xplan-flutter
index 56db6f3e6..a9508182c 160000
--- a/xplan-flutter
+++ b/xplan-flutter
@@ -1 +1 @@
-Subproject commit 56db6f3e626936904e3d6c8a3c867bcd38fe2403
+Subproject commit a9508182ce1041a20614b54eaf96c9b9ddffd8b3