Android 隐私合规静态检查实现(二)

2021-12-27
阅读 4 分钟
5.1k
本文作者:烧麦前言笔者之前在云音乐大前端公众号分享了 Android 隐私合规静态检查的一部分实现。Android隐私合规静态检查上一篇文章通过反编译 APP 的方式,扫描了 APP 内对隐私方法调用的检查。但存在一些问题:无法检查到 so 文件里是否可能存在隐私方法的调用。当我们全量扫描出某个地方存在隐私方法调用的时候,我...
封面图

LOOK 直播活动地图生成器方案

2021-12-14
阅读 8 分钟
3.1k
对于前端而言,与视觉稿打交道是必不可少的,因为我们需要对照着视觉稿来确定元素的位置、大小等信息。如果是比较简单的页面,手动调整每个元素所带来的工作量尚且可以接受;然而当视觉稿中素材数量较大时,手动调整每个元素便不再是个可以接受的策略了。
封面图

Eggjs 入门解构

2021-12-02
阅读 10 分钟
3.3k
阅读本文前,请先浏览 Eggjs 官方例子和 了解 Koajs本文作者:东东章开始官方给了这样一个例子,手动搭建 Hacker News。当我们看到这个页面的时候,不要着急往下看教程。 先自我思考下如何实现这个页面,要用到哪些技术:路由处理。我们需要一个角色处理接受 /news 请求,除此之外,一般还有 / 默认首页,也就是说至少 2...
封面图

Android 隐私合规静态检查

2021-11-01
阅读 5 分钟
5.3k
目前,国内对应用程序安全隐私问题监管变的越来越严格。各个应用市场对APP上架也有比较严格的检查。云音乐今年也在Google Play上上架了一些海外的社交类业务。Google Play在审核应用的时候,也有相应的政策。当我们每次遇到问题的时候,需要根据检查方的信息对一些代码逻辑进行排查。
封面图

DrawIO 二开 —— 是时候给你的 ProcessOn 充值终身 VIP 了

2021-10-11
阅读 15 分钟
12k
本文从使用角度入手,循序渐进的讲述 DrawIO 是什么,为什么要基于 DrawIO 进行二次开发以及 DrawIO 二次开发的核心技术细节并抽象出了一套通用二开架构,因此文章内容较长,不同阶段的读者可以根据需求进行阅读。本文整体结构如下:
封面图

深入 WebAssembly 之解释器实现篇

2021-09-26
阅读 9 分钟
7.4k
从去年年底开始笔者决定深入 WebAssembly(为了书写方便,接下来简称为 Wasm)这门技术,在读《WebAssembly 原理与核心技术》这本书的过程中(这本书详细讲解了 Wasm 的解释器和虚拟机的工作原理以及实现思路),萌生了实现一个 Wasm 解释器的想法,于是就有了这个项目。接下来我们就直奔主题,看下到底如何实现一个 Was...
封面图

如何生成稳定的动态 treemap(矩形树图)关键技术揭晓

2021-09-15
阅读 13 分钟
5.7k
前段时间,网易云音乐上线了一个基于熟人社交投票玩法的 h5 活动,该活动依据投票数权重值来划分格子块,并通过格子块之间无缝挤压动效极大地增加了趣味性。本文将着重介绍如何基于 treemap(矩形树图)来实现一个稳定的动态格子块挤压效果以及在这其中遇到的一些问题。
封面图

AGP 升级之旅

2021-09-01
阅读 16 分钟
7.8k
近期,由于引入的新工具依赖 Android Gradle Plugin(后面都简写为 AGP)4.1 或以上版本,而项目当前使用的 AGP 版本为 3.5.0,需进行升级。考虑到一些第三方库尚未对最新的 AGP 4.2 版本提供支持,决定将 AGP 升级到 4.1 中的最高版本 4.1.3,遂开启了本次 AGP 升级之旅。
封面图

Android 开发,如何写出符合规范的异常处理代码?

2021-08-13
阅读 5 分钟
5.1k
在 Java 中,异常明确的分为两种:Checked Exception 和 Unchecked Exception。下图中的红色部分表示 Unchecked Exception 异常,蓝色的表示 Checked Exception。结构图如下:
封面图

如何把应用搬上车

2021-07-30
阅读 8 分钟
4.6k
当前造车新势力越来越火,汽车智能化成为风口,很多手机应用希望拓展车机场景,云音乐及旗下 Look 直播也在车机端场景进行了一些探索,下面分享过程中的一些总结和心得体会
封面图

