多渠道与 AAB 优化
本章讨论如何优化发布流程,特别是在处理 Android App Bundle (AAB) 和复杂的多渠道分发时。
1. 禁用不需要的 AAB 拆分
默认情况下,AAB 会根据 ABI、语言、屏幕密度拆分 APK。如果你想限制某些维度的拆分以减小体积或简化测试:
kotlin
android {
bundle {
language { enableSplit = false } // 不按语言拆分,适合内置多语言的应用
density { enableSplit = true }
abi { enableSplit = true }
}
}2. 多渠道打包 (Flavors) 的内存优化
专家建议
如果你有 50 个渠道,一次性运行 assembleRelease 可能会导致 OOM(内存溢出)。
优化策略:使用命令行过滤,一次只编一个渠道。
bash
./gradlew assembleFlavor1Release assembleFlavor2Release ...3. 动态配置清单占位符
根据不同的构建渠道,动态注入不同的配置(如:百度地图 Key、友盟 ID)。
kotlin
productFlavors {
create("huawei") {
manifestPlaceholders["CHANNEL_NAME"] = "huawei"
manifestPlaceholders["MAP_KEY"] = "KEY_A"
}
create("xiaomi") {
manifestPlaceholders["CHANNEL_NAME"] = "xiaomi"
manifestPlaceholders["MAP_KEY"] = "KEY_B"
}
}在 AndroidManifest.xml 中引用:
xml
<meta-data android:name="CHANNEL" android:value="\${CHANNEL_NAME}" />4. 离线模式构建
如果你在没有网络的环境下(如高铁上、高安全级别的内网)开发:
bash
./gradlew assembleDebug --offlineGradle 会强制只使用本地缓存,不检查任何远程仓库。