android 监听安装来源_Flutter插件开发之APK自动安装

点击上方的终端研发部,右上角选择“设为星标

每日早9点半,技术文章准时送上

公众号后台回复“学习”,获取作者独家秘制精品资料

7695c3aa17cd9a743871341b2a07a7dc.png

往期文章

记五月的一个Android面试经

今日头条屏幕适配方案落地研究

图解算法:说一道字节跳动的算法题

除了敲代码,你还有什么副业吗?

Android 须知2019流行的框架库及开发语言

告急!fastjson又被发现漏洞,这次危害可导致服务瘫痪!

7695c3aa17cd9a743871341b2a07a7dc.png

来源:技术Yuzo

原文链接:https://www.jianshu.com/p/ce70c8fd752f

Flutter插件开发之APK自动安装
本文适用于Android开发人员

个人博客

https://yuzopro.github.io

什么是Flutter Plugin

Flutter Plugin是一种特殊的包,包含一个用Dart编写的API定义,结合Android和iOS的平台特定实现,从而达到二者兼容。1、应用的Flutter部分通过平台通道(platform channel)将消息发送到其应用程序的所在的宿主(iOS或Android)2、宿主监听的平台通道,并接收该消息。然后它会调用特定于该平台的API(使用原生编程语言) - 并将响应发送回客户端,即应用程序的Flutter部分使用平台通道在客户端(Flutter UI)和宿主(平台)之间传递消息,如下图所示2cecb6a9e30b7b7c7cbbb650099b4749.png

创建Flutter App

相关代码见运行第一个Flutter App

创建Flutter Plugin

右键工程->New->Module,如下图所示39e308ac2da0655b1cee711731466d07.png选择Flutter Plugin,点击Next,如下图所示55ad0a8f532f90a82da8380b2dd8640c.png输入工程名(Project name),点击Next,如下图所示779e44d07afe2f35b4bcb8242fccfead.png输入包名(Package name),点击Finish,入下图所示240680fbfd83cb9e7c6cb1dc2912e042.png到此Flutter plugin创建完成。

引入插件

在工程目录下找到pubspec.yaml文件,在dev_dependencies添加如下依赖,如下图所示f1a2206fe3847217236179802789e7ec.png相关代码如下ca572ce5493635d59ca36bcaf8fba0a1.png

获取版本号demo

打开插件lib下的dart文件,会有平台自动生成的代码,具体是实现获取APP版本号,如下面代码所示ac5098e6e38cd145a0ad48a8261bc7ec.pngjava部分的代码如下面所示c29c90aaf3a57901c598533a397181bc.png

实现自动安装APK

实现自动安装APK,需要从Flutter应用层传入一个APK安装包的地址到host层,dart代码如下所示:1064045f8db0f236a699f2d6ecf9ef26.pngjava部分的代码如下所示f6a32bf8d1af35dcd7825af9f4b580ae.png到此,host层就能获取到APK安装包的路径了,后面只需实现Android安装APK的代码逻辑即可,在日志下面添加如下代码0cedbd886b5f7b8d60852b4efae915c2.pnginstallApk代码实现如下所示b05c95721e3d388958e1d17203bfa06c.png除此之外,还需修改AndroidManifest.xml内的代码,如下面代码所示3a815bb43fb868e54a56cbc9d7efcd43.pngfile_path.xml放在res->xml文件夹下面,如下面代码所示60735676b86f530c6fe4bcf864357cfe.png运行代码如下图所示

9ad9def2733aaee30c74da78c746b0eb.gif

源代码

项目地址-OpenGit客户端:https://github.com/Yuzopro/OpenGit_Flutter

初探:Java虚拟机那点破事十个Android面试技术知识点Android社招最全面试题生还是死?Android 进程优先级详解图解算法:说一道字节跳动的算法题将20M文件从30秒压缩到1秒,我是如何做到的?

相信自己,没有做不到的,只有想不到的

在这里获得的不仅仅是技术!

5effa2b9fa878486697a38775ef0cce4.png

b637bf7cfb265acdb31d45f78e0894e0.gif

喜欢就给个“在看” 410fdc598f5c65e4fa2d96a59c61976c.gif

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

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

相关文章

JavaScript学习总结(一)——JavaScript基础

转载自 JavaScript学习总结(一)——JavaScript基础 一、JavaScript语言特点 1.1、JavaScript是基于对象和事件驱动的(动态的) 它可以直接对用户或客户输入做出响应,无须经过Web服务程序。它对用户的响应,是采用以事件驱动的方式进行的。所谓事件驱动…

idea下使用springinitializr创建项目时 初始化失败的解决

idea自带的地址无使用使用阿里的就可以了 idea下使用springinitializr创建项目时 初始化失败的解决 周山 关注 2020.08.05 13:32:26字数 10阅读 1,085 image.png 修改初始化创建时Custom处 https://start.aliyun.com/ image.png

如何使Mac Docker支持SQL on Linux容器Volume特性

问题引入 这天老鸟火急火燎的找到菜鸟:“鸟儿啊,按照你之前的文章SQL on Linux Run on Docker,当我销毁SQL on Linux Docker容器以后,我容器中的所有数据库数据丢失啦,怎么办,怎么办啊?”。菜鸟…

JavaScript学习总结(二)——逻辑Not运算符详解

转载自 JavaScript学习总结(二)——逻辑Not运算符详解 在JavaScript 中,逻辑NOT运算符与C和Java中的逻辑 NOT 运算符相同,都由感叹号(!)表示。与逻辑 OR 和逻辑 AND 运算符不同的是,逻辑 NOT 运算符返回的一定是 Boo…

