注册
环信即时通讯云

环信即时通讯云

单聊、群聊、聊天室...
环信开发文档

环信开发文档

环信FAQ

环信FAQ

集成常见问题及答案
RTE开发者社区

RTE开发者社区

汇聚音视频领域技术干货,分享行业资讯
技术讨论区

技术讨论区

技术交流、答疑
资源下载

资源下载

收集了海量宝藏开发资源
iOS Library

iOS Library

不需要辛辛苦苦的去找轮子, 这里都有
Android Library

Android Library

不需要辛辛苦苦的去找轮子, 这里都有
0
评论

WindowInspector(窗口检查器)出来两年了,还不了解?!! Android WindowInspector

柳天明 发表了文章 • 1152 次浏览 • 2021-07-06 16:54 • 来自相关话题

前言这个知识点,出来两年了,现在在网上搜索,没有看到相关分享。一个非常好用的Api,Android 10 才增加的,解决悬浮窗口的一个痛点,下面把我的经验跟大家分享一下,希望大能够受用。悬浮窗口的痛点(View is attach)为什么说 “View is ... ...查看全部
0
评论

为什么我推荐你用ViewBinding 替换findViewById? ViewBinding

王二蛋和他的张大花 发表了文章 • 958 次浏览 • 2021-07-06 16:51 • 来自相关话题

为什么推荐你使用ViewBinding 替换findViewById 和 ButterKnife ? 因为太爽了,太上头了。 用过一次就爱上了,再也不想回去。真心的。不信你看下文! 定义 ViewBinding 是google推出Jetpack库的一个... ...查看全部
0
评论

安卓进阶二: 这次我把ARouter源码搞清楚啦! 组件化 路由

柳天明 发表了文章 • 1289 次浏览 • 2021-07-05 17:03 • 来自相关话题

四. ARouter 注解处理器:arouter-compilerARouter 生成路由信息代码利用了注解处理器的特性。 arouter-compiler 就是注解处理代码模块,先看看该模块的依赖库//定义的注解类,以及相关数据实体类 i... ...查看全部
0
评论

安卓进阶二: 这次我把ARouter源码搞清楚啦! 组件化 路由

柳天明 发表了文章 • 2059 次浏览 • 2021-07-05 17:02 • 来自相关话题

随着面试和工作中多次遇到ARouter的使用问题,我决定把ARouter的源码从头到尾理一遍。 让我瞧瞧你到底有几斤几两,为啥大家在项目组件化中都用你做路由框架。前言在开发一个项目的时候,我们总是希望架构出的代码能够自由复用,**自由组装。**实现业务模块的范... ...查看全部
0
评论

【带着问题学】协程到底是怎么切换线程的? 协程 kotlin

柳天明 发表了文章 • 770 次浏览 • 2021-07-05 16:59 • 来自相关话题

前言之前对协程做了一个简单的介绍,回答了协程到底是什么的问题,感兴趣的同学可以了解下:【带着问题学】协程到底是什么?通过上文,我们了解了以下内容1.kotlin协程本质上对线程池的封装2.kotlin协程可以用同步方式写异步代码,自动实现对线程切换的管理这就引... ...查看全部
0
评论

你真的懂android通知消息吗? 本地通知 Android

柳天明 发表了文章 • 890 次浏览 • 2021-07-05 16:57 • 来自相关话题

概览通知是 android 系统存在至今为止被变更最为频繁的 api 之一,android 4.1、4.4、5.0、7.0、8.0 都对通知做过比较大的改动。到了 8.0 通知功能趋于稳定,至今没有做过更大的改动。对一个 api 进行如此大的照顾那么这必然是个... ...查看全部
0
评论

如何规范的进行 Android 组件化开发? 组件化 Android

柳天明 发表了文章 • 882 次浏览 • 2021-07-05 16:55 • 来自相关话题

正文进行组件化开发有一段时间了,不久后就要开始一个新项目了,为此整理了目前项目中使用的组件化开发规范,方便在下一个项目上使用。本文的重点是介绍规范和项目架构,仅提供示例代码举例,目前不打算提供示例Demo。如果你还不了解什么是组件化以及如何进行组件化开发的话,... ...查看全部
0
评论

