返回

如何将 Flutter 模块作为依赖添加到现有的原生 Android 项目中?

Android

前言

Flutter 是一种跨平台开发框架,可以帮助开发人员使用单一代码库构建高性能的移动应用。Flutter 可以与原生的 Android 和 iOS 代码混合开发,这使得开发人员可以充分利用现有代码库,快速构建跨平台应用。

编译 Flutter aar

在 Android 中,我们可以通过 As 工具来编译 aar,具体步骤如下:

  1. 打开 Android Studio,选择 Build > Flutter > Build AAR
  2. 在弹出的对话框中,选择 Flutter 模块的根目录。
  3. 点击 OK 按钮开始编译。

编译完成后,会在 Flutter 模块的根目录下生成一个 aar 文件,该文件可以作为依赖添加到现有的原生 Android 项目中。

将 Flutter 模块添加到原生 Android 项目

  1. 打开 Android Studio,打开现有的原生 Android 项目。
  2. 在项目根目录下的 settings.gradle 文件中添加以下内容:
include ':flutter'
  1. 在项目的 build.gradle 文件中添加以下内容:
dependencies {
    implementation project(':flutter')
}
  1. 在项目的 AndroidManifest.xml 文件中添加以下内容:
<application>
    <!-- Flutter部分 -->
    <meta-data android:name="flutterEmbedding" android:value="2" />
    <activity
        android:name="com.example.myapp.MainActivity"
        android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
        android:hardwareAccelerated="true"
        android:label="@string/app_name"
        android:theme="@style/AppTheme">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <!-- 原生部分 -->
    <!-- ... -->
</application>
  1. 在项目的 MainActivity.java 文件中添加以下内容:
import io.flutter.embedding.android.FlutterActivity;
import io.flutter.embedding.engine.FlutterEngine;
import io.flutter.embedding.engine.FlutterEngineCache;
import io.flutter.embedding.engine.dart.DartExecutor;

public class MainActivity extends FlutterActivity {

    @Override
    public FlutterEngine provideFlutterEngine(Context context) {
        FlutterEngine flutterEngine = FlutterEngineCache.getInstance().get("my_engine");
        if (flutterEngine == null) {
            flutterEngine = new FlutterEngine(context);
            // 启动 Dart 代码
            flutterEngine.getDartExecutor().executeDartEntrypoint(DartExecutor.DartEntrypoint.createDefault());
            // 将 Flutter 引擎缓存起来
            FlutterEngineCache.getInstance().put("my_engine", flutterEngine);
        }
        return flutterEngine;
    }
}

运行项目

将上述步骤完成后,就可以运行项目了。在 Android Studio 中,点击 Run 按钮即可运行项目。

结语

通过上述步骤,我们就可以将 Flutter 模块作为依赖添加到现有的原生 Android 项目中。这种方法相较于直接集成 Flutter SDK 更为解耦,尤其是针对现有项目改造成本更小。