首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • Shadow 还是 Shiply?安卓插件终极选型指南

    在Android插件化开发中,Shadow和Shiply都提供了非常优秀的底层支持,但它们的最佳实践侧重点有所不同。 一、Shadow插件化开发最佳实践Shadow是腾讯开源的零反射、全动态插件框架,它的核心优势在于合规性强、宿主增量极小,非常适合需要高度定制或上架GooglePlay的场景。 遵循“全动态”架构设计:最佳实践是将插件框架自身的代码也动态,和插件打包在一起发布。这样插件的迭代不会受限于宿主打包的旧版本框架,实现真正的独立演进。 做好资源与类隔离:利用Shadow提供的独立Resources和AssetManager实例为每个插件创建资源空间,同时通过自定义的ClassLoader加载插件类。 三、总结如果你追求极致的代码控制权和合规性,且团队有能力自行搭建后端管理系统,Shadow的开源模式是最佳实践;如果你更看重研发效率、希望快速落地动态能力,并需要强大的灰度发布与多端统一管理,那么直接使用

    10110编辑于 2026-05-15
  • 来自专栏大前端修炼手册

    Android插件江湖:从DroidPlugin到Shadow的技术演进

    Android插件Shadow深度剖析 · 第1/4篇 从原理到实战,腾讯Shadow插件框架全解 第1篇:Android插件江湖:从DroidPlugin到Shadow的技术演进(本篇) 今天就来完整梳理这条演进线,看Shadow如何成为当前公认的「终极方案」。 插件的三大核心诉求 在拆解技术方案之前,先明确一件事:为什么需要插件?不是为了炫技,而是工程层面有三个刚需。 只有打包成插件时,Transform才会介入做替换。 3. 全动态 Shadow插件框架本身(Loader、Manager)也做成了动态下发的插件Shadow的整体架构速览 为后续三篇打好基础,先看Shadow的宏观架构: Shadow 插件框架 · 整体架构 零反射 · 全动态 · 宿主增量仅15KB 宿主 App(Host) HostActivity ,用真通行证代替伪造通行证 • 2026年国内大型App的插件仍是刚需,Shadow是最合规的选择 — 「Android插件Shadow深度剖析」系列 · 第1篇完 — 下一篇:Shadow核心原理

    16410编辑于 2026-05-18
  • 来自专栏各类技术文章~

    使用Preact 开发基于Shadow DOM的JS插件

    前言 第三方JS插件在日常开发中经常会使用到。对于一些不涉及到展示的功能插件,仅需要引入一个js文件即可,但对于一些界面级插件,如轮播图、富文本编辑器等,往往还需要单独引入css文件使之展示正常。 如果可以仅引入一个js文件,并且插件样式能完全做到与主体应用隔离,那么插件的通用性也能进一步提高。 MVVM框架当然也可以用来开发界面级JS插件,甚至会使事情变得更加简单。 JS插件一般都是轻量的。相比于使用React,Preact更符合我们的要。 以Rollup为例,使用rollup-plugin-postcss插件,即可完成: rollup.config.js import postcss from "rollup-plugin-postcss Shadow DOM上像写普通React应用一样开发插件了!

    2.4K30发布于 2021-10-09
  • 来自专栏向治洪

    腾讯零反射全动态Android插件框架Shadow解析

    首先,让我们来看一下官方对于Shadow的简介: Shadow是一个腾讯自主研发的Android插件框架,经过线上亿级用户量检验。 全动态插件框架:一次性实现完美的插件框架很难,但Shadow将这些实现全部动态起来,使插件框架的代码成为了插件的一部分。插件的迭代不再受宿主打包了旧版本插件框架所限制。 插件框架全动态 所谓全动态,指的就是除了插件代码之外,插件框架本身的所有逻辑代码也都是动态的。并且,Shadow框架实际上也做到了这一点,即插件框架的代码我们是和插件打包在一起发布的。 全动态插件框架有多重要呢?其实它比无Hack、零反射实现还要重要!因为有了这个特性之后,就算是我们用了Hack的方案,需要兼容各种手机厂商的系统。我们也不需要等宿主App更新才能解决问题。 然后就可以在IDE中选择sample-host模块直接运行即可,如下: Shadow的所有代码都位于projects目录下的3个目录: sdk包含SDK的所有代码 test包含SDK的自动测试代码

    4.6K40编辑于 2022-11-30
  • 来自专栏WordPress果酱

    Real Shadow:jQuery 超炫阴影跟随效果插件

    Real Shadow 是一个非常简洁高效的轻量级 jQuery 插件,它可以在页面上任何 HTML 元素创建出非常逼真的鼠标跟随的阴影效果。 在介绍使用之前,看下 Real Shadow 的演示: Real Shadow 演示 请到 http://blog.wpjam.com/m/real-shadow/ 查看演示。 如何使用 Real Shadow 首先引入 jQuery 框架及 Real Shadow 插件: <script type="text/javascript" src="http://code.jquery.com /master/realshadow.js"></script> 然后初始 $(selector).realshadow(); // options are optional $(selector) shadow } }); 下载:https://github.com/Indamix/real-shadow/ ----

    88120编辑于 2023-04-15
  • 来自专栏腾讯开源的专栏

    Tencent Shadow—零反射全动态Android插件框架正式开源

    Shadow是一个腾讯自主研发的Android插件框架,主要有以下特点: Shadow所指的插件插件的代码完全是一个正常可安装的App代码,无需引用任何Shadow的库。 这样的App代码应用了Shadow之后可以免安装运行在另一个App中。 Shadow是一个完全无Hack,甚至零反射实现的Android插件框架。 Shadow是一个全动态实现的插件框架,就是说插件框架的代码跟插件的代码一样都是动态发布的。 所以我们重新Review了插件框架的本质原理和设计缺陷,进而设计了全新的插件框架ShadowShadow没有使用任何非公开SDK接口,实现了和原本在用的使用了大量非公开SDK接口的实现一样的功能。 反过来说,Shadow开源的代码绝大部分代码都是经过了亿级用户线上检验的,是可靠的。由于精力有限,我们的自动测试用例也还比较少。这些都需要大家共同完善。

    7.8K104发布于 2019-06-20
  • 来自专栏薛定喵君

    shadow dom

    旨在构建基于组件的应用,可针对性提供如下解决方案: 隔离DOM:组件的 DOM 是独立的(例如,document.querySelector() 不会返回组件 shadow DOM 中的节点) 作用域CSS :shadow DOM 内部定义的 CSS 在其作用域内。 样式规则不会泄漏,页面样式也不会渗入 组合:为组件设计一个声明性、基于标记的 API 简化CSS:作用域 DOM 意味着您可以使用简单的 CSS 选择器,更通用的 id/类名称,而无需担心命名冲突 shadow

    1.1K40发布于 2019-11-06
  • 来自专栏韩曙亮的移动开发专栏

    【Android 插件插件化简介 ( 组件插件 )

    Android 插件系列文章目录 【Android 插件插件化简介 ( 组件插件 ) 【Android 插件插件原理 ( JVM 内存数据 | 类加载流程 ) 【Android 插件插件原理 ( 类加载器 ) 【Android 插件】“ 插桩式 “ 插件框架 ( 原理与实现思路 ) 【Android 插件】“ 插桩式 “ 插件框架 ( 类加载器创建 | 资源加载 ) 【Android 插件】“ 插桩式 “ 插件框架 ( 注入上下文的使用 ) 【Android 插件】“ 插桩式 “ 插件框架 ( 获取插件入口 Activity 组件 | 加载插件 Resources 资源 ) 【Android 插件】“ 插桩式 “ 插件框架 ( 运行应用 | 代码整理 ) 文章目录 Android 插件系列文章目录 一、组件插件 二、插件示例 三、插件标准引入 机制 , 动态部署其插件 apk ; 这类软件第一次打开时 , 需要下载该模块的 插件 apk , 并安装 , 此时会卡顿以下 , 之后可以流畅访问 ; 三、插件标准引入 ---- 插件 中 ,

    4.7K20编辑于 2023-03-29
  • 来自专栏Web行业观察

    使用 shadow DOM

    需要了解的 Shadow DOM相关技术: Shadow host: 一个常规 DOM节点,Shadow DOM会被添加到这个节点上。 Shadow tree:Shadow DOM内部的DOM树。 Shadow boundary:Shadow DOM结束的地方,也是常规 DOM开始的地方。 Shadow root: Shadow tree的根节点。 当类实例后,所有的实例元素都会有相同功能。 创建 shadow root 在构造函数中,我们首先将 Shadow root 添加到 custom element上: // 创建 shadow root var shadow = this.attachShadow DOM添加到 Shadow root上 最后,将所有创建的元素添加到 Shadow root上: // 将所创建的元素添加到 Shadow DOM上 shadow.appendChild(style)

    2.3K90发布于 2019-05-29
  • 来自专栏性能与架构

    影子(Shadow) DOM

    什么是 Shadow DOM? Shadow DOM 是一个革命性的新技术,先来看下他是什么样子的 以

    1.6K80发布于 2018-04-03
  • 来自专栏gojam技术备忘录

    Shadow DOM简介

    Shadow DOM是什么 一个网页会形成一颗DOM树,树上有很多结点,但过多的结点使结构复杂起来,Shadow DOM允许我们用封装的方式简化这种结构。 Shadow DOM是网页DOM树上的特殊结点的结构,这个结点内部同样可以包含一颗DOM树,不过在网页DOM树上只会看到Shadow DOM的根节点。 Shadow DOM的用法 向普通元素附着Shadow DOM let shadow = elementRef.attachShadow({mode:'open'}); 配置参数可选open或closed ,用参数决定Shadow DOM是否可在JavaScript内访问。 改变Shadow DOM的内容 获取到ShadowDOM的引用(shadow)后发现,shadowRoot也可以像其他DOM元素一样操作,比如设置innerHTML或者append元素等。

    1.6K40发布于 2019-05-14
  • 来自专栏jiajia_deng

    shadow、overload、override

    shadow(阴影)、overload(重载)、override(覆写),这三个概念一直有人非常混淆,很幸运,经过老师的悉心教导,我总结了一下三个概念的不同之处。 shadow:发生在父子之间,需要函数名相同即可构成 shadow (阴影),构成 shadow 后可通过域运算符来访问对应类中的函数。

    58320编辑于 2023-10-20
  • 来自专栏开源部署

    linux shadow文件

    说到用户管理,就不得不提到shadow这个文件,shadow有三个功能: 隐藏密码 扩充密码的功能 提供账号管理工具 隐藏密码: 因为/etc/passwd和/etc/group文件的权限必须是0644 ,这意味着所有的用户都能读取到内容,所以为了安全起见,我们通过shaodw把用户和组的密码分别隐藏在/etc/shadow,/etc/gshadow文件中,且这两个文件只有管理员,也就是root能调用 /etc/shadow,/etc/gshadow文件中 /etc/shadow: 存储用户密码及密码额外功能的文件 文件内容: root:$6$T52Xvk7zu84.tDXp$nfXcm6LTfUx.ZviEo7Eq1bPjDO ...::0:99999:7::: bin:*:18027:0:99999:7::: /etc/shadow文件的格式与/etc/passwd类似,也是每一行代表一个账号的数据,使用:进行分隔. 目前的 Shadow 可以设置下列两种期限: 密码过期 一旦超过密码过期日期,用户成功的登录Linux 时,会强迫用户设置一个新的密码。设置完毕后,才会开启用户的 Shell 程序。

    3.2K40编辑于 2022-09-15
  • 来自专栏韩曙亮的移动开发专栏

    【Android 插件】Hook 插件框架 ( hook 插件原理 | 插件包管理 )

    Android 插件系列文章目录 【Android 插件插件化简介 ( 组件插件 ) 【Android 插件插件原理 ( JVM 内存数据 | 类加载流程 ) 【Android 插件插件原理 ( 类加载器 ) 【Android 插件】“ 插桩式 “ 插件框架 ( 原理与实现思路 ) 【Android 插件】“ 插桩式 “ 插件框架 ( 类加载器创建 | 资源加载 ) 【Android 插件】“ 插桩式 “ 插件框架 ( 注入上下文的使用 ) 【Android 插件】“ 插桩式 “ 插件框架 ( 获取插件入口 Activity 组件 | 加载插件 Resources 资源 ) 【Android 插件】“ 插桩式 “ 插件框架 ( 运行应用 | 代码整理 ) 【Android 插件】Hook 插件框架 ( Hook 技术 | 代理模式 | 静态代理 | 动态代理 ) 【Android 插件】Hook 插件框架 ( Hook 实现思路 | Hook 按钮点击事件 ) 【Android 插件】Hook 插件框架 ( Hook Activity 启动过程

    4.8K10编辑于 2023-03-29
  • 来自专栏韩曙亮的移动开发专栏

    【Android 插件插件框架整理

    ( 阿里巴巴 ) 二、DynamicAPK ( 携程 ) 三、VirtualApp ( 罗迪 ) 四、DroidPlugin ( 360 ) 五、dynamic-load-apk ( 任玉刚 ) 六、Shadow 五、dynamic-load-apk ( 任玉刚 ) ---- GitHub 地址 : https://github.com/singwhatiwanna/dynamic-load-apk 六、Shadow ( 腾讯 ) ---- https://github.com/Tencent/Shadow 七、Phantom ( 满帮 ) ---- https://github.com/ManbangGroup

    4.2K30编辑于 2023-03-29
  • 来自专栏杰的记事本

    filter:drop-shadow与box-shadow的区别

    二、同样的参数值,表现效果有差异 filter中的drop-shadow语法如下: filter: drop-shadow(x偏移, y偏移, 模糊大小, 色值); 例如: filter:drop-shadow 但是,如果使用同样参数值的box-shadow,例如: box-shadow: 5px 5px 10px black; 会发现,box-shadow的阴影距离更小,色值要更深: ? 三、drop-shadow没有内阴影效果 box-shadow支持inset内阴影,如: box-shadow: inset 5px 5px 10px black; 但是,drop-shadow却没有。 四、drop-shadow不能阴影叠加 box-shadow有个超屌的特性,就是阴影可以任意累加,因此,理论上我们可以使用box-shadow生成任意的图片 但是filter中的drop-shadow就只能抱歉了 drop-shadow有一个很厉害的特性,也就这一个特性,让其以后有足够的机会大放异彩!那就是,drop-shadow才是真正意义上的投影,而box-shadow只是盒阴影而已。 什么意思呢?

    2.1K10发布于 2019-09-04
  • 来自专栏刘望舒

    Android插件原理之Activity插件

    前言 四大组件的插件插件技术的核心知识点,而Activity插件更是重中之重,Activity插件主要有三种实现方式,分别是反射实现、接口实现和Hook技术实现。 反射实现会对性能有所影响,主流的插件框架没有采用此方式,关于接口实现可以阅读dynamic-load-apk的源码,这里不做介绍,目前Hook技术实现是主流,因此本篇文章主要介绍Hook技术实现。 2.1 注册Activity进行占坑 为了更好的讲解启动插件Activity的原理,这里省略了插件Activity的加载逻辑,直接创建一个TargetActivity来代表已经加载进来的插件Activity 为了更好的讲解启动插件Activity的原理,本小节省略了插件Activity的加载逻辑,直接创建一个TargetActivity来代表已经加载进来的插件Activity。 更多的Android插件原理请查看即将要出版的《Android进阶之光》续作。

    1.5K50发布于 2018-06-22
  • 来自专栏Czy‘s Blog

    Shadow DOM的理解

    Shadow DOM的理解 Shadow DOM是HTML的一个规范,其允许在文档document渲染时插入一颗DOM元素子树,但是这棵子树不在主DOM树中,Shadow DOM如果按照英文翻译的话可以翻译为影子 ,它可以将一个隐藏的、独立的DOM附加到一个元素上,Shadow DOM标准允许你为你自己的元素custom element维护一组Shadow DOM。 Shadow DOM允许将隐藏的DOM树附加到常规的DOM树中,它以shadow root节点为起始根节点,在这个根节点的下方,可以是任意元素,和普通的DOM元素一样,另外还有一些Shadow DOM特有的术语 Shadow host: 一个常规DOM节点,Shadow DOM会被附加到这个节点上。 Shadow tree: Shadow DOM内部的DOM树。 Shadow boundary: Shadow DOM结束的地方,也是常规DOM开始的地方。 Shadow root: Shadow tree的根节点。

    2.1K10发布于 2021-02-25
  • 来自专栏韩曙亮的移动开发专栏

    【Android 插件插件技术弊端 ( 恶意插件程序的解决方向 | 常用的插件虚拟引擎 )

    文章目录 一、插件技术弊端 二、恶意插件程序的解决方向 三、常用的插件虚拟引擎 一、插件技术弊端 ---- 在之前的 Android 应用中 , 部分黑客将应用破解 , 植入自己的恶意代码 , , 使用自动脚本 , 一晚上甚至可以封装数量巨大的恶意应用 ; 目前的 Android 生态中 , 存在着大量的该类使用插件技术进行 ; 据统计 , 应用市场中 , 插件应用中 , 恶意插件应用 是 正常使用插件技术应用的 数倍 ; 针对上述问题 , 需要使用一些技术识别 恶意 插件应用 , 并删除此类应用 ; 二、恶意插件程序的解决方向 ---- 首先 , 要先识别出使用了插件技术的应用 ; 插件应用有相同的特点 : 使用了 插件 技术 的应用 , 都有相同的特点 , 当前的插件基本都是基于 Hook 的插件技术 , 这样可以零侵入代码 , 开发的插件 APK 与普通 APK , 一般不经过用户同意秘密加载插件 ( 感觉有些大厂的插件也是偷摸加载的 , 插件对用户透明 ) , 分析出恶意插件的非法加载插件的指纹特征 , 与正常使用插件技术的应用进行区分 ; 检测恶意插件应用

    1.2K40编辑于 2023-03-29
  • 来自专栏IMWeb前端团队

    Shadow DOM 初探

    本文作者:IMWeb went 原文出处:IMWeb社区 未经同意,禁止转载 1、Shadow DOM的概念 Shadow DOM用官方的翻译来说就是影子 DOM,他能够为Web组件中的 DOM 和 CSS提供了封装,实际上是在浏览器渲染文档的时候会给指定的DOM结构插入编写好的DOM元素,但是插入的Shadow DOM 会与主文档的DOM保持分离,也就是说Shadow DOM不存在于主DOM树上 Shadow DOM 需要append某一个DOM元素上,但是Shadow DOM封装出来的DOM元素是独立的,外部的配置不会影响到内部,内部的配置也不会影响外部。 但是我们还是能够通过js或者css来控制Shadow DOM里面封装好的元素。 2、Shadow DOM的作用 上文讲过 ,Shadow DOM 是游离在 DOM 树之外的节点树,因此其拥有优秀的密封性。

    1.2K10发布于 2019-12-04
领券