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

开启R8混淆后应用崩溃,报SecurityException权限异常求助

启用R8后开启minifyEnabled导致应用崩溃问题

我们在Gradle配置中启用了R8,当将minifyEnabled设置为true时应用崩溃,抛出如下异常:

Gradle.properties配置

android.enableR8 = true
android.enableR8.fullMode=true
useProguard = true

build.gradle配置

buildTypes {
    release {
        minifyEnabled false
        debuggable false
        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
    }
    debug{
        debuggable false
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
    }
}

异常信息

java.lang.SecurityException: 指定的包com.oplus.internal.telephony属于uid 1001,但实际并非如此
at com.android.server.appop.AppOpsService.verifyAndGetBypass(AppOpsService.java:4791)
at com.android.server.appop.AppOpsService.noteOperationUnchecked(AppOpsService.java:3575)
at com.android.server.appop.AppOpsService.noteOperationImpl(AppOpsService.java:3563)
at com.android.server.appop.AppOpsService.access$4000(AppOpsService.java:223)
at com.android.server.appop.AppOpsService$CheckOpsDelegateDispatcher.lambda$noteOperation$4(AppOpsService.java:7769)
at com.android.server.appop.AppOpsService$CheckOpsDelegateDispatcher$$ExternalSyntheticLambda5.apply(Unknown Source:33)
at com.android.server.policy.AppOpsPolicy.noteOperation(AppOpsPolicy.java:221)
at com.android.server.appop.AppOpsService$CheckOpsDelegateDispatcher.noteOperation(AppOpsService.java:7767)
at com.android.server.appop.AppOpsService.noteOperation(AppOpsService.java:3547)
at com.android.internal.app.IAppOpsService$Stub.onTransact(IAppOpsService.java:476)
at com.android.server.appop.OplusAppOpsService.onTransact(OplusAppOpsService.java:38)
at android.os.Binder.execTransactInternal(Binder.java:1226)
at android.os.Binder.execTransact(Binder.java:1163)

解决方案

1. 添加ProGuard规则保留OPPO内部Telephony相关类

在proguard-rules.pro文件中添加以下规则,避免R8混淆或移除OPPO系统内部的telephony相关类:

-keep class com.oplus.internal.telephony.** { *; }
-dontwarn com.oplus.internal.telephony.**

2. 移除Gradle配置中的冲突项

当前配置同时启用了R8和ProGuard,两者存在冲突,建议删除useProguard = true配置,修改后的Gradle.properties如下:

android.enableR8 = true
android.enableR8.fullMode=true
# useProguard = true 已注释或删除

原因说明

com.oplus.internal.telephony是OPPO系统专属的内部包,应用调用相关接口时,R8的full优化模式可能会误处理该包的引用,导致系统校验包UID时出现不匹配的情况。添加保留规则可确保相关类不被混淆或移除,同时清理冲突的配置项能避免混淆工具的行为异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 04:35:39