赫夫曼树+图解

图解 代码实现 package com.atguigu.huffmanTree;import javax.swing.*; import java.awt.geom.RoundRectangle2D; import java.util.ArrayList; import java.util.Collections; import java.util.List;/*** 创建人 wdl* 创建时间 2021/3/26* 描述*/ public class HuffmanTree…

四足爬行机器人运动_有自我意识机器人横空出世,还能自我复制,专家表示需警惕其失控...

有自我意识是什么样的?人类自身其实就是有自我意识的生命体,那作为有自我意识的生命体,你想过自我意识是指哪些特征吗?指尖科技说小编先跟你探讨一下:1.主动做事情。就是说在没有其他人控制的情况下,它可以…

微软AirSim,一个无人机和机器人的模拟器

微软开发并开源了AirSim,一个用于模拟无人机在全世界的飞行的工具。这个模拟器基于虚幻引擎(Unreal Engine)构建,微软很快会增加对机器人和其它类型移动设备的支持。 微软在内部开发了航空信息系统和机器人平台,这个研…

JavaScript学习总结(四)——逻辑OR运算符详解

转载自 JavaScript学习总结(四)——逻辑OR运算符详解 在JavaScript中,逻辑OR运算符用||表示 var bTrue true;var bFalse false;var bResult bTrue || bFalse; 下面的真值表描述了逻辑AND运算符的行为: 运算数 1运算数 2结果truetruetruetruefalsetruefals…

LEANSOFT领航员 – 基于Docker的DevOps实战培训

2016年,LEANSOFT推出了一系列广受开发人员欢迎的培训,包括《构建高效DevOps团队》,《基于Azure的容器化DevOps数据中心》和《Docker基础培训》。在这些培训中,我们得到了很多反馈,大家对使用Docker来支持DevOps的场景有…

高德地图路线规划 时间_路线准、播报拥堵及时,这次自驾出行高德地图可算是帮了大忙...

在我们日常生活中,自驾已经成为一种很普遍的出行方式,不仅在时间上灵活,特别是一家人出行也比较方便。伴随自驾出行的除了爱车外,一款靠谱的地图导航软件也成为了必不可少的旅行伙伴。目前比较常用的地图导航软件当属高德、百度和腾讯,不少人手机里都会有这三款软件中的其中一个…

JavaScript学习总结(七)——JavaScript函数(function)

转载自 JavaScript学习总结(七)——JavaScript函数(function) 一、函数基本概念 为完成某一功能的程序指令(语句)的集合,称为函数。 二、JavaScript函数的分类 1、自定义函数(我们自己编写的函数),如:function funName(){} 2、系统函数(J…

JavaScript学习总结(八)——JavaScript数组

转载自 JavaScript学习总结(八)——JavaScript数组 JavaScript中的Array对象就是数组,首先是一个动态数组,无需预先制定大小,而且是一个像Java中数组、ArrayList、Hashtable等的超强综合体。 一、数组的声明 常规方式声明: 1、…

命令点无效怎么处理_CAD执行修改命令,你试过重复选择对象吗?

你在执行命令的时候,是习惯先选择对象还是之后才选择对象的呢?不知道细心的你有没有发觉,明明已经先选择对象了才执行命令,为什么之后还要重复选择对象?这里可以分几种情况来讨论一下。CAD版本:中望CAD 202…

一起脱去小程序的外套和内衣 - 微信小程序架构解析

作者介绍: 渠宏伟,腾讯高级工程师,从事Web前端开发5年,先后负责企鹅电竞、腾讯视频VIP、腾讯OA开发框架、腾讯微信HR助手等项目。对Web前端架构、.NET架构有丰富的经验。 | 导语 微信小程序的公测掀起了学习小程序开发的浪潮&…

JavaScript学习总结(九)——Javascript面向(基于)对象编程

转载自 JavaScript学习总结(九)——Javascript面向(基于)对象编程 一、澄清概念 1.JS中"基于对象面向对象" 2.JS中没有类(Class),但是它取了一个新的名字叫“原型对象”,因此"类原型对象" 二、类(原型对象)和对象(实例)的区别与联…

将Springboot项目放在服务器上一直运行

nohup java -jar hz-sms-0.0.1-SNAPSHOT.jar >/www/wwwroot/...-0.0.1-SNAPSHOT.out 2>&1 &

迁移数据库到SQL on Linux Docker

问题引入 前一篇文章,菜鸟找到了SQL on Linux Docker容器销毁后,容器中的数据库文件可以得以保留的方法,老鸟非常开心。所以,今天又提出了新的问题:“鸟儿,如果我想把我的数据库从SQL on Windows迁移到SQL …

Spring IoC 容器

转载自 Spring IoC 容器 IoC 容器 Spring 容器是 Spring 框架的核心。容器将创建对象,把它们连接在一起,配置它们,并管理他们的整个生命周期从创建到销毁。Spring 容器使用依赖注入(DI)来管理组成一个应用程序的组…

字段缺失_区分Protobuf 3中缺失值和默认值

来自公众号:新世界杂货铺这两天翻了翻以前的项目,发现不同项目中关于Protobuf 3缺失值和默认值的区分居然有好几种实现。今天笔者冷饭新炒,结合项目中的实现以及切身经验共总结出如下六种方案。增加标识字段众所周知,在Go中数字类…