返回
如何将 Flutter 模块作为依赖添加到现有的原生 Android 项目中?
Android
2023-12-18 00:37:52
前言
Flutter 是一种跨平台开发框架,可以帮助开发人员使用单一代码库构建高性能的移动应用。Flutter 可以与原生的 Android 和 iOS 代码混合开发,这使得开发人员可以充分利用现有代码库,快速构建跨平台应用。
编译 Flutter aar
在 Android 中,我们可以通过 As 工具来编译 aar,具体步骤如下:
- 打开 Android Studio,选择 Build > Flutter > Build AAR 。
- 在弹出的对话框中,选择 Flutter 模块的根目录。
- 点击 OK 按钮开始编译。
编译完成后,会在 Flutter 模块的根目录下生成一个 aar 文件,该文件可以作为依赖添加到现有的原生 Android 项目中。
将 Flutter 模块添加到原生 Android 项目
- 打开 Android Studio,打开现有的原生 Android 项目。
- 在项目根目录下的 settings.gradle 文件中添加以下内容:
include ':flutter'
- 在项目的 build.gradle 文件中添加以下内容:
dependencies {
implementation project(':flutter')
}
- 在项目的 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>
- 在项目的 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 更为解耦,尤其是针对现有项目改造成本更小。