Debug 工具之 JDB
前言
夏虫不可语于冰
AOSP 调试工具 JDP 使用文档一、概述JDP(Java Debugger Protocol)是一种基于 JDWP(Java Debug Wire Protocol) 的调试协议,广泛应用于调试 Android Framework 和 SystemServer 进程。JDP 可通过 jdb、Android Studio 或 IDEA 等调试工具连接至目标虚拟机,实现设置断点、单步调试、查看堆栈、变量等功能。
在 AOSP(Android Open Source Project)开发中,利用 JDP 可以定位 SystemServer 中服务的初始化问题、Binder 调用异常等系统级问题。
二、JDP/JDWP 调试前提
已开启 ro.debuggable=1。
目标进程支持 JDWP(SystemServer 默认支持)。
可通过 ADB 通信。
主机和设备间端口转发已配置。
三、连接调试步骤(以 SystemServer 为例)步骤 1:确保设备开启调试模式12adb rootadb remount
确认 ro.debuggabl ...
离别2024
前言
烟火人间,各有遗憾。
生活 过得并不好,相当糟糕。 今年是颠沛流离的一年,过年完3月来到深圳,没多久来到重庆,后面离开重庆去贵阳呆了一个星期,8月7日又回到了深圳。期间差点去江苏、宁夏。 体重,有段日子瘦了17斤,后面在深圳又涨回来还胖了10斤,现在已经190了。
学习 学习这件事,我没有做好坚持。 打了2个月的英语单词卡,后面丢之脑后,不管什么理由,都是借口。 LeetCode的打卡,github 的打卡,我也没有坚持。 看了几个月的网工,自己没刷题,没继续复习下去,报了名却没有去参加考试。 唯一值得称赞的是,敲代码这件事比去年多了很多,也专业了很多。在Android,后端,都有输出产品,也写了几篇文章。
工作 工作变动比较大,先从老东家离开,在重庆工作了一段时间,最终来到了HCN。 在 FS,虽然工作时间很短,但做了很多事情,我的组长,周哥教会了我 ...
葬送的芙莉莲
前言
待我翻过这座山,再与你讲我的不堪
偏向-陈子晴
这并不像 道听途说的假象
也无妨 让回忆肆意增长
不谦让 争了个理所应当
怎么样 落一个两败俱伤
你可以说我性格张扬
全都一样 迁就或推推搡搡
别伪装 一副道貌岸然的模样
快点忘 自欺欺人的扫荡
称不上 大方或性格张扬
为何会两败俱伤
我嫌弃你的偏向
会让我觉得有点丧
避开你流露出的锋芒
别跟我斤斤计较
算旧账
我嫌弃你的偏向
瞎话编得冠冕堂皇
掩饰不了你做的假象
像被隐形绳子捆绑
逞着强
全都一样迁就或推推搡搡
别伪装 一副道貌岸然的模样
快点忘 自欺欺人的扫荡
称不上 大方或性格张扬
为何会两败俱伤
我嫌弃你的偏向
会让我觉得有点丧
避开你流露出的锋芒
别跟我斤斤计较
算旧账
我嫌弃你的偏向
瞎话编得冠冕堂皇
掩饰不了你做的假象
像被隐形绳子捆绑
逞着强
夜生活
前言
他教我收余恨,免娇气,且自新,改性情,休恋逝水,苦海回身,早悟兰因
年年岁岁,岁岁年年,每当有了闲暇时间,生活作息就会紊乱,常常一个人半夜不睡觉,不知道在干什么。
以前不理解大人们为什么会失眠,觉得世上哪有过不去的坎,后来我也变成了这样的人。从什么时候开始的呢?大概是从疫情那年开始的,以前也会熬夜,但不至于那么凶。熬夜是不好的,时常肝痛和心悸总是提醒着我。但我一到晚上就不想睡觉,也睡不着。最近反复刷了一下”老友赛“的辩论赛《熬夜是现代人的病还是药》,其中有句话深深刺中了我:人为什么要喝酒?因为不喝酒的时候不快乐,你说我为什么要熬夜,因为我的生活是空虚。那我问你,你为什么不在白天去填补你的空虚呢?因为很简单,因为白天的时间不属于你…..这一切的原因都来自于我没有办法找到我的意义,我不得不用这种办法来延缓我的痛苦。
白天于我,是让我不得不带上面具,去面对生活中的糟心事儿的痛苦。而晚上于我是可以躺在床上,可以什么都不想,也可以什么都想的自由。我能自由地支配我的时间,享受夜晚的宁 ...
Android之Apk优化
APK 瘦身指南前言
千里之堤,溃于蚁穴
快速诊断始终使用 Android Studio 中的 APK Analyzer 对生成的 APK 进行分析处理对比(Build -> Analyzer apk.. 或者直接使用 Android Studio 打开 apk 文件),一个 apk 文件大致内容如下:
文件
说明
扩展
lib
so文件,不同的cpu架构
可以针对不同架构平台进行拆分打包或者使用兼容库
res
编译后的资源文件,drawable、layout等
优化的重点
assets
应用程序的资源、字体、音视频文件等
可使用工具进行优化
classes(n).dex
dx编译后的java文件
使用混淆进行优化
META-INF
签名信息相关
——
resources.arsc
二进制资源文件
资源的映射表,可以查询任意类型的资源id
kotlin
编译后的kotlin文件
——
AndroiidManifest.xml
清单文件
——
优化方向总共分为两部分,资源优化(本文重点)和代码优化(进阶)
资源优化一、 移除无用资源 ...
IDEA开发配置更新
gradle 国内镜像distributionUrl=https://mirrors.cloud.tencent.com/gradle/gradle-7.2-all.zip
1234567891011121314151617181920212223242526272829-Xms8192m-Xmx8192m-XX:NewSize=4096m-XX:MaxNewSize=4096m-XX:MaxMetaspaceSize=512m-XX:ReservedCodeCacheSize=512m-XX:+UseG1GC-XX:SoftRefLRUPolicyMSPerMB=50-XX:CICompilerCount=2-XX:+HeapDumpOnOutOfMemoryError-XX:-OmitStackTraceInFastThrow-XX:+IgnoreUnrecognizedVMOptions-XX:CompileCommand=exclude,com/intellij/openapi/vfs/impl/FilePartNodeRoot,trieDescend-ea-Dsun ...
Handler通信机制
前言
喜欢就争取 得到就珍惜 错过就忘记
参考博客
Carson带你学Android-Android异步通信:手把手教你使用Handler消息传递机制(含实例讲解)
奶盖-面试被问Handler 的通信机制的背后的原理是什么?95%的人都没完全理解
Android之Handler消息机制——深入理解 Looper、Handler、Message、MessageQueue
临时抱佛脚:IdleHandler的原理分析和妙用
Handler同步屏障机制的原理和使用场景
本文中的所有内容大部分来源于网络资料,如有侵权请联系本人修改或删除,请大家多多支持原创!非常感谢!
HandlerHandler机制简介 Android的UI框架基于事件驱动,所有与界面相关的操作必须在主线程(也称为UI线程)中执行。这是由于Android的UI框架不是线程安全的,即多个线程同时操作UI可能引发各种问题,例如UI元素的状态不一致、布局错乱、甚至崩溃等。故多线程可并发操作UI组件,则出现了Handler。Handler是一套Android消息传递机制& ...
浅谈四大组件通信
Activity
一个Activity通常就是一个单独的屏幕(窗口)
Activity之间通过Intent进行通信
android应用中每一个Activity都必须要要在AndroidManifest.xml配置文件中声明,否则系统将不识别也执行该Activity。
Service
service用于在后完成用户指定的操作。service分为两种:
service(启动):当应用程序组件(如activity)调用startService()方法启动服务时,服务处于started状态。
bound(绑定):当应用程序组件调用bindService()方法绑定到读物时,服务处于bound状态
startService()和bindService()区别:
started service(启动服务) 是由其他组件调用startService()方法启动的,这导致服务的onStartCommand()方法被调用。当服务是started状态时,其生命周期与启动它的组件无关,并且可以在后台无限期运行,几遍启动服务的组件已经被销毁。因此,服务需要在完成任务后调用stopSe ...
使用官方APi获取Youtube视频资源
YoutubeAPI 快速入门本教程需要外网环境。
本教程参考一下博客:
使用Youtube Data API 抓取有趣的Youtube影片
Java解析JSON的四种方式
使用Youtube官方API获取频道及视频数据
Android中解析json数据的三种方式
申请 API Key
首先去开发者平台申请API Key,第一次登录需要简单注册一下,然后创建一个新的项目,创建完成后,点击控制台。
然后搜索 youtube api v3
接着创建并启用此API
回到控制台可以查看已启用API的密钥
开发者文档 在使用之前可以先看一下YoutubeAPI官方的开发文档,地址为:YoutubeAPI官方文档这里的文档介绍的特别详细,还可以在线测试接口,生成代码示例,非常好用。
右侧就是测试接口返回的数据,对面板中的请求参数,在文档中都可以搜索出来,并且有详细的介绍和实时生成代码示例。
数据处理本示例采用的是原生态json数据处理工具,因所需数据简单,未采用第三方解析json工具。解析简单的数据只需要记得{}中的是对象用jsonObject承接, ...
MVC-三层架构简介
前序
慢慢理解世界,慢慢更新自己
参考博客
黑洞晓威 深入MVC模式和三层架构
本文中的所有内容大部分来源于网络资料,如有侵权请联系本人修改或删除,请大家多多支持原创!非常感谢!
MVCMVC 基本模型 MVC(Model-View-Controller)是一种软件设计模式,旨在将应用程序分为三个主要组成部分:模型(Model)、视图(View)和控制器(Controller)。以下是MVC 模型的基本概念和职责的总结:
模型(Model):
定义数据和业务逻辑: 模型表示应用程序的数据和业务逻辑。它包括应用程序的数据结构、数据库连接、以及对数据的操作和更新方法。
独立于用户界面: 模型是与用户界面无关的部分,它专注于处理应用程序的数据和业务规则。
视图(View):
负责显示用户界面: 视图负责显示用户界面,向用户呈现数据。它通常包含用户看到和与之交互的元素,如按钮、文本框等。
观察模型的变化: 视图观察模型的变化,以便及时更新用户界面。
控制器(Controller):
处理用户输入: 控制器负责处理用户的 ...