• flutter产物以aar形式嵌入android原生工程


    以前做的项目中,flutter都是作为module嵌入原生工程中,新公司项目却是以aar形式嵌入android工程,这种优点是原生工程不必配置flutter环境也能跑了,这里记录一下简单步骤。

    创建一个flutter module

    通过android studio创建一个flutter module,注意不要创建成flutter工程了,因为工程没法打包成aar。
    在这里插入图片描述
    创建完成后,编写代码,然后在终端输入命令

    flutter build aar
    
    • 1

    编译完成,可以看到输出

     Built build/host/outputs/repo.
    
    • 1

    产物就在我们项目的build目录中
    在这里插入图片描述
    终端还有其他一些比较重要的输出,一起复制上来

    Consuming the Module
      1. Open <host>/app/build.gradle
      2. Ensure you have the repositories configured, otherwise add them:
    
          String storageUrl = System.env.FLUTTER_STORAGE_BASE_URL ?: "https://storage.googleapis.com"
          repositories {
            maven {
                url '/Users/yy/AndroidStudioProjects/flutter_module1/build/host/outputs/repo'
            }
            maven {
                url "$storageUrl/download.flutter.io"
            }
          }
    
      3. Make the host app depend on the Flutter module:
    
        dependencies {
          debugImplementation 'com.ali.flutter_module1:flutter_debug:1.0'
          profileImplementation 'com.ali.flutter_module1:flutter_profile:1.0'
          releaseImplementation 'com.ali.flutter_module1:flutter_release:1.0'
        }
    
    
      4. Add the `profile` build type:
    
        android {
          buildTypes {
            profile {
              initWith debug
            }
          }
        }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33

    其实这就是官方告诉我们如何将flutter产物嵌入原生工程中,这里先创建一个原生工程,然后打开app/build.gradle,添加上

        repositories {
            maven {
    //            这里是配置flutter产物位置
                url '/Users/yy/AndroidStudioProjects/flutter_module1/build/host/outputs/repo'
            }
            maven {
    //            这里配置flutter下载地址,gradle自己去下载flutter引擎和源码
                url 'http://download.flutter.io'
            }
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    在较新的gradle版本中,会要求将上面的maven 配置到settings.gradle文件中。

    pluginManagement {
        repositories {
            google()
            mavenCentral()
            gradlePluginPortal()
        }
    }
    dependencyResolutionManagement {
        repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
        repositories {
            google()
            mavenCentral()
            maven {
                url '/Users/yy/Downloads/test/so/flutter_module/build/host/outputs/repo'
            }
            maven {
                url "https://storage.googleapis.com/download.flutter.io"
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    上面的产物可以将repo目录复制到我们android工程中,上面我没有复制就直接用了。
    接着配置依赖

        dependencies {
          debugImplementation 'com.ali.flutter_module1:flutter_debug:1.0'
          profileImplementation 'com.ali.flutter_module1:flutter_profile:1.0'
          releaseImplementation 'com.ali.flutter_module1:flutter_release:1.0'
        }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    根据上面输出中的步骤,继续添加profile build type

        android {
          buildTypes {
            profile {
              initWith debug
            }
          }
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    点击build项目,就会自动去下载flutter引擎,源码了,编译完成,我们创建一个activity来测试一下

    public class FlutterDemoActivity extends FlutterActivity {
        @Override
        public void onCreate(@Nullable Bundle savedInstanceState, @Nullable PersistableBundle persistentState) {
            super.onCreate(savedInstanceState, persistentState);
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    启动这个页面,就可以看到flutter页面了。

    如果我们的flutter工程中引入了第三方项目,我们还可以借助fat-aar来打包项目,它可以将flutterEngine等一起打包进去,具体使用可以看官方文档。aar这种方式也是可以调试的,将flutter项目attach到正在运行的应用上就可以了。

  • 相关阅读:
    最新豆瓣top250爬虫案例代码分析[注释齐全]
    CFCA企业版通配符SSL证书
    LRU缓存替换策略及C#实现
    ElasticSearch ( 一 ) 安装启动
    python处理 json, pt, csv, npy文件 -- 打开与保存
    [Linux入门]---搭建Linux环境
    伊朗相关的OilRig组织在为期8个月的网络攻击中针对中东政府
    SkeyeVSS视频安防综合管理系统助力智慧楼宇解决方案
    ROS OpenCV 级联分类器
    猿创征文 |【算法面试入门必刷】动态规划-线性dp(三)
  • 原文地址:https://blog.csdn.net/qq_41818873/article/details/132913116