Flutter- 视频系列 -- 图解 -Android- 原生集成 -Flutter-Module
implementation project(':flutter')
3.2?AndroidStudio?工具引入
可采用?Flie -> Sync Project with Grdle Files?时,可通过?Import Flutter Module?方式引入;此时若报?The Gradle files could not be updated automatically?则需要手动?3.1?操作;
4. 原生与 Flutter 交互
Android?引用?Flutter?通常是两种,一种是新建一个?View?用来展示?Flutter?页面,另一种是?Fragment;其本质还是将?Flutter View?作为?Android View?的子?View?展示;
新建一个无标题栏的?FlutterActivity?和一个?FlutterFragment,在?MainActivity?添加一个按钮跳转到?FlutterActivity?展示?FlutterFragment;
public class FlutterActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_flutter);
getSupportFragmentManager().beginTransaction().replace(R.id.container, new FlutterFragment()).commit();}}
public class FlutterFragment extends Fragment {@Nullable@Overridepublic View onCreateView(@NonNull LayoutInflater inflater,@Nullable ViewGroup container,@Nullable Bundle savedInstanceState) {View rootView = inflater.inflate(R.layout.fragment_main, container, false);getActivity().getSupportFragmentManager().beginTransaction().add(R.id.container, Flutter.createFragment("/")).addToBackStack("flFlutter.createFragmentutter").commit();
return rootView;}}
通过?Flutter.createFragment("/")?设置跳转路由;
5. 签名打包
直接运行?debuge?模式一切正常,只是在跳转?Flutter?时不如直接跳转原生流畅,后期优化;而打包成?release?包与?Android?原生相同,无需特别处理?Flutter Module;
注意事项
1. minSdkVersion >= 16
在集成过程中,使用?Flutter?时会提示?SDK?最低版本在?16?以上,需注意;
2. Flutter Module 路径
在学习过程中,无论是命令行创建还是?AndroidStudio?工具创建?Flutter Module?路径并非一定要与?Android Project?同级,关键是?setting.gradle?路径配置;
new File?文件第一个参数?settingsDir.parentFile?即?Android Project?所在文件路径,第二个参数为?Flutter Module?中?.groovy?路径;我们可以使用只有一个参数的完整路径;
// 两个参数 evaluate(new File(settingsDir.parentFile,'my_flutter/.android/include_flutter.groovy'))
// 一个参数 evaluate(new File('/Users/user/Documents/workspace/ACE_Flutter/flutter_module01/flutter_module01/.android/include_flutter.groovy'))
3. 新的 evalute 会覆盖上一个
测试是,在?setting.gradle?中引入多个?evalue,以为可以同时引入多个?Flutter Module,而实际是后面的引入会覆盖先前的引入,以最后一个?evalue module?为准;
最后
最后我想说:对于程序员来说,要学习的知识内容、技术有太多太多,要想不被环境淘汰就只有不断提升自己,从来都是我们去适应环境,而不是环境来适应我们!
评论