Android agp 对 R 文件内联支持

2021-07-20
阅读 7 分钟
6.3k
最近团队升级静态代码检测能力,依赖的相关编译检测能力需要用到较新的agp,而且目前云音乐agp版本用的是 3.5.0,对比现在 4.2.0 有较大差距,所以我们集中对 agp 进行了一次升级。在升级前通过官方文档,发现在 agp3.6.0 和 4.1.0 版本分别对 R 文件的处理方式进行了相应的升级,具体升级如下。
封面图

SVG基础及其动画应用浅析

2021-06-23
阅读 17 分钟
5.4k
和高清png来做个对比继续对比同样高清的质地,矢量图不畏惧放大,体积小。这里要说明一点就是,因为 SVG 中保存的是点、线、面的信息,与分辨率和图形大小无关,只是跟图像的复杂程度有关,所以图像文件所占的存储空间通常会比 png 小。
封面图

官方揭秘!你的颜色是这样算出来的……

2021-05-31
阅读 3 分钟
7.2k
与此同时,有网友开始分析起了本次活动的计算逻辑,甚至反编译出了所有可能的颜色结果。作为本次活动的核心开发人员,接下来将为大家介绍颜色测试活动的技术细节。
封面图

Objects in v8

2021-04-27
阅读 15 分钟
5.1k
文本将和大家一起简单了解一下 v8 内部是如何处理对象的,以及 v8 为了高速化对象属性的访问所做的一些优化的细节。除了结合现有的资料外,本文还链接了一些实现所对应的源码位置,以节约大家后续需要结合源码进行深入时所花的时间

Wakeup in XNU

2021-04-14
阅读 8 分钟
4.7k
苹果在iOS13的时候,在内核中加入了一个新的性能衡量指标wakeup,同时由于这个指标而被系统杀死的应用数不胜数,其中也包括我们常用的微信淘宝等。而这个指标完全是由 XNU 内核统计的,所以我们很难通过日志等普通手段去准确的定位问题,所以这里通过另一种思路去解决这个问题。

Libuv 之 - 只看这篇是不够的

2021-03-31
阅读 21 分钟
6.6k
As an asynchronous event-driven JavaScript runtime, Node.js is designed to build scalable network applicationsAbout Node.js

v8 Heapsnapshot 文件解析

2021-03-17
阅读 9 分钟
9.4k
在 node 中可以通过 v8.getHeapSnapshot 来获取应用当前的堆快照信息,该调用会生成一份 .heapsnapshot 文件,官方并没有对该文件的内容有一个详细的解释,本文将主要对该文件内容进行解析,并演示了一个了解文件内容后可以做的有趣的事情

基于 qiankun 的微前端应用实践

2021-03-11
阅读 7 分钟
8.7k
云音乐广告 Dsp(需求方平台)平台分为合约平台(Vue 框架)和竞价平台(React 框架),因历史原因框架选型未能统一,最近来了新需求,需要同时在两个平台增加一样的模块,因为都是 Dsp 平台,后期这样的需求可能会很多,所以考虑到组件复用以及降低维护成本,在想怎么统一技术栈,把 React 系统塞到 Vue 项目中进行呈现。

前端单元测试技术方案总结

2021-03-03
阅读 21 分钟
7.2k
单元测试的技术方案很多,不同工具之间有互相协同,也存在功能重合,给我们搭配测试方案带来不小的困难,而且随着 ES6, TypeScript 的出现,单元测试又增加了很多其他步骤,完整配置起来往往需要很大的时间成本。我希望通过对这些工具的各自作用的掌握,了解完整的前端测试技术方案。前端单元测试的领域也很多,这里主要...

WKWebView 请求拦截探索与实践

2021-01-28
阅读 11 分钟
22.7k
WebView 在移动端的应用场景随处可见,在云音乐里也作为许多核心业务的入口。为了满足云音乐日益复杂的业务场景,我们一直在持续不断的优化 WebView 的性能。其中可以短时间内提升 WebView 加载速度的技术之一就是离线包技术。该技术能够节省网络加载耗时,对于体积较大的网页提升效果尤为明显。离线包技术中最关键的环...

函数式编程进阶:Monad 与 异步函数的组合

