- 博客(325)
- 资源 (12)
- 收藏
- 关注
原创 ASPECT 架构决策框架
审查包括:敏感 API(如 GAID/IDFA)的读取时机、干扰性广告(Disruptive Ads)的触发逻辑、CMP 隐私合规弹窗的挂起等,彻底杜绝下架和封退款账户风险。监控诸如:归因时效耗时分位(P50/P90/P99)、引荐来源空码率(Null Rate)、客户端与服务端 S2S 的不一致率(Mismatch Rate)等,一有异常立刻自动告警。:千万级 DAU 出海增长项目时,为了将技术研发、合规红线与商业变现(LTV/ROI)深度结合,而推行的一套研发全生命周期的核心决策模型。
2026-08-29 15:55:03
219
原创 Firebase device.advertising_id 总结
学习和总结 了一下 Firebase device.advertising_id 它不是普通事件参数,而是 Firebase/GA 自动采集并导出到 BigQuery 的设备字段,有值需要同时满足下面几层条件。Firebase/Google Analytics 后台必须满足:。Firebase Analytics 本身必须处于启用状态:。3. Firebase Analytics 采集状态。下面这个不是正确的 GAID 权限:。在 BigQuery 中对应:。没有勾选时可能出现:。
2026-08-15 11:29:37
277
原创 Firebase Spark(免费方案) 与 Blaze(按用量付费方案)
Firebase Spark(免费方案) 与 Blaze(按用量付费方案) 在事件处理、数据存储、 BigQuery 导入及计费规则上的核心差异,梳理为以下完整的对比手册:这是您当前项目最核心的业务需求,两者差异最为明显:事件种类:两个方案均限制最多创建 500 个自定义事件名称。事件总量:GA4 端收集事件总量均无上限,且完全免费。升级到 Blaze 方案后,Spark 方案原有的免费额度依然保留,您只需为超出免费层级的资源付费:• 存储:1 GB• 读取:5万次/天• 写入:2万次/天• 存储:约 $0
2026-08-06 15:58:35
332
原创 GP 审核策略学习
处理了一个发布“商店详情”更新被拒的过程,发现APP版本3天前过审且发布,但是发布“商店详情”却被连带评审代码,被拒,这种操作还是比较少见的。:Google Play 后台不只是单独审查你新提交的文字或图片,而是会对“当前生效的版本安装包 + 隐私政策 + 数据安全表单 + 商店详情”进行一次整体合规校验。:在 7月20日提交“商品详情”时,系统系统核查到绑定的 110 版本存在尚未解决的“数据表单违规”,因此直接拦截了这次发布,将其作为导火索报出了拒绝邮件。但在随后的几天里,Google 的。
2026-07-25 18:44:36
258
原创 Cursor token 消耗分析 和优化策略
从你分享的表格数据来看,核心问题非常直观:Cache Read(最高的一行达到了 7,970 万 Token),这直接导致了飙升,从而产生了极高的单次/单会话成本(最高一笔达到了 $187.37)。虽然在 LLM 供应商的计费中,Cache Read通常比普通的便宜 90% 左右,但当基数膨胀到几千万甚至近亿级别时,折扣也救不了总价。
2026-07-11 17:08:03
799
原创 如何写好 Skills
Skills. description: 是入口,不是宣传文案。把用户可能说的话放前面,把边界写清楚,把不该触发的场景拍非除掉。CC 和Codex等Agents的工具名、权限模型、路径习惯并不完全一样,迁移时就容易断带。放进脚本以后,Skill只需要告诉Agent什么时候运行、如何解释结果、失败时怎么处理。比如统计字数、扫描目录、校验JSON、转换文件格式、生成图表、检查链接。测试和迭代:如果Skill没被想起,优先改description。这些任务交给模型做,既浪费上下文,也容易出错。
2026-05-30 11:38:41
251
原创 Codex 基本应用
这段时间 在用Codex + GPT5.5, 整体感觉很不错的,尤其一些命令比较方便,梳理一些常用的命令。只要是了解 apk 的结构和编译过程,就可以它自主安装工具一步一步逆向个七七八八。另外 用它 反编译了一下 竞品的 apk ,效果着实让我小震惊了一下。先/init,让Codex 了解 项目代码,生成。分析局部任务用/mention。/status,确认状态。再次使用/resume。临时问一句用/side。想试新路线用/fork。提交前/review。改完必须/diff。大任务先/plan。
2026-05-30 10:34:45
349
原创 海外合规 - 自定义和Google UMP 区别
明确告知用户数据的处理目的(广告追踪、个性化推荐等)获取明确的 opt-in 同意(不是 "I Understand",而是 "I Agree" + 可以拒绝)用户可以随时撤回同意你能记录和证明用户给过同意如果你的自定义弹窗做到了上面这些,从法律角度看是合规的,不一定非要用 UMP。这是核心差异所在。问题不在于弹窗长什么样,而在于弹窗产生的"结果"——同意信号。Google UMP 弹窗做了一件你的自定义弹窗做不了的事:它会按照 IAB TCF 标准,自动写入。
2026-03-17 12:18:29
364
原创 IAA业务全链路ROAS增长指标体系
本体系以为北极星指标。投放带来的→经受住考验 → 沉浸于→ 形成高→ 通过广告→ 赚到的钱再次投入。通过的精准投放与反作弊控制;依托的技术稳定性与的深度交互,最大限度减少过程流失并;利用的精细化触达体系召回用户以延长;最终在通过精细化瀑布流管理提升,实现收益最大化。
2026-01-31 10:24:33
1576
原创 Android · AdMob 聚合变现体系
根据2026行业趋势,融入AI/ML辅助调度、隐私合规(如ATT/GAID/AAID限制、GDPR/CCPA扩展)、混合变现模型(IAA+IAP+订阅)、跨平台兼容(Android+iOS统一调解)、新兴广告形态(如Playable/Shoppable Ads)和全球监管变化(如欧盟DMA、美国隐私法)。确保框架支持可持续增长,目标ARPDAU提升15-25%。
2026-01-31 10:22:39
1319
原创 Google Play 要求适配16K size 警告未消失
Google Play 要求 11月 1日之前 完成 SO 的 16K size 的适配,通过官网链接学习了一下如何验证和适配整个工作。需要 升级 mmkv 2.x降级为1.3.14 支持16 page size。但是警告未消除,可能是未全量 正式轨迹的问题。等待全量后 警告消失。适配版本必须发布在 正式轨迹的问题,且全量后 警告消失![主包] 需要 so 重新编译解决 【done】OA 删除不用,其他包升级2.6->2.7。
2025-10-28 10:21:04
636
原创 弹出&通知权限和样式梳理
如果用户通过备份和恢复操作将应用数据转移到搭载 Android 14 的设备,则该权限仍然会被拒绝。用户不需要在运行时明确授予此权限(声明即可使用),但系统会根据应用类型、用户行为等因素动态控制其实际效果。没有此权限声明,高优先级通知在锁屏上的行为会受到限制。作用: 允许通知以更显眼的方式打断用户,特别是在锁屏界面。作用: 允许应用在其他应用或系统界面上方绘制窗口(悬浮窗)。精确闹钟适用于用户指定的通知,或是在确切时间需要执行的操作。影响: 没有此权限,应用完全无法向系统发送任何通知。
2025-07-29 14:39:14
1053
原创 Google检测无效点击的几种方法
通常来说,Google 不会马上封掉你的帐户,他们会把你的帐户标记起来并进行特别监视,有时候还会给你寄警告信。不要在网站上加上任何”请点击此广告”的字眼,别以为用图片来鼓励就没事,人家 Google 会有人时不时来你的网站看看。Google 有很好的追踪技术,他们能把流量的来源追踪至不起眼的小镇,使用不同IP的两台电脑并不保证你能作弊成功。如果点击广告的人跟登录你 AdSense 帐户的人有着相同 IP,你的帐户就会被监视。如果你的网站没有被任何搜索引擎收录,也没有权威的反向链接,你哪里得来如此高的流量?
2025-05-30 14:39:21
711
原创 Binder 治理 减少ANR
在 Android 中,**Binder 调用**是跨进程通信(IPC)的核心机制,几乎所有与系统服务(如 `ActivityManagerService`、`WindowManagerService` 等)的交互都会触发 Binder 调用。- **合并请求**:将多个 Binder 调用合并为批量操作(如 `getInstalledPackages()` 代替多次 `getPackageInfo()`)。
2025-03-05 14:55:40
863
原创 Android 稳定性优化总结
应用稳定性是最重要的性能指标之一,是APP质量构建体系中的基本盘,如果应用的稳定性出现问题,对产品、用户造成的伤害将是致命的。本文将从以下几个方面对应用稳定性优化进行整理。需要说明,广义的稳定性不仅仅是崩溃问题,还包括卡顿、耗电、温度等指标,本文主要从崩溃率的角度进行学习。稳定性常见指标分类:业界用来衡量稳定性的常见指标,稳定性优秀的衡量标准。处理Crash的一般步骤:发生Crash时常规的处理步骤。业务高可用性建设:在维护一整块业务时,为了防止出现稳定性问题,所采用的手段。
2025-02-07 13:55:39
1589
原创 AI编程助手
AI编程助手在国际市场上,GitHub Copilot 成为一枝独秀,JetBrains AI、Codium 也紧追不放。开发者们获得了数倍的效率提升。而在国内市场,各大厂商也纷纷投入资源,大力推出自家的平替工具。比如: Baidu Comate、智谱CodeGeeX、阿里通义灵码、腾讯云 AI 代码助手、华为CodeArts Snap、讯飞iFlyCode、商汤代码小浣熊,这些助手对于编程提效是实实在在的,企业如果抛开代码安全的考虑,工程师使用这些工具可以极大的提升开发效率。
2025-01-23 16:36:23
286
原创 Android system.log 意义
Log名称 作用 获取命令 system.log 包含ANR发生时间点信息、ANR发生前的CPU信息,还包含大量系统服务输出的信息 adb logcat –b system main.log 包含ANR发生前应用自身输出的信息,可供分析应用是否有异常;此外还包含输出的GC信息,可供分析内存回收的速度,判断系统是否处于低内存或内存碎片化状态 adb logcat –b main event.log 包含AMS与WMS输出的应用程序声明周期信息,可供分析窗口
2025-01-15 10:19:19
308
原创 深入探索Android稳定性优化
重在预防、监控必不可少思考更深一层、重视隐含信息:如解决Crash问题时思考是否会引发同一类问题长效保持需要科学流程优点:比较灵活,预先分配好资源,成功率也比较高。缺点:实现非常复杂重在预防:重视应用的整个流程、包括开发人员的培训、编译检查、静态扫描、规范的测试、灰度、发布流程等不应该随意使用try catch去隐藏问题,而应该从源头入手,了解崩溃的本质原因,保证后面的运行流程。解决崩溃的过程应该由点到面,考虑一类崩溃怎么解决。崩溃与内存、卡顿、I/O内存紧密相关。
2024-12-16 10:47:08
1640
原创 Baseline Profiles 在 Compose 中的应用
为什么需要 Baseline Profiles?应用启动运行时解释执行(JIT)代码,并将热点代码翻译为机器代码,此过程需要时间,因此会降低性能,那 Baseline Profiles 是做什么的呢?就是将原本运行时解释执行的热点代码提前准备好,在应用处于空闲时,可以直接将热点代码编译成机器代码,这时在下次运行时可被直接执行,省去了运行时解释代码的过程,为应用启动提升性能。
2024-09-06 18:24:19
1648
原创 input dispatching timeout OS 版本对应反应
主线程耗时超过5s且有下一个输入事件在卡顿阶段输入,才会引发ANR。前台 输入事件后主线程阻塞8s,8s内再次输入事件。前台 输入事件后主线程阻塞8s,8s内切换到后台。前台 输入事件后主线程阻塞8s,无其他操作。切换到后台后,需重新获取焦点后才做ui刷新。验证不同系统下对于此类ANR的产生情况。切换到后台后开始阻塞8s,并做ui刷新。系统越高,对ANR的容忍度越低。有(需多次点击>10次)有(需多次点击>10次)切换到后台后开始阻塞8s。有(需多次点击>5次)
2024-08-15 15:16:35
566
原创 Android中的LowMemoryKiller机制
进程的启动分为冷启动和热启动,当用户退出进程后,Android系统不会立即将此进程回收,而是将其放到后台运行,下次再启动这个程序的时候,直接将这个放在后台的进程拉起来使用,加快启动速度,这种启动方式称为热启动。而冷启动则是重新为这个程序分配进程。那么问题来了,当启动的程序较多,然后又退出了,后台就会留下很多这种空的进程,占据了大量的内存空间。Android当内存剩余的空间满足一定的条件时,会对后台的进程进行查杀,以保证内存是可用的,这就是Android中LMK(LowMemoryKiller机制)
2024-08-02 13:02:44
2436
原创 史上最全Android混淆模版【含海外广告SDK】
---------------------------Part----------------定制化区域----------------------------------------------#------------------------------Part-------------基本不用动区域----------------------------------------###---------------Begin Admob 下 reklamup。
2023-11-23 14:03:32
2076
原创 Android 性能优化篇之SharedPreferences使用优化
SharedPreferences(以下简称SP)`是Android本地存储的一种方式,是以`key-value`的形式存储在`/data/data/项目包名/shared_prefs/sp_name.xml`里。
2023-05-20 17:18:44
1689
1
转载 今日头条 ANR 优化实践系列 - 设计原理及影响因素
再来看一下有序广播的发送和接收逻辑,同样在系统 AMS 服务中,BoradCastQueue 获取当前正在发送的广播消息,并取出下一个广播接收者,更新发送时间戳,以此时间计算并设置超时时间(但是系统在此进行了一些优化处理,以避免每次广播正常接收后,都需要取消超时监控然后又重新设置,而是采用一种对齐的方式进行复用)。ANR 问题,对于从事 Android 开发的同学来说并不陌生,日常开发中,经常会遇到应用乃至系统层面引起的各种问题,很多时候因为不了解其运行原理,在面对该类问题时可能会一头雾水。
2023-05-20 15:13:36
550
原创 Android 动画
android:duration 动画持续时间android:fillAfter 为true动画结束时,View将保持动画结束时的状态android:fillBefore 为true动画结束时,View将还原到开始开始时的状态android:repeatCount 动画重复执行的次数android:repeatMode 动画重复模式 ,重复播放时restart重头开始,reverse重复播放时倒叙回放,该属性需要和android:repeatCount一起使用。
2023-02-01 15:05:38
1844
原创 防止Android点击app图标应用重启
关于app第一次安装,进入主页后再进入一个界面A,然后home键回到桌面,再点击app图标,应该显示哪个界面?1. 第一步:删除第一个Activity的启动模式,或者改为“standard”。第二步:在application中去设置持久化为 true,防止app挂后台被回收。造成这种问题的主要原因:国内手机厂商问题,以及手机自带的第三方手机管家。3. App 重新加载启动页的时候,判断是否已经加载过一次。但是那是相对于Google原生的系统来说,是界面A。有的人肯定说是界面A。
2022-11-03 17:38:28
1941
原创 Android开发中VSS、RSS、PSS、USS的区别
表示一个进程在RAM中实际使用的空间地址大小,它按比例包含了共享库占用的内存。假如有3个进程使用同一个共享库,那么每个进程的PSS就包括了1/3大小的共享库内存。在实际中很少用这种方式来表示进程占用内存的情况,用它来表示单个进程的内存使用情况是不准确的。RSS可能会产生误导,因为它报告进程使用的所有共享库的总数,即使共享库只加载到内存中一次,无论有多少进程使用它。表示一个进程在RAM中实际使用的空间地址大小,包括了全部共享库占用的内存,这种表示进程占用内存的情况也是不准确的。
2022-10-20 10:47:16
1826
原创 Kotlin Sealed Class
Sealed Classes 受限制: 必须在同一文件中,或者在 Sealed Classes 类的内部中使用,在Kotlin 1.1 之前,规则更加严格,子类只能在 Sealed Classes 类的内部中使用。正如你所看到的,在 Sealed Classes 内部中,使用 object 声明时,我们可以重用它们,不需要每次创建一个新实例,当这样使用时候,它看起来和枚举非常相似。如果你不需要多次实例化,也不需要不提供特殊行为,或者也不需要添加额外的信息,仅作为单个实例存在,这个时候使用枚举更加合适。...
2022-08-18 14:32:10
781
原创 加固调研实录
背景问题:Appsealing1、启动速度慢 :原 1s左右 ,加固后 3-4 s, 慢 2-3 s目标:保证安全的前提下,启动时间变快,兼容性变好。问题分析:为什么慢——> Dex 加壳, 整体加固,启动慢,兼容问题#1、AppsealingSelect Dex 部分Class加固【作用不显著】Appsealing 研究中,有时间反馈#2、是否有替代技术,加固技术分析。VMP和JAVA2c 技术 #不加固混淆,自己些混淆策略...
2021-11-12 15:55:42
2750
原创 mac环境下Android 反编译
一、需要的工具apktool:反编译APK文件,得到classes.dex文件,同时也能获取到资源文件以及布局文件。 dex2jar:将反编译后的classes.dex文件转化为.jar文件。 jd-gui:用于将.jar文件转换成java代码。二、反编译步骤第一步:使用apktool工具对APK进行反编译1. 下载apktool下载apktool2. 把下载好的apktool脚本和apktool.jar文件移动到 /usr/local/bin 文件夹下菜单栏点击「
2021-10-08 16:43:08
366
原创 Android 加固厂商特征
爱加密libexec.so, libexecmain.so,ijiami.dat娜迦libchaosvmp.so , libddog.solibfdog.so梆梆libsecexe.so, libsecmain.so梆梆企业版libDexHelper.so , libDexHelper-x86.so360libprotectClass.so, libjiagu.solibjiagu.so, libjiagu_art.solibjiagu.so, libjiagu_x86.so.
2021-10-08 15:42:55
2109
原创 Android 轻量级存储方案的前世今生【SharedPreferences、MMKV、Jetpack DataStore】
背景对于 Android 轻量级存储方案,有大多数人都很熟悉的 SharedPreferences;也有基于 mmap 的高性能组件 MMKV,底层序列化/反序列化使用 protobuf 实现,性能高,稳定性强;还有 Jetpack DataStore 是一种数据存储解决方案,允许您使用协议缓冲区存储键值对或类型化对象。DataStore 使用 Kotlin 协程和流程(Flow)以异步、一致的事务方式存储数据。本文将一一分析这三个方案的来龙去脉,并深入源码进行分析。(本文基于Android 29 源码
2021-09-18 11:22:03
1193
原创 Team leader的几点看法
每年给组员做PR的时候,总会谈及职业规划的问题。也总会被被问到怎样何时才可以做一个lead,为什么自己不能做lead?就从别处收集了一些自己也加了一些作为一个指引。但实际在具体操作时,也是每个manager见仁见智的事情,而且有时需要激励和推动才能挖掘出他/她的潜能。基本1.理解及分解能力,能够准确的理解上级给出的任务并合理的分解2.目标设置能力,能够将任务,时间,注意事项,期望结果,标准等明确的告诉你的组员3.监控进度和质量,收集组员的进度及汇总,评估组员的工作质量4.时间管理能力,合理的安
2021-09-15 10:36:01
459
原创 Android从码农到架构师的技术成长之路
在这里我把攻城狮分成初级、中级、高级和资深四个阶段,分别对研发设计能力、工具使用、系统原理和架构等作出要求。初级我对初级研发攻城狮的定义是掌握基础的android知识,能够独立完成一个功能。这个层级大部分人通过看一些资料书籍再经过项目练习很快可以达到。需要的技能有:掌握android 四大组件知识,深入了解相关生命周期;对于Application、Fragment、Intent也必须掌握。 掌握android 基本布局和控件的属性和使用,常用布局有LinearLayout\Relative
2021-07-07 17:33:01
357
原创 静态和动态代理模式
代理模式,也称委托模式,是结构型设计模式之一,何为代理呢? 在日常生活中就比如叫朋友替你拿个快递,叫朋友替你做一下作业,叫朋友替你买点东西等等,这个朋友就是你的代理,你把事情委托你的朋友做了,同样在代码的世界中也存在代理,而且在你以后阅读到更多的设计模式时,你会发现很多的设计模式中也有代理模式的影子,代理模式是一个非常重要的设计模式,代理模式分为静态代理和动态代理,本文将会通过一个简单的例子讲解静态代理,然后引出动态代理,并且深入的探讨一下动态代理的实现原理。代理模式的定义为其他对象提供一种代理以控
2021-05-24 10:59:23
570
1
原创 一篇文章搞懂android存储目录结构
存储分类内部存储内部存储位于系统中很特殊的一个位置,对于设备中每一个安装的 App,系统都会在 data/data/packagename/xxx 自动创建与之对应的文件夹。如果你想将文件存储于内部存储中,那么文件默认只能被你的应用访问到,且一个应用所创建的所有文件都在和应用包名相同的目录下。也就是说应用创建于内部存储的文件,与这个应用是关联起来的。当一个应用卸载之后,内部存储中的这些文件也被删除。对于这个内部目录,用户是无法访问的,除非获取root权限。String fileDir.
2021-03-24 14:51:39
961
原创 Doze和App Standby模式下的Android应用适配
从Android6.0(API23)开始, Google为Android加入了两种省电特性,通过管理Android应用(以下简称应用)在非充电状态下的设备中的运行策略来达到延长用户的Android设备使用时间的目的。这两种特性存在一定的差别,Doze模式通过延缓应用在设备长时间待机状态下对于CPU和网络资源的使用来实现节能;而App Standby则是通过延缓最近未被使用的后台应用对于网络的请求来达到同样的目的。Doze和App Standby在Android6.0及以上的Android设备中可以影响所
2021-03-22 16:10:38
661
原创 Android性能优化 -- Systrace工具
Systrace简介一般来说,我们的机器以60帧/秒显示时,用户会感觉机器很流畅,如果显示时出现丢帧的情况,需要知道当前整个系统所处的状态,这个时候Systrace便是最佳的工具选择。Systrace是Android4.1中新增的性能数据采样和分析工具。它可帮助开发者收集Android关键子系统(如Surfaceflinger、WindowManagerService等framework部分关键模块、服务)的运行信息,从而帮助开发者更直观的分析系统瓶颈,改进性能。Systr...
2021-03-08 16:44:30
892
Textview展示html格式代码,支持图文混排
2018-04-20
播放器demo
2012-12-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