引入flutter_boost路由
This commit is contained in:
@@ -291,6 +291,7 @@ dependencies {
|
|||||||
implementation fileTree(dir: 'libs', include: ['oppo-mcssdk-2.0.2.jar'])
|
implementation fileTree(dir: 'libs', include: ['oppo-mcssdk-2.0.2.jar'])
|
||||||
// xplan flutter module
|
// xplan flutter module
|
||||||
implementation project(path: ':flutter')
|
implementation project(path: ':flutter')
|
||||||
|
implementation project(path: ':flutter_boost')
|
||||||
}
|
}
|
||||||
|
|
||||||
repositories {
|
repositories {
|
||||||
|
@@ -1271,10 +1271,17 @@
|
|||||||
tools:remove="android:screenOrientation" />
|
tools:remove="android:screenOrientation" />
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name="io.flutter.embedding.android.FlutterActivity"
|
android:name="com.idlefish.flutterboost.containers.FlutterBoostActivity"
|
||||||
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
|
android:theme="@style/Theme.AppCompat"
|
||||||
|
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|layoutDirection|fontScale|screenLayout|density"
|
||||||
android:hardwareAccelerated="true"
|
android:hardwareAccelerated="true"
|
||||||
android:windowSoftInputMode="adjustResize" />
|
android:windowSoftInputMode="adjustResize" >
|
||||||
|
<meta-data android:name="io.flutter.embedding.android.SplashScreenDrawable" android:resource="@drawable/bg_flutter_splash"/>
|
||||||
|
|
||||||
|
</activity>
|
||||||
|
<meta-data android:name="flutterEmbedding"
|
||||||
|
android:value="2">
|
||||||
|
</meta-data>
|
||||||
|
|
||||||
</application>
|
</application>
|
||||||
|
|
||||||
|
@@ -23,6 +23,8 @@ import androidx.annotation.Nullable;
|
|||||||
import androidx.fragment.app.Fragment;
|
import androidx.fragment.app.Fragment;
|
||||||
import androidx.fragment.app.FragmentTransaction;
|
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.StatusBarUtil;
|
||||||
import com.netease.nim.uikit.api.NimUIKit;
|
import com.netease.nim.uikit.api.NimUIKit;
|
||||||
import com.netease.nim.uikit.api.model.contact.ContactEventListener;
|
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.community.square.SquareFragment;
|
||||||
import com.yizhuan.erban.family.view.activity.FamilyHomeActivity;
|
import com.yizhuan.erban.family.view.activity.FamilyHomeActivity;
|
||||||
import com.yizhuan.erban.home.fragment.ContactsListFragment;
|
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.HomeFragment;
|
||||||
import com.yizhuan.erban.home.fragment.MeFragment;
|
import com.yizhuan.erban.home.fragment.MeFragment;
|
||||||
import com.yizhuan.erban.home.presenter.MainPresenter;
|
import com.yizhuan.erban.home.presenter.MainPresenter;
|
||||||
@@ -238,9 +241,9 @@ public class MainActivity extends BaseMvpActivity<IMainView, MainPresenter>
|
|||||||
fragmentArray.put(MainTabLayout.MAIN_TAB_POS_MSG, new ContactsListFragment());
|
fragmentArray.put(MainTabLayout.MAIN_TAB_POS_MSG, new ContactsListFragment());
|
||||||
fragmentArray.put(MainTabLayout.MAIN_TAB_POS_SQUARE, new SquareFragment());
|
fragmentArray.put(MainTabLayout.MAIN_TAB_POS_SQUARE, new SquareFragment());
|
||||||
fragmentArray.put(MainTabLayout.MAIN_TAB_POS_ME, new MeFragment());
|
fragmentArray.put(MainTabLayout.MAIN_TAB_POS_ME, new MeFragment());
|
||||||
fragmentArray.put(MainTabLayout.MAIN_TAB_POS_GAME, FlutterFragment
|
fragmentArray.put(MainTabLayout.MAIN_TAB_POS_GAME, new FlutterBoostFragment
|
||||||
.withCachedEngine("xplan_engine")
|
.CachedEngineFragmentBuilder(FlutterBoostFragment.class, FlutterBoost.ENGINE_ID)
|
||||||
.renderMode(RenderMode.texture)
|
.url("/")
|
||||||
.build());
|
.build());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -5,6 +5,7 @@ import android.annotation.TargetApi;
|
|||||||
import android.app.ActivityManager;
|
import android.app.ActivityManager;
|
||||||
import android.app.Application;
|
import android.app.Application;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.content.Intent;
|
||||||
import android.content.pm.ApplicationInfo;
|
import android.content.pm.ApplicationInfo;
|
||||||
import android.content.pm.PackageManager;
|
import android.content.pm.PackageManager;
|
||||||
import android.graphics.Color;
|
import android.graphics.Color;
|
||||||
@@ -24,6 +25,9 @@ import com.baidu.mobstat.StatService;
|
|||||||
import com.bumptech.glide.request.target.ViewTarget;
|
import com.bumptech.glide.request.target.ViewTarget;
|
||||||
import com.coorchice.library.utils.LogUtils;
|
import com.coorchice.library.utils.LogUtils;
|
||||||
import com.huawei.hms.support.common.ActivityMgr;
|
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.ishumei.smantifraud.SmAntiFraud;
|
||||||
import com.llew.huawei.verifier.LoadedApkHuaWei;
|
import com.llew.huawei.verifier.LoadedApkHuaWei;
|
||||||
import com.microquation.linkedme.android.LinkedME;
|
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.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
|
import io.flutter.embedding.android.FlutterActivityLaunchConfigs;
|
||||||
import io.flutter.embedding.engine.FlutterEngine;
|
import io.flutter.embedding.engine.FlutterEngine;
|
||||||
import io.flutter.embedding.engine.FlutterEngineCache;
|
import io.flutter.embedding.engine.FlutterEngineCache;
|
||||||
import io.flutter.embedding.engine.dart.DartExecutor;
|
import io.flutter.embedding.engine.dart.DartExecutor;
|
||||||
@@ -251,13 +257,26 @@ public class XChatApplication extends Application {
|
|||||||
}
|
}
|
||||||
dealHuaWeiCrash();
|
dealHuaWeiCrash();
|
||||||
|
|
||||||
FlutterEngine flutterEngine = new FlutterEngine(this);
|
FlutterBoost.instance().setup(this, new FlutterBoostDelegate() {
|
||||||
flutterEngine.getDartExecutor().executeDartEntrypoint(
|
|
||||||
DartExecutor.DartEntrypoint.createDefault()
|
@Override
|
||||||
);
|
public void pushNativeRoute(String pageName, HashMap<String, String> arguments) {
|
||||||
FlutterEngineCache
|
|
||||||
.getInstance()
|
}
|
||||||
.put("xplan_engine", flutterEngine);
|
|
||||||
|
@Override
|
||||||
|
public void pushFlutterRoute(String pageName, String uniqueId, HashMap<String, String> 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");
|
LogUtils.d("init time = " +(System.currentTimeMillis() - startTime) +"ms");
|
||||||
}
|
}
|
||||||
|
@@ -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);
|
||||||
|
}
|
||||||
|
}
|
@@ -5,6 +5,7 @@ import android.view.View;
|
|||||||
import android.widget.RadioButton;
|
import android.widget.RadioButton;
|
||||||
import android.widget.RadioGroup;
|
import android.widget.RadioGroup;
|
||||||
|
|
||||||
|
import com.idlefish.flutterboost.FlutterBoost;
|
||||||
import com.yizhuan.erban.R;
|
import com.yizhuan.erban.R;
|
||||||
import com.yizhuan.erban.base.BaseActivity;
|
import com.yizhuan.erban.base.BaseActivity;
|
||||||
import com.yizhuan.erban.ui.webview.CommonWebViewActivity;
|
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/"));
|
findViewById(R.id.rb_h5_test).setOnClickListener(v -> CommonWebViewActivity.start(context, "http://192.168.10.7:5503/"));
|
||||||
//vue测试地址
|
//vue测试地址
|
||||||
findViewById(R.id.rb_vue_test).setOnClickListener(v -> CommonWebViewActivity.start(context, "http://192.168.10.7:8080/"));
|
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);
|
int enviroment = CommonPref.instance(BasicConfig.INSTANCE.getAppContext()).getInt(Env.KEY_ENVIRONMENT);
|
||||||
//根据ID找到RadioGroup实例
|
//根据ID找到RadioGroup实例
|
||||||
RadioGroup group = (RadioGroup) this.findViewById(R.id.radioGroup);
|
RadioGroup group = (RadioGroup) this.findViewById(R.id.radioGroup);
|
||||||
|
6
app/src/main/res/drawable/bg_flutter_splash.xml
Normal file
6
app/src/main/res/drawable/bg_flutter_splash.xml
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<item
|
||||||
|
android:drawable="@color/color_1c1b22"
|
||||||
|
android:gravity="fill" />
|
||||||
|
</layer-list>
|
@@ -3,8 +3,6 @@ include ':core'
|
|||||||
include ':library'
|
include ':library'
|
||||||
include ':nim_uikit'
|
include ':nim_uikit'
|
||||||
// 添加 flutter module 依赖
|
// 添加 flutter module 依赖
|
||||||
setBinding(new Binding([gradle: this]))// new
|
setBinding(new Binding([gradle: this]))
|
||||||
evaluate(new File( // new
|
evaluate(new File(settingsDir.parentFile,
|
||||||
settingsDir.parentFile, // new
|
'accompany-android/xplan-flutter/.android/include_flutter.groovy'))
|
||||||
'accompany-android/xplan-flutter/.android/include_flutter.groovy' // new
|
|
||||||
))
|
|
Submodule xplan-flutter updated: 56db6f3e62...a9508182ce
Reference in New Issue
Block a user