BuildAci v1.5.7
BuildAci v1.5.7 — 真修 Android 16 Writable dex 崩溃(build_dex / build_project)
根因(与上一版 v1.5.6 的区别)
v1.5.6 把 dexed 工具 jar(ecj/d8/apksigner)解包到 filesDir(可写目录)后用 DexClassLoader 加载,
触发 Android 16 新增的 SecurityException: Writable dex file ... is not allowed,导致 build_dex /
build_project 在 Android 16 上崩溃。上一版的「桌面验证通过」是假阴性——PC 端 URLClassLoader 干跑没有
dex 文件可写性检查,测不出真机问题。
修复
BuildEngine.getToolchain 不再落盘加载:直接从 assets 解包后的 jar 提取 classes.dex 字节,用
InMemoryDexClassLoader(API 26+,minSdk 已满足)在内存中加载,零落盘 → 结构上不可能触发 Writable dex
异常。资源(ecj 的 .properties/.rsc/META-INF/services)由 URLClassLoader 从同一 jar 的 zip 条目兜底;
dexed jar 不含 .class 条目,不会误加载 Android 不支持的 .class。
验证
:app:assembleDebugBUILD SUCCESSFUL。- PC 侧校验:三个 dexed jar 的 classes.dex 均为合法 dex(magic dex\n038),反射入口类齐全
(ecj Main / d8 D8+D8Command / apksig ApkSigner+SignerConfig)。 - 真机复测(OPPO PKW110 / Android 16):build_dex(单文件)+ build_project(多文件)预期不再崩,
走到 ecj → d8 → apksig 全链路。
含 v1.5.6 宿主 MainActivity 修复(base.apk 注入宿主 classes.dex + 用户 classes2.dex,产物 APK 可启动)。