美文网首页
添加Flutter module到现有Android项目

添加Flutter module到现有Android项目

作者: _compass | 来源:发表于2019-07-15 18:22 被阅读0次

1.创建flutter module项目
在现有的Android项目同级别下创建flutter module:

flutter create -t module ftnkit
目录展示

注意,我上篇文章在iOS项目创建的时候,已经创建过了此模块,因此上面这一步无需再创建。

2.进入flutter的模块文件夹下,编译aar:

cd .android
./gradlew flutter:assembleDebug

3.编译之后,在原项目的settings.gradle中添加如下依赖:

include ':app'
setBinding(new Binding([gradle: this]))                                 
evaluate(new File(                                                      
        settingsDir.parentFile,                                         
        '../Demo/ftnkit/.android/include_flutter.groovy'                
))

因为我的ftnkit的父文件夹是Demo,因此上面这样写。

4.在主模块app的build.gradle中添加依赖:

    implementation project(':flutter')

此时就可以了,但是我这里报错:

Error:com.android.builder.dexing.DexArchiveBuilderException

查了一下是因为未指定JDK版本,因此在app build.gradle android节点下中添加如下内容:

    compileOptions {
        sourceCompatibility 1.8
        targetCompatibility 1.8
    }

这时运行正确了。

5.在工程里新建一个FlutterActivity:

public class FlutterActivity extends AppCompatActivity {
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        FlutterView flutterView = Flutter.createView(this, getLifecycle(), "rout1");
        setContentView(flutterView);
    }
}

可以当点击页面上某个按钮时,弹出本Flutter页面:

 TextView ivFlutter = findViewById(R.id.tvflutter);
        ivFlutter.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(MainActivity.this, FlutterActivity.class);
                startActivity(intent);
            }
        });

6.hot reload与调试
attach device:

cd ftnkit
flutter attach

便可以进行hot reload了。


image.png

运行app之后,点击文本,如下结果显示:


结果

以上。

相关文章

网友评论

      本文标题:添加Flutter module到现有Android项目

      本文链接:https://www.haomeiwen.com/subject/ollokctx.html