.android工程疑问

来源:11-4 Flutter Android混合开发实战-调试与发布【Android技术与Flutter融合】

小豆子__

2023-11-08

请问flutter_module中的.android工程和flutter_module同目录下的Android工程有什么区别?还有flutter_module是如何打包进运行的apk中的呢?

写回答

1回答

CrazyCodeBoy

2023-11-09

对于Flutter模块中的.android目录和同级目录下的原生Android模块,主要有以下几点区别:

1. .android目录是Flutter模块编译生成的,包含了Dart代码编译到Java和Native代码后的结果,是Flutter模块能够在Android上运行所必须的。同级的原生Android模块是开发者自己编写的Java/Kotlin代码。

2. .android目录包含了Flutter编译好的Library,这个Library封装了Dart编译后的代码并提供了Java接口,可以被宿主Android App调用。原生模块需要自行封装提供接口给Flutter模块调用。

3. .android目录包含了Flutter引擎所需要的一些资源和配置,例如Flutter的icudtl.dat文件。原生模块不包含这些Flutter特有的资源。

4. .android目录包含了Flutter定义的AndroidManifest.xml配置。原生模块有自己的AndroidManifest.xml。

5. .android目录包含了编译Flutter模块所生成的R文件、BuildConfig等文件。原生模块有自己独立的这些文件。

综上,.android目录为Flutter提供了在Android上运行所必须的Java和Native接口、资源文件等。而原生模块是独立的Android Library。

关于Flutter模块如何打包到APK中,主要步骤是:

1. 使用Android Studio编译Flutter模块,生成.android目录。

2. 在app module的build.gradle中依赖Flutter模块的.android目录。

3. 将Flutter模块的资源文件复制到app module的资源目录。

4. 合并Flutter模块的AndroidManifest.xml到app module中。

5. 最后构建生成的APK包中会包含Flutter模块编译后的代码和资源,所以可以运行Dart写的页面和逻辑。

这样Flutter模块就与原生Android代码打包在了一个APK中,运行时二者可以相互调用接口实现交互。
0
0

Flutter从入门到进阶 实战携程网App 一网打尽核心技术

解锁Flutter开发新姿势,,系统掌握Flutter开发核心技术。

4788 学习 · 3270 问题

查看课程