android_system_font_weight 0.3.1
android_system_font_weight: ^0.3.1 copied to clipboard
启动期一次性读取安卓厂商(HyperOS/MIUI、ColorOS、OriginOS、MagicOS 等)的 系统全局可变字重设置,归一化为 wght 轴值。无监听、无刷新,读不到返回 null。
Changelog #
0.3.1 #
- compileSdk 34 → 36(package:jni 要求 ≥35,34 会直接编译失败)。
0.3.0 #
- 全同步 API(breaking):跟随 Flutter 3.29+ 平台/UI 线程合并的官方互操作
路径,Dart 经 package:jni 直呼原生静态方法,
getAll/getWght/getVendor均改为同步——消费方(如 ElApp)首帧即可注入,无重排闪动。 MethodChannel 退役;原生拆为SystemFontWeightCollector(@JvmStatic 哑 采集器,返回 U+001E/U+001F 编码字符串)+ 插件类(仅注册期缓存 Context)。 - release 混淆保活:consumer-rules.pro 保留 JNI 按名查找的采集器类。
0.2.0 #
- 架构重分层(breaking):原生只保留唯一 API
getAll(哑采集器,返回全量 原始参数 Map),取值决策全部上移 Dart——getVendor()/vendorOf()厂商 判定独立成 API,extractWght()按厂商挑键 +normalize()值域归一化,getWght()保持一步到位入口不变。移除原生getWght/debugDump方法, Dart 侧debugDump()更名getAll({refresh})(带缓存)。 - 墨水探针返回值取整(wght 轴按整数消费)。
0.1.2 #
- 新增墨水覆盖率探针并设为最高优先级:用系统默认字体绘样张、显式
'wght' N二分对齐覆盖率,直接量出厂商钩子在本进程 Paint 层实际生效 的字重,与键值编码完全解耦。 - ColorOS 关键发现(OPPO PLJ110 真机):settings 低 12 位只是滑杆刻度, framework 应用时另有压缩曲线——存储 800(拉满)实际生效 ≈650。键值 解码降级为探针不可用(探回 ≈400 无法与"钩子未生效"区分)时的兜底。
0.1.1 #
- ColorOS 编码实锤并全链路真机验证(OPPO PLJ110 / Android 16):
Settings.System/font_variation_settings为位打包整数——bit12(0x1000)= 已自定义标志、低 12 位=wght(4896=0x1320→800 拉满、4862=0x12FE→766), Configuration 扩展字段 mFontVariationSettings 同编码(dumpsys 以十六进制 呈现)。>1000 的 variation/wght 键优先位解码,低 12 位出值域退回 ÷10 定点;-1 视为未设置哨兵。 - 新增探测层:反射读 Configuration OEM 扩展字段(mOplusExtraConfiguration 等载体,优先级最高);getprop 系统属性扫描。
- 扫描过滤补上
variation关键词;debugDump 增加 configExtra / 载体字段 清单 / prop 三组输出。
0.1.0 #
- 首版:启动期一次性读取安卓厂商系统全局可变字重(候选键直读 → settings
三表扫描 + 启发式归一化 → AOSP fontWeightAdjustment 兜底),
getWght()返回归一化 wght 或 null;debugDump()输出真机原始键值用于定位厂商私有键。 - Built-in Kotlin:不显式 apply KGP,最低支持 Flutter 3.44 / Dart 3.12。