okhttp文件上传失败,居然是Android Studio背锅?太难了~ okhttp Android AndroidStudio

柳天明 发表了文章 • 866 次浏览 • 2021-07-05 16:50 • 来自相关话题

1、前言本案例是我本人遇到的真实案例,因查找原因的过程一度让我崩溃,我相信不少人也遇到过相同的问题,故将其记录下来,希望对大家有帮助,本案例使用RxHttp 2.6.4 + OkHttp 4.9.1版本,当然,如果你使用Retrofit等其它基于OkHttp封... ...查看全部
0
评论

iOS逆向必须了解的logos语法 iOS开发

zuyu 发表了文章 • 1231 次浏览 • 2021-07-05 11:21 • 来自相关话题

一、概述Logos语法其实是CydiaSubstruct框架提供的一组宏定义。便于开发者使用宏进行HOOK操作。语法简单,功能强大且稳定,它是跨平台的。[logos] http://iphonedevwiki.net/index.php/Logos二... ...查看全部
0
评论

iOS逆向需要了解的OpenSSH iOS开发

zuyu 发表了文章 • 1495 次浏览 • 2021-07-05 11:15 • 来自相关话题

这两个源比较有名,推荐添加。然后在搜索中搜索apt.bingner.com。当然直接添加这个源也可以。电脑(客户端)请求连接手机(ip:22)。手机(服务端)将公钥发送给mac电脑通过收到的公钥加密登录密码。手机利用私钥解密登录密码,返回是否登录成功。上面的登... ...查看全部
0
评论

iOS砸壳 iOS开发

zuyu 发表了文章 • 1927 次浏览 • 2021-07-05 10:40 • 来自相关话题

