Android
文章平均质量分 93
袁国正_yy
疯狂的程序猿,热爱移动互联网
展开
-
KMM 入门(七)处理 HTTP 网络请求
众所周知,一条HTTP请求报文,包含几个重要部分Method、Host、Path及Query、HTTP版本、Headers、Body(主要是POST、PUT)这些内容,Ktor也都支持定义,封装在当中,并在HttpClient的初始化闭包中的子闭包,以及HttpClient的各个扩展方法中,作为最后一个参数的Block参数返回,即可在HttpClient.request或get、post等扩展方法调用的后的闭包中操作HttpClient初始化时,添加闭包,并利用其。...原创 2022-07-27 00:02:18 · 1969 阅读 · 7 评论 -
KMM 入门(六)使用 SQLDelight 操作数据库
数据库在 App 中的作用移动 App 的数据库与 Server 数据库不同,其主要目的是为了缓存一些数据,如:历史消息、数据打点、列表数据缓存等,宗旨都是为优化用户体验建立一套简单的数据基础由于 SQLite 完全开源,且比较轻量(不需要像 MySQL 这样建立一个单独的进程,直接操作 DB 文件),目前,在各类移动端操作系统(包括不限于 Android、iOS、Windows)当中,都会内置 SQLite,以便开发者存取结构化数据于是,围绕 SQLite 展开的开发框架也越来越多,比如:iOS 上原创 2022-02-24 16:45:41 · 4385 阅读 · 10 评论 -
KMM 入门(五)处理多线程
为什么需要在 KMM 中处理多线程?我们使用 KMM,通常是处理和 UI 无关的业务逻辑,所以多数情况是网络请求、数据缓存、文件读写等操作,为了不影响 UI 绘制,这些操作往往都会在异步线程中执行,而 KMM 模块的线程切换,调用方肯定是不应该去管理的,所以需要探索一种在 KMM 中比较靠谱的多线程处理方式可行的多线程切换方式协程(kotlinx-coroutines)Kotlin 协程不依赖于 JVM 实现,可以应用在 Kotlin Native 项目当中,不需要再实现平台差异化代码,且协程开原创 2022-02-24 16:45:36 · 1386 阅读 · 4 评论 -
KMM 入门(四)与依赖库交互
KMM 的依赖类型KMM 的依赖根据平台分为三类,分别是 Common 依赖、Android 依赖、iOS 依赖,其中 Common 依赖顾明思议,是用于通用逻辑的,这种依赖只能使用基于最标准的 Kotlin 底层能力(不可以耦合 JVM、JS)构建例如,在 Android 端上比较常用的 Kotlin Reflect、OkHTTP、GSON、Fresco,在 iOS 上比较常用的 AFNetworking、YYModel 之类的库,都不能直接用在 KMM 模块的 Common 代码库中那么,上面说的原创 2022-02-24 16:45:30 · 2894 阅读 · 5 评论 -
KMM 入门(三)平台差异化实现
文章目录平台差异化代码的使用场景差异化代码的基本实现Demo 及注意点expect & actual 实现方式在 Common 中建立一个 expect 类或 Top-Level 方法完成 actual 实现Android 示例:iOS 示例:注入式实现定义注入实现Android 示例:iOS 示例:平台差异化代码的使用场景由于 KMM 运行在各平台时,实际上是翻译成了各平台专用的库,如:Android 上就会将共享模块编译成 Dalvik Bytecode 然后打包成 AAR 文件,而 iOS原创 2022-02-24 16:45:24 · 4212 阅读 · 14 评论 -
KMM 入门(二)在现有工程中集成 KMM
为什么要在现有工程中集成?直接用 KMM 插件生成的工程不香嘛?为什么还要讲在原有的工程中集成?不香,确实不香!默认工程结构局限性高由 KMM 插件建立的工程,默认使用 Kotlin(*.kts 文件)进行 Gradle 配置,虽然用 Android Studio 新建一个 Android 工程会默认使用 kts,但很多项目现在都还在使用 Groovy,要改回去也需要一定工作量和学习成本默认建立的 iOS 工程使用 Swift UI,目前大多数 iOS App 都会使用代码开发 UI,并没有原创 2022-02-24 16:45:11 · 3960 阅读 · 0 评论 -
KMM 入门(一)简介与基本环境搭建
文章目录什么是KMM?Kotlin Mutiplatform 之间的关系与其他跨平台框架的简单对比KMM 与 Flutter 的基本思路差异成本差异其他业界类似框架跑一个 KMM DemoKMM 工程文件结构什么是KMM?KMM 全称:Kotlin Multiplatform Mobile,是基于 Kotlin 语言进行多平台开发的一套技术框架,它和 Kotlin Native(简称 KN)有一定联系,但 KMM 主要面相移动端开发,即:Android、iOS、Web,而 KN 则主要面相 Linux、原创 2022-02-24 16:44:57 · 21371 阅读 · 8 评论 -
淘宝系App图片为什么在北京电信网络加载这么慢?
欢迎访问我的个人网站:https://coderyuan.com文章目录先讲讲怎么回事不能抓包初步判断是DNS或IPv6问题(其实不是)反馈被逼无奈,只好搞逆向利用LayoutInspector找到ImageView探究一下TNodeImageView的源码尝试修改Smali——放弃编写Xposed插件,抓取图片URL利用Xposed进一步研究淘宝的图片加载流程发现ImageLoader分析PhenixCreator捕获图片网络流发现淘宝的网络框架分析ANetwork网络框架首先要把图片的URL抓出来尝试原创 2020-05-26 13:20:12 · 4077 阅读 · 0 评论 -
Kotlin编码规范
欢迎访问我的个人网站:https://coderyuan.com文章目录1 介绍2 源文件规范2.1 文件编码2.2 文件命名2.3 特殊字符2.3.1 空格2.3.2 特殊转义字符2.3.3 非ASCII字符2.3.4 文件结构2.3.4.1 版权/许可证2.3.4.2 文件级注解2.3.4.3 Package声明语句2.3.4.4 Import语句2.3.4.5 顶级(Top-Level)定...原创 2019-09-24 17:25:37 · 1349 阅读 · 2 评论 -
修改Android源码,解放HTTPS抓包
文章目录为什么HTTPS不能抓包了?如何解决这一问题?基本的几个思路寻求一个适合自己的办法如何改Android源码准备工作分析源码修改相关源码刷机验证为什么HTTPS不能抓包了?Google在Android 7.0以后的版本中,添加了“网络安全配置(Network security configuration)”的相关配置项。其旨在增强App的安全性,可以避免TargetSDK版本>=N...原创 2019-09-23 17:26:23 · 2958 阅读 · 6 评论 -
优化Android Studio在AMD 2990WX上的编译速度
文章目录由来了解一下牛逼的架构内存访问的不足NUMA推测&调优查到一篇官方资料了解JVM调优参数Android Studio调优Gradle调优Java Compiler、Kotlin Compiler、Android Compiler调优其他优化选择合适的JRE相对独立Module操作系统总结由来一个月前,剁手了AMD Ryzen Threadripper 2990WX(官网),这个...原创 2018-11-02 17:13:16 · 3132 阅读 · 12 评论 -
小试Flutter
Flutter是什么环境搭建运行一个Demo使用Flutter进行APP开发Dart程序入口(Entry Point)组件(widget)布局(Layout)输入(Input)图像(Assets、Images、Icons)样式(Styling)异步(Async)特别的UI组件库其他组件总结Flutter是什么我觉得可以理解为Google做的Re...原创 2018-07-17 10:42:16 · 1740 阅读 · 0 评论 -
Android P非SDK的隐藏API调用检测
为什么要检测?Google在2018年的I/O大会上发布了Android P的Developer Preview 2(简称DP2)版本,其中还说明了在以后的Android P上,将对非SDK API的调用进行限制。目前,开发者对于非SDK API的调用,只能采取反射或JNI间接调用的方法进行调用。由于Android是开源的,所以开发者对非公有SDK的调用十分混乱,Google此举也是为了进一步...原创 2018-05-29 14:24:05 · 8679 阅读 · 9 评论 -
Smali基础知识
Smali是什么?简介Smali是用于Dalvik(Android虚拟机)的反汇编程序实现,汇编工具(将Smali代码汇编为dex文件)为smali.jar,与之对应的baksmali.jar则是反汇编程序(下载地址),官方所说的基于Jasmin/dedexer语法,实际根不知道是什么鬼……Smali支持注解、调试信息、行数信息等基本Java的基本特性,可以说是很接近Java编译在...原创 2018-05-29 11:22:39 · 61345 阅读 · 25 评论 -
浅析Android的Context
欢迎访问我的个人网站:https://coderyuan.comContext是Android App中用的非常多的一种概念,常被翻译成上下文,这种概念在其他的技术中也有所使用,无意间点了Context的源码,那么就来分析分析Context在Android中到底是什么东西?先贴段代码/** * Interface to global information about an ...原创 2018-04-23 16:28:04 · 8138 阅读 · 0 评论 -
Android启动速度优化
欢迎访问我的个人网站:https://coderyuan.com最近做了一些Android App启动速度的优化,有一些心得,整理整理影响启动速度的原因高耗时任务数据库初始化、某些第三方框架初始化、大文件读取、MultiDex加载等,导致CPU阻塞复杂的View层级使用的嵌套Layout过多,层级加深,导致View在渲染过程中,递归加深,占用CPU资源,影响Me...原创 2018-04-23 16:20:54 · 21352 阅读 · 6 评论 -
使用Gson结合泛型类灵活解析JSON数据
一般比较规范的后端JSON返回数据,会遵循一些指定的JSON格式,比如:错误:{ "status": -1, "data": null, "err": "not_found"}正确:{ "status": 0, "data": { "price": 4, "name": "脉动", "type":原创 2016-01-07 16:41:03 · 21528 阅读 · 2 评论