You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AOSP构建中预构建APK无法更新问题求助

解决AOSP预构建Flutter系统APK更新不生效的问题

核心排查方向

  • Soong构建系统的缓存残留
  • Flutter APK的签名/拆分特性与AOSP规则不兼容
  • 预构建模块配置错误

具体解决步骤

1. 彻底清理构建缓存

常规清理可能没覆盖Soong的缓存,执行以下命令:

make clobber
rm -rf out/soong
rm -rf .repo/manifests.git
rm -rf .repo/local_manifests

然后重新初始化环境并构建:

source build/envsetup.sh
lunch <你的目标设备代号>
make -j$(nproc)

2. 检查并修正预构建模块配置

打开应用目录下的Android.bp(或Android.mk),对照你的配置截图确认参数:
预构建APK构建配置截图

标准Android.bp配置示例:

prebuilt_apk {
    name: "my-app",
    srcs: ["my-app.apk"], // 确保指向你更新后的APK文件
    certificate: "platform", // 系统应用必须使用platform签名
    privileged: true, // 对应/system/priv-app安装路径
    dex_preopt: {
        enabled: false, // Flutter APK已预优化,关闭AOSP的二次优化
    },
}

标准Android.mk配置示例:

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := my-app
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := my-app.apk
LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
LOCAL_PRIVILEGED_MODULE := true
LOCAL_CERTIFICATE := platform
LOCAL_DEX_PREOPT := false
include $(BUILD_PREBUILT)

重点确认:

  • srcs/LOCAL_SRC_FILES路径正确指向新APK
  • 签名配置certificate/LOCAL_CERTIFICATE为platform
  • 关闭dex_preopt避免与Flutter预优化冲突

3. 强制替换APK并重新生成镜像

如果构建系统仍未识别更新,手动替换后重新打包:

# 替换out目录中的旧APK
cp /path/to/your/new/my-app.apk out/target/product/<设备代号>/system/priv-app/my-app/my-app.apk
# 重新生成system镜像
make systemimage -j$(nproc)

4. 确保Flutter APK使用AOSP签名

Flutter默认生成的是调试签名APK,必须替换为AOSP的platform签名:

# 使用AOSP自带的签名工具重新签名
java -jar signapk.jar build/target/product/security/platform.x509.pem build/target/product/security/platform.pk8 your-new-flutter.apk signed-my-app.apk

将签名后的APK替换到预构建目录后重新构建。

5. 验证构建路径

运行命令查看模块的实际构建依赖,确认是否引用旧APK:

make my-app-showcommands

从输出中检查构建命令里的APK路径是否为新文件路径。


内容的提问来源于stack exchange,提问作者alok chander

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 08:40:10