一、砸壳软件脱壳,顾名思义,就是对软件加壳的逆操作,把软件上存在的壳去掉(解密)。1.1 砸壳原理1.1.1 应用加壳(加密)提交给Appstore发布的App,都经过官方保护而加密,这样可以保证机器上跑的应用是苹果审核过的,也可以管理软件授权(企业包默认情况... ...查看全部
0
评论

android(6大布局) 布局

王二蛋和他的张大花 发表了文章 • 794 次浏览 • 2021-07-03 09:54 • 来自相关话题

LinearLayout(线性布局) RelativeLayout(相对布局) TableLayout(表格布局) FrameLayout(帧布局) FrameLayout的属性很少就两个,但是在说之前我们先介绍一个东西: 前景图像:永远处于帧布局最上面... ...查看全部
0
评论

Android四大组件的启动分析与整理(二):Service的启动过程 四大组件

王二蛋和他的张大花 发表了文章 • 828 次浏览 • 2021-07-03 09:42 • 来自相关话题

前言 换工作后,一直忙,没时间整理,逼自己一把吧,目标一周整理出来,理顺思路,这里先起个头。 service的启动过程分两种,一种是直接start,另一种是bind;我们先来分析第一种,直接start过程要简单的多。一样,先分析源码,然后一幅图总结: st... ...查看全部
0
评论

Android四大组件的启动分析与整理(一):Activity的启动过程 四大组件

王二蛋和他的张大花 发表了文章 • 857 次浏览 • 2021-07-03 09:27 • 来自相关话题

前言 换工作后,一直忙,没时间整理,逼自己一把吧,目标一周整理出来,理顺思路,这里先起个头。 首先Activity的启动分两种,一种是根Activity的启动,另一种是普通Activity的启动,根Activity的启动,从LauncherActivity... ...查看全部
0
评论

【面试官爸爸】来给我讲讲View绘制? View绘制

王二蛋和他的张大花 发表了文章 • 712 次浏览 • 2021-07-02 13:27 • 来自相关话题

前言 迎面走来的一位中年男子,他一手拿着保温杯,一手抱着笔记本电脑,顶着惺忪的睡眼,不紧不慢地走着,不多的几根头发在他头顶自由飞翔。过了一会,他面对着我坐下,放下电脑和保温杯,边揉眉头边对我说 “来面试的?” “对对对” 我赶紧答应 ... ...查看全部
0
评论

Android平台debug完全解析 调试 AndroidStudio

柳天明 发表了文章 • 1154 次浏览 • 2021-07-02 11:42 • 来自相关话题

一:Java程序调试原理:java这种上层语言编译结果是字节码,字节码需要jvm解释执行,那么调试java具体就是和jvm通信的问题,一般IDE中对Java程序的调试功能都是对jdb的包装,关于jvm调试体系网上有很多文章,比如:juejin.cn/post/... ...查看全部
0
评论

Android常见图形绘制方式 UI Android

柳天明 发表了文章 • 840 次浏览 • 2021-07-02 11:40 • 来自相关话题

图形绘制概述Android平台提供丰富的官方控件给开发者实现界面UI开发,但在实际业务中经常会遇到各种各样的定制化需求,这必须由开发者通过自绘控件的方式来实现。通常Android提供了Canvas和OpenGL ES两种方式来实现,其中Canvas借助于And... ...查看全部
0
评论

使用Jetpack Compose完成自定义手势处理 jetpack Android

柳天明 发表了文章 • 914 次浏览 • 2021-07-02 11:38 • 来自相关话题

概述Jetpack Compose 为我们提供了许多手势处理 Modifier,对于常见业务需求来说已足够我们使用了,然而如果说我们对手势有定制需求,就需要具备自定义手势处理的能力了。通过使用官方所提供的基础 API 来完成各类手势交互需求,触摸反馈基础 AP... ...查看全部
0
评论

将构建配置从 Groovy 迁移到 KTS kotlin Android

柳天明 发表了文章 • 1174 次浏览 • 2021-07-02 10:53 • 来自相关话题

将构建配置从 Groovy 迁移到 KTS前言作为Android开发习惯了面向对象编程,习惯了IDEA提供的各种辅助开发快捷功能。那么带有陌生的常规语法的Groovy脚本对于我来说一向敬而远之。Kotlin DSL的出现感觉是为了我们量身定做的,因为采用 Ko... ...查看全部
0
评论

老生新谈,从OkHttp原理看网络请求 okhttp

王二蛋和他的张大花 发表了文章 • 792 次浏览 • 2021-07-02 09:39 • 来自相关话题

OkHttp作为一个网络请求框架,地位是不言而喻的,研究它的好处就在于能够将TCP、HTTP、HTTPS等这些基础的网络知识实例化,抽象变为形象。 读完这篇文章您将了解到: OkHttp的整体请求结构; 责任链模式下各个拦截器的实现细节与职责; ... ...查看全部
0
评论

性能优化一分钟定位Android启动耗时问题 启动耗时

王二蛋和他的张大花 发表了文章 • 933 次浏览 • 2021-07-02 09:36 • 来自相关话题

前言 Tencent Matrix默认无法监测Application冷启动的耗时方法,本文介绍了如何改造Matrix支持冷启动耗时方法监测。让你一分钟就能给App启动卡顿号脉。 1. 接入Tencent Matrix 1.1 在你项目根目录下的 grad... ...查看全部
0
评论

Android APT 系列 (一):APT 筑基之反射 apt Android

柳天明 发表了文章 • 915 次浏览 • 2021-07-01 14:27 • 来自相关话题

前言很高兴遇见你~这又是一个新的系列,灵感来源于最近做的一次布局优化,我们知道:Android 中少量的系统控件是通过 new 的方式创建出来的,而大部分控件如 androidx.appcompat.widget 下的控... ...查看全部
0
评论

Android APT 系列 (二):APT 筑基之注解 apt Android

柳天明 发表了文章 • 811 次浏览 • 2021-07-01 14:24 • 来自相关话题

前言很高兴遇见你~在本系列的上一篇文章中,我们对反射一些常用的知识进行了讲解,还没有看过上一篇文章的朋友,建议先去阅读 Android APT 系列 (一):APT 筑基之反射。接下来我们看下 Java 注解Github Demo 地址 ,... ...查看全部
0
评论

Android APT 系列 (三):APT 技术探究 apt Android

柳天明 发表了文章 • 1020 次浏览 • 2021-07-01 14:23 • 来自相关话题

前言很高兴遇见你~在本系列的上一篇文章中,我们对注解进行了讲解,还没有看过上一篇文章的朋友,建议先去阅读 Android APT 系列 (二):APT 筑基之注解。至此,关于 Apt 基础部分我们都讲完了,接下来就正式进入 APT 技术的学习Github De... ...查看全部
0
评论

Android APT 系列 (四):APT 实战应用 apt Android

柳天明 发表了文章 • 1026 次浏览 • 2021-07-01 14:22 • 来自相关话题

前言很高兴遇见你~在本系列的上一篇文章中,我们对 APT 技术进行了讲解,还没有看过上一篇文章的朋友,建议先去阅读 Android APT 系列 (三):APT 技术探究。接下来,我们就使用 APT 技术来进行实战应用。Github Demo 地址 , 大家可... ...查看全部
0
评论

使用Jetpack Compose完成自定义手势处理 手势 jetpack

柳天明 发表了文章 • 819 次浏览 • 2021-07-01 14:19 • 来自相关话题

概述Jetpack Compose 为我们提供了许多手势处理 Modifier,对于常见业务需求来说已足够我们使用了,然而如果说我们对手势有定制需求,就需要具备自定义手势处理的能力了。通过使用官方所提供的基础 API 来完成各类手势交互需求,触摸反馈基础 AP... ...查看全部
0
评论

Linux - 远程操作 Linux iOS开发

zuyu 发表了文章 • 732 次浏览 • 2021-06-30 19:12 • 来自相关话题

shotdown命令,默认表示1分钟后关机.命令格式:$shutdown [选项] <参数>参数示例一分钟以后关机$shutdown 立刻关机$shutdown now 在今天的21:30关机$shutdown 21:30 10分钟以后关机$s... ...查看全部
0
评论

Linux简介 iOS开发

zuyu 发表了文章 • 933 次浏览 • 2021-06-30 19:07 • 来自相关话题

Linux 内核以及发行版Linux内核(kernel)操作系统内核是指大多数操作系统的核心部分。它由操作系统中用于管理存储器、文件、外设和系统资源的那些部分组成。操作系统内核通常运行进程,并提供进程间的通信。Linux 内核版本又分为 稳定版&nb... ...查看全部
0
评论

汇编-函数本质(下) iOS开发

zuyu 发表了文章 • 1161 次浏览 • 2021-06-30 19:01 • 来自相关话题

函数的返回值一般是一个指针,不会超过8字节。寄存器就完全够用了。如果要返回一个结构体类型超过字节。下面的例子(结构体占用字节):汇编代码:str这里没有使用作为返回值,而是使用了栈空间。8字节,也会保存在栈中返回(上一个函数栈空间)struct str { ... ...查看全部
0
评论

iOS越狱 iOS开发

zuyu 发表了文章 • 2622 次浏览 • 2021-06-30 18:20 • 来自相关话题

一、概述越狱(jailBreak),通过iOS系统安全启动链漏洞,从而禁止掉信任链中负责验证的组件。拿到iOS系统最大权限ROOT权限。iOS系统安全启动链当启动一台iOS设备时,系统首先会从只读的ROM中读取初始化指令,也就是系统的引导程序(事实上所有的操作... ...查看全部
0
评论

什么是库(Library)? iOS开发

zuyu 发表了文章 • 1768 次浏览 • 2021-06-30 18:10 • 来自相关话题

常见库文件格式:.a,.dylib,.framework,.xcframework,.tdb什么是库(Library)?库(Library)本质上就是一段编译好的二进制代码,加上头文件就可以供别人使用。应用场景?某些代码需要给别人使用,但是不希望别人看到源码,... ...查看全部
0
评论

Mac终端快捷键 iOS开发

zuyu 发表了文章 • 1669 次浏览 • 2021-06-30 17:55 • 来自相关话题

0
评论

Xcode多环境配置 iOS开发

zuyu 发表了文章 • 1123 次浏览 • 2021-06-30 17:52 • 来自相关话题

Xcode多环境配置一共有3种形式:TargetSchemexcconfigProject:包含了项目所有的代码、资源文件、所有信息。(一个项目是多个project的集合)Target:对指定代码和资源文件的具体构建方式。(指定某些代码如何生成ipa包,类似打... ...查看全部
0
评论

llvm优化alloc iOS开发

zuyu 发表了文章 • 938 次浏览 • 2021-06-30 17:42 • 来自相关话题

为什么调用alloc最终调用了objc_alloc?objc源码中探索分析在源码中我们点击alloc会进入到+ (id)alloc方法,但是在实际调试中却是先调用的objc_alloc,系统是怎么做到的呢?可以看到在这个方法中进行了imp的重新绑定将alloc... ...查看全部
0
评论

OC alloc 底层探索 iOS开发

zuyu 发表了文章 • 836 次浏览 • 2021-06-30 17:32 • 来自相关话题

一、alloc对象的指针地址和内存有如下代码://alloc后分配了内存,有了指针。 //init所指内存地址一样,init没有对指针进行操作。 HPObject *hp1 = [HPObject alloc]; HPObject *hp2 = [hp1 in... ...查看全部
0
评论

OC 对象、位域、isa iOS开发

zuyu 发表了文章 • 784 次浏览 • 2021-06-29 17:55 • 来自相关话题

一、对象的本质1.1 clang1.1.1clang 概述Clang是一个C语言、C++、Objective-C语言的轻量级编译器。源代码发布于BSD协议下。 Clang将支持其普通lambda表达式、返回类型的简化处理以及更好的处理constexp... ...查看全部
0
评论

Core Image 和视频 iOS开发

zuyu 发表了文章 • 948 次浏览 • 2021-06-29 17:43 • 来自相关话题

在这篇文章中,我们将研究如何将 Core Image 应用到实时视频上去。我们会看两个例子:首先,我们把这个效果加到相机拍摄的影片上去。之后,我们会将这个影响作用于拍摄好的视频文件。它也可以做到离线渲染,它会把渲染结果返回给视频,而不是直接显示在屏幕上。总览当... ...查看全部
0
评论

使用 Swift 进行函数式信号处理 iOS开发

zuyu 发表了文章 • 943 次浏览 • 2021-06-29 17:40 • 来自相关话题

作为一个和 Core Audio 打过很长时间交道的工程师,苹果发布 Swift 让我感到兴奋又疑惑。兴奋是因为 Swift 是一个为性能打造的现代编程语言,但是我又不是非常确定函数式编程是否可以应用到 “我的世界”。幸运的是,很多人已经探索和克服了这些问题,... ...查看全部
0
评论

Kotlin 源码 | 降低代码复杂度的法宝 源码分析 kotlin

柳天明 发表了文章 • 802 次浏览 • 2021-06-29 15:12 • 来自相关话题

随着码龄增大,渐渐意识到团队代码中的最大的敌人是“复杂度”。不合理的复杂度是降低代码质量,增加沟通成本的元凶。Kotlin 在降低代码复杂度方面有着诸多法宝。这一篇就以两个常见的业务场景来剖析下简单和复杂的关系。若要用一句话概括这关系,我最喜欢这一句:“一切简... ...查看全部
0
评论

Kotlin 协程 | CoroutineContext 为什么要设计成 indexed set?(一) 协程 kotlin

柳天明 发表了文章 • 1044 次浏览 • 2021-06-29 15:09 • 来自相关话题

CoroutineContext是 Kotlin 协程中的核心概念,它是用来干嘛的?它由哪些元素组成?它为什么要这样设计?这篇试着分析源码以回答这些问题。 indexed set 既是 set 又是 map? CoroutineContext的定义如下: /*... ...查看全部
0
评论

Compose Column控件讲解并且实现一个淘宝商品item的效果 compose jetpack Android

柳天明 发表了文章 • 971 次浏览 • 2021-06-28 17:19 • 来自相关话题

前情提要本篇文章主要对 Compose 中的 Column 进行使用解析,文章结束会使用 Column 和 Row 配合实现一个淘宝商品 Item 的效果,最终效果预览:如果您对 Column 的用法比较娴熟,可以直接看最后一节的内容Column 简单说明Co... ...查看全部
0
评论

Android 布局打气筒 (一):玩转 LayoutInflater layoutinflater Android

柳天明 发表了文章 • 1099 次浏览 • 2021-06-25 13:57 • 来自相关话题

前言很高兴遇见你~今天准备和大家分享的是 LayoutInflater,我给它取名:布局打气筒,很形象,其实就是根据英文翻译过来的😂。我们知道气球打气筒可以给气球打气从而改变它的形状。而布局打气筒的作用就是给我们的 Xml 布局打气让它变成一个个 View 对... ...查看全部
0
评论

通俗易懂的Android屏幕刷新机制 vsync Android

柳天明 发表了文章 • 2815 次浏览 • 2021-06-25 13:56 • 来自相关话题

前言我们买手机的时候经常听说这个手机多少多少HZ刷新率。目前手机大多都是60HZ,现在有的手机都到144HZ的高刷新率了。这个刷新率指标是干什么的呢?屏幕又是如何将数据显示到Android手机屏幕上的呢?玩游戏时的卡顿是怎么形成的? 基于对这些问题的好奇,小研... ...查看全部
0
评论

OpenGL ES 文字渲染 OpenGL ES OpenGL

柳天明 发表了文章 • 1406 次浏览 • 2021-06-25 13:54 • 来自相关话题

在音视频或 OpenGL 开发中,文字渲染是一个高频使用的功能,比如制作一些酷炫的字幕、为视频添加水印、设置特殊字体等等。实际上 OpenGL 并没有定义渲染文字的方式,所以我们最能想到的办法是:将带有文字的图像上传到纹理,然后进行纹理贴图。本文分别介绍下在应... ...查看全部
0
评论

Andorid进阶二:LeakCanary源码分析,从头到尾搞个明白 leakCanary Android

柳天明 发表了文章 • 953 次浏览 • 2021-06-24 16:55 • 来自相关话题

四,ObjectWatcher 保留对象检查分析我们转到 ObjectWatcher 的 expectWeaklyReachable 方法看看@Synchronized override fun expectWeaklyReachable( watched... ...查看全部
0
评论

Andorid进阶一:LeakCanary源码分析,从头到尾搞个明白 leakCanary Android

柳天明 发表了文章 • 2016 次浏览 • 2021-06-24 16:54 • 来自相关话题

"内存优化会不会?知道怎么定位内存问题吗?"面试官和蔼地坐在小会议室的一侧,亲切地问有些拘谨地小张。"就是...那个,用LeakCanary 检测一下泄漏,然后找到对应泄漏的地方,把错误的代码改一下,没回收的引用回收掉,优化下长短生命周期线程的依赖关系吧""那... ...查看全部
0
评论

Android Compose 初探! jetpack compose Android

柳天明 发表了文章 • 2182 次浏览 • 2021-06-24 16:53 • 来自相关话题

使用前的准备工作android studio Arctic Fox版本或更新的版本如果是一个新项目,可以在创建的时候,新建一个Empty Compose Activity在module的build.gradle文件中添加android { buildF... ...查看全部
0
评论

[译] R8 优化:字节码常量操作 字节码操作 Android

柳天明 发表了文章 • 839 次浏览 • 2021-06-23 15:03 • 来自相关话题

1. Log Tags(日志标签)关于在类中定义标记字符串的最佳方法,有一个正在进行的争论(如果您甚至可以这样称呼它的话)。历史上有两种策略:字符串文本和对类调用 getSimpleName()。private static final String TAG ... ...查看全部
0
评论

CocoaPods 都做了什么 iOS开发

zuyu 发表了文章 • 892 次浏览 • 2021-06-23 15:01 • 来自相关话题

稍有 iOS 开发经验的人应该都是用过 CocoaPods,而对于 CI、CD 有了解的同学也都知道 Fastlane。而这两个在 iOS 开发中非常便捷的第三方库都是使用 Ruby 来编写的,这是为什么?先抛开这个话题不谈,我们来看一下 CocoaPods ... ...查看全部
0
评论

kotlin 协变、逆变 - 猫和鱼的故事 kotlin Android

柳天明 发表了文章 • 932 次浏览 • 2021-06-23 15:01 • 来自相关话题

网上找的一段协变、逆变比较正式的定义:逆变与协变用来描述类型转换后的继承关系,其定义:如果 A、B 表示类型,f(⋅) 表示类型转换,≦ 表示继承关系(比如,A≦B 表示 A 是由 B 派生出来的子类): 当 A ≦ B 时,如果有 f(A) ≦ f(B) ,... ...查看全部