介绍 这个框架的初衷,是为了方便让程序模块插件,将一个apk应用拆分为多个apk。 不明白这个插件、模块是怎么回事的话,可以看看腾讯微信的 安卓客户端中的插件配置。 在这里我会以腾讯微信为例,如何使用这个框架。 ( 腾讯微信并不是真正的插件,它是伪的,插件并非与它的主程序分离开,结果就是每次插件的更新,都必须以整个程序的更新为代价) 都能干啥
什么是插件动态加载apk?支付宝是万能的,既可以淘票票看电影,又可以买车票,还可以开共享单车,这些都是支付宝的开发人员开发维护的么?显然不是,那么他是怎么做到的呢?是使用了动态加载apk的解决方案。怎么动态加载apk呢?支付宝作为一个宿主apk提前将要集成的apk作为一个插件(plugin)下载到本地,然后当使用该plugin(apk)的时候再去加载对应plugin(apk)的资源文件以及对应的
原创 2022-12-09 17:45:03
290阅读
最近在研究apk的动态加载,无论是在简书还是上阅读了很多博客,但是发现很多博主虽然讲的很详细,但是很多文章都是14,15年的,而且有的文章并没有提供demo或者提供的demo根本跑不起来,搞得我一脸懵逼,学习遇到了很多阻力。但是呢,天道酬勤,最终在刻苦钻研几天后,对动态加载算是有了一定的眉目,且听我下文缓缓道来。首先动态加载apk,一定会有一个宿主apk和一个插件apk,所谓的动态加载,无
Android开发中,使用外部APK动态注入功能以扩展应用的能力是非常有吸引力的。然而,这样的做法也可能带来安全隐患以及执行过程中可能出现的各种问题。本篇博文将详细探讨“android 外部apk 注入插件”的相关问题及解决方案。 ## 问题背景 在某个项目中,我们的团队试图实现一个动态插件系统,允许用户通过外部APK加载功能,以增强应用的灵活性。用户可以通过安装第三方插件来增加特定功能,理
原创 7月前
65阅读
Android插件原理解析——ContentProvider的插件 发表于 2016-07-12   |     |   8700次阅读 目前为止我们已经完成了Android四大组件中Activity,Service以及BroadcastReceiver的插件,这几个组件各不相同,我们根据它们的特点定制了不同的插件方案;那么对于
如何加载未安装apk中的资源文件呢?我们从android.content.res.AssetManager.java的源码中发现,它有一个私有方法addAssetPath,只需要将apk的路径作为参数传入,我们就可以获得对应的AssetsManager对象,然后我们就可以使用AssetsManager对象,创建一个Resources对象,然后就可以从Res
原创 2023-02-15 00:36:46
577阅读
# Android 加载外部APK的类 ## 引言 在Android开发中,有时我们需要加载外部APK文件,并在我们的应用中运行这些APK文件提供的功能。这种需求在插件化开发、模块化开发和动态更新等场景中非常常见。为了实现这种功能,我们需要使用Android框架提供的相关类和方法。本文将介绍如何使用这些类和方法来加载外部APK文件,并提供一个简单的示例来说明其用法。 ## 类图 下面是加载
原创 2023-12-10 08:13:46
148阅读
项目地址:https://github.com/houkx/android-pluginmgr/ 欢迎star and fork(一) 综述    随着智能手机硬件性能的逐步提升,移动应用也做的越来越复杂,android平台上应用的apk包体积也越来越大,然后同类产品开始比拼谁的体积小,实现方案呢,然后很容易想到"插件",也就是说可以发布内核很小
Android加载插件apk中的Resource资源简介如何加载未安装apk中的资源文件呢?我们从android.content.res.AssetManager.java的
原创 2022-10-21 09:11:44
1152阅读
1.什么是插件化开发首先我们先来看看通过插件化开发后的APP是什么样的效果。这里就用最典型的插件APP 360手机卫士 来演示一下什么是插件的APP。 可以看到,打开应用后在切换到工具箱中有很多功能,我的工具中先是有8个自带的功能,然后点击更多工具可以去添加,点添加后先是下载,下载完成就可以打开使用了。 我们再来首先看看APP的大小,才15.62M,是不是很惊讶啊。 在上面演示的图片中那些
转载 2023-11-22 16:41:13
146阅读
Android动态加载技术在蘑菇街的第一次实践,还是在14年的时候,使用的就是之前网上广(tu)为(du)流(si)传(fang)的方式,这种方式有一个重大缺陷,就是插件内部对资源的访问只能通过自己定义的方式,包括对layout文件的inflate等,使用getResouces的方式,分分钟crash给你看,而且内部实现有些复杂,容易出现莫名其妙的Reso
原创 2023-02-15 00:02:23
229阅读
# Android插件启动APK ## 引言 在Android开发中,插件技术是一种常见的解决方案,它可以使我们在不修改主工程代码的情况下,动态地加载和启动APK。本文将带你了解实现Android插件启动APK的流程,并给出相应的代码示例,帮助你快速入门。 ## 流程图 ```mermaid flowchart TD A[主工程] -->|加载插件APK| B[宿主环境]
原创 2023-12-19 03:31:57
224阅读
# Android APK插件通讯 在Android开发中,插件技术被广泛应用于实现动态加载功能模块的需求。插件通讯则是插件技术的一个重要部分,它能够实现插件与宿主之间的通信,使得插件能够与宿主进行数据传输和交互。 ## 插件通讯原理 在Android中,插件与宿主之间的通讯可以通过Binder、AIDL等方式进行。在插件中通过AIDL定义接口,并把相应的AIDL文件打包到插件ap
原创 2024-04-10 04:05:26
95阅读
# Android 插件启动 APK 的科普 在现代 Android 开发中,插件技术成为了热门趋势。通过插件,我们可以动态地加载模块,降低 APK 的体积,提高应用程序的灵活性和可维护性。本篇文章将详细介绍 Android 插件的基本概念,并提供简单的代码示例,帮助大家更好地理解这一技术。 ## 什么是插件插件是一种软件架构设计模式,它允许开发者把功能分离为多个独立的模块(
原创 2024-10-06 06:11:34
51阅读
基本情况本人普通本科,Android开发岗。此文主要是秋招面试经验汇总,最终拿到了百度、腾讯的offer。主要包括阿里三面,腾讯四面,百度三面,网易三面,美团一面。学习知识汇总1、Java se基础1).Java基本数据类型与表达式,分支循环。 2).String和StringBuffer的使用、正则表达式。 3).面向对象的抽象,封装,继承,多态,类与对象,对象初始和回收;构造函数、this关
一、插件的来由随着项目的增大,很容易出现65536/64k的问题,同时为了让多个APP可以并发的开发,插件就应用而生。将整个app拆分成很多模块,这些模块包括一个宿主和多个插件,每个模块都是一个apk,最终打包的时候将宿主apk插件apk联合打包。插件化开发总的来说有以下几点好处:1、宿主和插件分开编译 2、并发开发 3、动态更新插件 4、按需下载模块 5、方法数或变量数爆棚,突破65536
转载 2023-08-17 20:26:22
241阅读
什么是插件将App功能拆分成多个模块,每个模块都是一个apk,最终打包成宿主apk和多个插件apk插件apk放到云端通过接口动态下发到宿主apk,实现功能集成。插件的优势宿主apk插件是分开编译的,是两个apk,更利于多人开发。插件模块功能的迭代更新和bug修复可以通过服务端接口动态下发,不需要重新下载安装整个apk,更加灵活方便主apk的各个功能模块,用户可以按需下载,可以减小主apk
一、Java从编码到执行首先我们来看一下Java是如何从编码到执行的呢? 我们有一个x.java文件通过执行javac命令可以变成x.class文件,当我们调用Java命令的时候class文件会被装载到内存中,这个过程叫做classloader。一般情况下我们自己写代码的时候会用到Java的类库,所以在加载的时候也会把Java类库相关的类也加载到内存中。装载完成之后会调用字节码解释器和JIT即时编
转载 2023-07-20 13:24:40
116阅读
今日科技快讯近日,滴滴方面表示:按照北京市网约车细则的规定,将于4月1日前停止对全北京地区(包括六环外)外地牌照网约车进行派单。同时因近期运力减少,在部分地区、部分时段上,可能会在一定程度上对用户打车成功率、等待时长等方面造成影响,对此表示歉意。 作者简介本篇来自 刘镓旗 的投稿,详细地分析了插件的原理并给出了实现过程。本文着重于思路分析以及实践,文中涉及的某些知识点(比如 Bind
前言  上一节我们针对插件最基本的原理进行了一个简单的demo实现,但是由于插件的Context对象被宿主所接管,因此无法加载插件程序的资源。那么如何解决这个问题捏?  有人提出这样的方案:将apk中的资源解压到某个目录下,然后通过读文件的方法进行资源加载,虽然理论上可以实现,但是实际操作起来难度很大,首先资源文件格式不一(xml、图片等),其次针对不同分辨率的手机,Android设备也会加载同名
转载 2023-07-17 23:23:02
171阅读
  • 1
  • 2
  • 3
  • 4
  • 5