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

Android Studio重命名模块后应用启动崩溃,更新遭Play Store拒绝

问题描述

我在Android Studio中将原本的app模块重命名为wear,之后添加了一个名为mobile的新模块(模块结构:wear模块为原app模块重命名而来,新增mobile模块)。本地调试未发现问题,但应用更新提交至Play Store后被拒绝,Logcat中出现如下错误:

E  checkOperation
   java.lang.SecurityException: Specified package com.wrejistry.voicerecorder under uid 10332 but it is really 10335
at com.android.server.appop.AppOpsService.verifyAndGetBypass(AppOpsService.java:3944)
at com.android.server.appop.AppOpsService.checkOperationUnchecked(AppOpsService.java:2928)
at com.android.server.appop.AppOpsService.checkOperationImpl(AppOpsService.java:2911)
at com.android.server.appop.AppOpsService.checkOperationInternal(AppOpsService.java:2898)
at com.android.server.appop.AppOpsService.checkOperation(AppOpsService.java:2889)
at com.android.internal.app.IAppOpsService$Stub.onTransact(IAppOpsService.java:425)
at android.os.Binder.execTransactInternal(Binder.java:1159)
at android.os.Binder.execTransact(Binder.java:1123)

请问:

  • 为现有项目添加手机应用新模块是否安全?
  • 该错误是因添加新模块还是重命名app模块导致?
  • 如何解决此问题,确保设备识别的应用签名与修改前一致?

问题解答

1. 添加手机应用新模块是否安全?

完全安全,只要遵循Android官方多模块开发规范,不会对应用稳定性或上架造成影响。拆分wear和mobile模块是Google推荐的穿戴设备+手机配套应用的开发模式,本身不存在风险。

2. 错误原因分析

这个SecurityException是重命名原app模块后签名配置不一致导致的,和添加新模块本身无关:

  • 原app模块是你最初上传到Play Store的版本,其包名com.wrejistry.voicerecorder已经与Play Store绑定的签名关联。
  • 重命名模块后,你可能误修改了wear模块的签名配置(比如签名文件路径、密钥别名或密码错误),导致生成的APK签名与原始签名不一致。
  • Android系统会根据应用包名+签名生成唯一UID,同一包名+同一签名的应用UID固定;若签名不一致,系统会分配新UID,就会出现日志中“指定UID与实际UID不符”的权限校验错误。

3. 解决方法(确保签名与修改前一致)

统一全局签名配置

在项目根目录的build.gradle(Project级)中定义全局签名信息,让wear和mobile模块共用同一签名文件:

ext {
    releaseSigningConfig = [
        storeFile: file("../your-release-key.jks"),
        storePassword: "你的密钥库密码",
        keyAlias: "你的密钥别名",
        keyPassword: "你的密钥密码"
    ]
}

然后在wear和mobile模块的build.gradle(Module级)中引用该配置:

android {
    signingConfigs {
        release {
            storeFile rootProject.ext.releaseSigningConfig.storeFile
            storePassword rootProject.ext.releaseSigningConfig.storePassword
            keyAlias rootProject.ext.releaseSigningConfig.keyAlias
            keyPassword rootProject.ext.releaseSigningConfig.keyPassword
        }
    }
    buildTypes {
        release {
            signingConfig signingConfigs.release
            // 其他构建配置
        }
    }
}

确认模块包名正确性

  • wear模块(原app模块)的包名必须与最初上传到Play Store的包名com.wrejistry.voicerecorder完全一致,不能修改。
  • mobile模块作为新增配套应用,包名可以独立设置,但如果是作为原应用的手机端版本,需根据业务需求确认是否需要相同包名(通常穿戴与手机应用用不同包名,通过账号或App Link交互)。

验证签名一致性

使用apksigner工具检查APK签名信息,确保与原始上传到Play Store的APK指纹一致:

apksigner verify --verbose --print-certs your-wear-release.apk

对比输出的MD5、SHA-1、SHA-256指纹,必须与原始APK的指纹完全匹配。

重新提交应用

确保所有模块签名配置正确、包名无误后,重新生成release APK,再次提交至Play Store。应用更新必须保证更新包与原始包签名完全一致,否则Play Store会拒绝提交。


内容的提问来源于stack exchange,提问作者Jim Ross

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 12:15:26