Flutter学习(2)-原生Android通过aar方式集成Flutter

生成aar包:

app/build.gradle中的apply plugin: ‘com.android.application'
改为apply plugin: ‘com.android.library',
同时注释掉 applicationId "com.he.flutter_app",
并且将清单文件修改为:


执行命令:

cd android 
./gradlew assembleRelease

生成的aar路径:

flutter_app/build/app/outputs/aar/app-release.aar 

上述打包成功的aar就可以作为普通的aar集成到Android项目中了

1、拷贝aar到现有android项目中,拷贝到libs目录下
2、配置build.gradle

repositories {
    flatDir { dirs 'libs' }
}

dependencies {
    compile(name: 'app-release', ext: 'aar')
}

3、展示Flutter界面
其实就是模仿新建的flutter项目,在application中初始化

FlutterMain.startInitialization(this);

然后新建一个Activity继承FlutterActivity

public class FlutterMainActivity extends FlutterActivity {

//跳转该页面的时候可以传要跳转的页面,参数名固定为route
    private static final String ROUTE_PAGE = "route";

    public static Intent makeIntent(Context context, String routePage) {
        if (routePage == null || routePage.equals("")) {
            routePage = "/";
        }
        Intent intent = new Intent(context, FlutterMainActivity.class);
        intent.setAction(Intent.ACTION_RUN);
        intent.putExtra(ROUTE_PAGE, routePage);
        return intent;
    }
 
    public void onCreate(@Nullable Bundle savedInstanceState) {
          //或者在这里初始化Flutter
          //FlutterMain.startInitialization(this);
        super.onCreate(savedInstanceState);
        GeneratedPluginRegistrant.registerWith(this);
    }
}

然后就能展示Flutter void main() => runApp(new MyApp());这句话对应的界面了。
可以看到我们还有传参,那么这个参数就可以在flutter里面接收到,我们可以根据这个参数的值来跳转对应的界面。

void main() => runApp(_widgetForRoute(window.defaultRouteName));

Widget _widgetForRoute(String route) {
  switch (route) {
    case 'route1':
      return SomeWidget(...);
    case 'route2':
      return SomeOtherWidget(...);
    default:
      return Center(
        child: Text('Unknown route: $route', textDirection: TextDirection.ltr),
      );
  }
}

参考文章:https://blog.csdn.net/qq_33666539/article/details/85340704

你可能感兴趣的:(Flutter学习(2)-原生Android通过aar方式集成Flutter)