2021-01-19
阅读 11 分钟
8.6k
前面两篇分别介绍了 Functor 和 Applicative 的概念和实际应用,并列举了几个具体的例子,说明了 Functor 和 Applicative 的实际用途,比如:使用 Either 来处理无处不在的 null 和创建可组合的 try-catch;使用 Applicative 来做高度灵活高度可拓展的表单校验;相信读者应该已经牢牢掌握了 Functor 的核心:map-应用一...

Flutter 图片控件适配之路

2021-01-13
阅读 8 分钟
8.8k
目前大部分应用都会使用大量的图片,图片成为当前应用带宽占比最大的一种资源。在我们接入 Flutter 的时候,发现 Flutter 的图片控件缓存完全由自己管理,同时还没有提供磁盘缓存(1.22版本),所以在性能以及体验上均比较差,所以必须对其进一步优化。
封面图

剖析 lottie-web 动画实现原理

2021-01-07
阅读 11 分钟
15.5k
Lottie 是一个复杂帧动画的解决方案,它提供了一套从设计师使用 AE(Adobe After Effects)到各端开发者实现动画的工具流。在设计师通过 AE 完成动画后,可以使用 AE 的扩展程序 Bodymovin 导出一份 JSON 格式的动画数据,然后开发同学可以通过 Lottie 将生成的 JSON 数据渲染成动画。

Poplayer 云音乐优化实践

2020-12-30
阅读 6 分钟
8.4k
你是否还在为各种特殊场景特殊逻辑而烦恼,是否还在为各种一次性业务而添加一堆代码,是否还在为各种奇奇怪怪的彩蛋而满心疲惫? 在云音乐不断迭代的过程中,我们不止一次的遇到产品说要在某一个地方加个彩蛋,有的是在触及特殊操作时,有的是在播放特定歌曲时,甚至有的是在特定时间点播放特定歌曲到特定播放进度时。

React 事件系统工作原理

2020-12-23
阅读 7 分钟
9.9k
在 React事件介绍 中介绍了合成事件对象以及为什么提供合成事件对象,主要原因是因为 React 想实现一个全浏览器的框架, 为了实现这种目标就需要提供全浏览器一致性的事件系统,以此抹平不同浏览器的差异。

漫谈 React Fiber

2020-12-16
阅读 7 分钟
4.7k
React 实现了使用 Virtual DOM 来描述 UI 的方式,通过对比两棵树的差异最小化的更新 DOM,这样使得用户的代码变的傻瓜,但是同时也来带了一些问题。这个核心的问题就在于 diff 计算并非是免费的,在元素较多的情况下,整个 diff 计算的过程可能会持续很⻓时间,造成动画丢帧或者很难响应用户的操作,造成用户体验下降。...

云音乐 Android 视频「无缝」播放实现总结

2020-12-09
阅读 5 分钟
7.2k
在网易云音乐 8.0 改版中,接到一个播放中的视频可以点击「小窗」按钮收起到 mini 播放条中继续播放的需求,刚接到这个需求时内心是崩溃的,要知道网易云音乐的 mini 播放条是一个可能会出现在 App 中的任何 Activity 上的 View,在不同 Activity 之间跳转时,如何能保证视频可以从一个 Activity “无缝”转移到另一个 Act...

聊聊 RN 中 Android 提供 View 的那些坑

2020-12-02
阅读 7 分钟
5.6k
最近笔者研究 Android 中使用自定义 View 提供原生组件给 React Native(下面统一写成 RN ) 端的时候,遇到一些实际问题,在这里从 RN 的一些工作机制入手,分享一下问题的原因和解决方案。

如何基于 TypeScript 实现控制反转

2020-11-25
阅读 8 分钟
4.5k
最近接到任务,需要给团队封装一个基于 EggJS 的上层 NodeJS 框架,在这个过程中参考了 NestJS 、Midway 等开源项目,发现它们都引入了一项重要特性 —— IoC ,于是笔者借这个机会对 IoC 进行了一些学习和梳理。本文主要参考了 Midway 的源码,按自己的理解基于 TypeScript 实现了 IoC,希望能给大家提供一些参考。

云音乐搭建平台性能优化实践

2020-11-16
阅读 5 分钟
2.4k
XRN 平台是云音乐音乐内容组产出的一个可视化的搭建页面平台,通过拖拽组件与设置组件,XRN 可以快速生成同时能在 React Native 与 Web 端渲染的页面。不管是 React Native 端还是 Web 端,我们都期望能够输出高性能的页面,带给用户更好的体验。本文会介绍我们提升页面性能的一些优化实践。以下是一些搭建的页面案例: