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

news2024/9/24 17:53:51

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

创建一个flutter module

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

flutter build aar

编译完成,可以看到输出

 Built build/host/outputs/repo.

产物就在我们项目的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
        }
      }
    }

其实这就是官方告诉我们如何将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'
        }
    }

上面的产物可以将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'
    }

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

    android {
      buildTypes {
        profile {
          initWith debug
        }
      }
    }

上面所有的配置都是在app/build.gradle这个目录中。
build项目,就会自动去下载flutter引擎,源码了,编译完成,我们创建一个activity来测试一下

public class FlutterDemoActivity extends FlutterActivity {
    @Override
    public void onCreate(@Nullable Bundle savedInstanceState, @Nullable PersistableBundle persistentState) {
        super.onCreate(savedInstanceState, persistentState);
    }
}

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1014119.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

verdi dump状态机的波形时直接显示状态名

前段时间看到别人用verdi看状态机的波形时&#xff0c;可以显示定义的状态参数&#xff0c;觉得很有意思&#xff0c;特地学习了一下 通常拉出状态机信号的波形是下面这样的 这种信号&#xff0c;我们要想知道每个数值代表的状态&#xff0c;还需要跟定义的parameter比对 像这…

LeetCode(力扣)763. 划分字母区间Python

LeetCode763. 划分字母区间 题目链接代码 题目链接 https://leetcode.cn/problems/partition-labels/description/ 代码 class Solution:def partitionLabels(self, s: str) -> List[int]:last_occ {}for i, ch in enumerate(s):last_occ[ch] iresult []start 0end …

PolyAI:对话式AI代替传统客服

【产品介绍】 名称 PolyAI 具体描述 PolyAI 是一家总部位于伦敦的人工智能初创公司&#xff0c;致力于开发对话式人工智能的机器学**台&#xff0c; 在 B 轮融资中筹集了 4000 万美元&#xff0c;用于部署对话式人工智能代理并颠覆传统的客户…

下载安装nvm教程(附带下载切换node.js版本实操)

目录 一、介绍 二、下载 三、安装步骤 四、配置淘宝源 五、测试 六、常用的nvm命令 七、下载切换node版本实操 node版本参考 一、介绍 node版本管理&#xff1a;nvm就是可以切换你的node版本&#xff0c;特别是当node版本过高或者过低时候&#xff0c;就可以用nvm进行…

鼠标拖拽拖动盒子时,与盒子内某些点击事件冲突问题解决

目录 问题解决思路解决代码&#xff08;标注【主要代码】的为重点&#xff09; 问题 拖动该悬浮球时&#xff0c;鼠标弹起可能会触发悬浮球内事件 解决思路 鼠标拖动盒子时&#xff0c;将 isMove 设为 true 意为正在拖动盒子&#xff0c;此时将 class"btns_move" 遮…

音乐项目后台管理系统出现的问题

1.当对歌手的歌曲进行编辑时候&#xff0c;会把所有的歌曲信息给修改了。 解决方法:修改controller层的中SongController代码中的这一行代码 boolean flag songService.updateById(song); 2.添加歌曲&#xff0c;在弹出框中输入&#xff0c;没有显示。原因&#xff1a;前端页…

HTML显示中文空格字符,emsp;一个中文字符,ensp;半个中文字符

&emsp;一个中文字符 &ensp;半个中文字符 <ul><li class"li">姓&emsp;&emsp;名&#xff1a;<input type"text" /></li><li class"li">手&ensp;机&ensp;号&#xff1a;<input type"…

SCRUM产品负责人(CSPO)认证培训课程

课程简介 Scrum是目前运用最为广泛的敏捷开发方法&#xff0c;是一个轻量级的项目管理和产品研发管理框架。产品负责人是Scrum的三个角色之一&#xff0c;产品负责人在Scrum产品开发当中扮演舵手的角色&#xff0c;他决定产品的愿景、路线图以及投资回报&#xff0c;他需要回答…

学信息系统项目管理师第4版系列07_项目管理知识体系

1. 项目管理原则 1.1. 勤勉、尊重和关心他人 1.1.1. 关键点 1.1.1.1. 关注组织内部和外部的职责 1.1.1.2. 坚持诚信、关心、可信、合规原则 1.1.1.3. 秉持整体观 1.1.2. 职责 1.1.2.1. 诚信 1.1.2.2. 关心 1.1.2.3. 可信 1.1.2.4. 合规 1.2. 营造协作的项目管理团队…

2019版本idea启动tomcat8.5版本控制台中文乱码

目录 一&#xff0c;检查tomcat安装 二&#xff0c;检查idea配置 前言: 最近使用idea去启动tomcat8.5版本时&#xff0c;控制台语句出现了乱码情况&#xff0c;最终解决了。 情况如下&#xff1a; 一&#xff0c;检查tomcat安装 第一步&#xff1a;检查安装的tomcat找到tomca…

#循循渐进学51单片机#如何学习单片机#not.1

1、了解普通发光二极管的参数&#xff0c;掌握限流电阻的计算方法。 1&#xff09; LED小灯靠电流点亮&#xff0c;电压1.8v~2.2v&#xff0c;电流是1~20ma&#xff0c;在1~5ma亮度有所变化&#xff0c;5MA以上亮度不变。 2&#xff09; 限流电阻的算法一般采用欧姆定律计算。…

C#生产管理进销存系统asp.net+sqlserver

管理员功能&#xff1a; 1&#xff09;系统用户管理 包括管理员的添加、删除和管理员密码修改。 2&#xff09;员工信息管理 包括员工信息、员工工资的添加、查询、修改和删除。 3&#xff09;客户信息管理 包括客户信息的添加、查询、修改和删除&#xff0c;以及客户生日提醒。…

IDM(Internet Download Manager)下载器2024最新版本如何下载?

IDM&#xff08;Internet Download Manager&#xff09;下载器能够兼容支持多种浏览器进行文件下载&#xff0c;很多时候只要复制一个地址IDM的下载弹窗就自动弹出来&#xff0c;有时候不需要下载的时候也会弹&#xff0c;时间久了就会感觉很烦&#xff0c;不过这个问题其实可以…

C#,数值计算——Hashfn1的计算方法与源程序

1 文本格式 using System; using System.Collections; using System.Collections.Generic; namespace Legalsoft.Truffer { public class Hashfn1 { private Ranhash hasher { get; set; } new Ranhash(); private int n { get; set; } public Hash…

【校招VIP】java语言考点之并发相关

考点介绍&#xff1a; 并发在操作系统中是指一个时间段中有几个程序都处于已启动运行到运行完毕之间&#xff0c;且这几个程序都是在同一个处理机上运行&#xff0c;但任一个时刻点上只有一个程序在处理机上运行。并发相关问题在校招面试中出现频次很高。 java语言考点之并发相…

AOSP源码中Android.mk文件中的反斜杠符号(\)的作用和使用

简介 在AOSP&#xff08;Android Open Source Project&#xff09;源码中的Android.mk文件中&#xff0c;反斜杠符号&#xff08;\&#xff09;的主要作用是将一行代码拆分成多行&#xff0c;以提高可读性并帮助组织较长的代码块。这对于定义复杂的构建规则和变量时特别有用。…

笔记1.3 数据交换

如何实现数据通过网络核心从源主机到达目的主机&#xff1f; 数据交换 交换网络&#xff1a; 动态转接动态分配传输资源 数据交换类型&#xff1a; &#xff08;1&#xff09;电路交换 &#xff08;2&#xff09;报文交换 &#xff08;3&#xff09;分组交换 电路交换的特…

长胜证券:怎么跟随主力进出?

跟着现在商场的快速改变和信息的普及化&#xff0c;人们在出资时越来越需求愈加精确的辅导和剖析。尤其是在股票商场&#xff0c;很多人想知道怎么跟从主力进出以获取更高的收益。在这篇文章中&#xff0c;咱们将从多个视点来评论这个论题。 一、了解主力资金的进出方向 首先&…

C语言-学生管理系统(结构体+数组实现)

1. 学生管理系统功能介绍 前面文章里介绍了结构体类型&#xff0c;知道结构体类型里可以存放不同的数据类型&#xff0c;属于一个有序的集合。 这篇文章就使用结构体知识点完成一个小练习&#xff0c;使用结构体数组设计一个简单的学生管理系统&#xff0c;作为结构体知识点的…

Apache Kafka 基于 S3 的数据导出、导入、备份、还原、迁移方案

在系统升级或迁移时&#xff0c;用户常常需要将一个 Kafka 集群中的数据导出&#xff08;备份&#xff09;&#xff0c;然后在新集群或另一个集群中再将数据导入&#xff08;还原&#xff09;。通常&#xff0c;Kafka集群间的数据复制和同步多采用 Kafka MirrorMaker&#xff0…