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

集成IronSource的APP打包AAB后崩溃,需适配ProGuard混淆规则

IronSource集成应用AAB发布后崩溃的ProGuard配置解决方案

问题描述

我开发的应用集成了IronSource SDK,打包APK发布版本后使用完全正常,但打包AAB上传Google Play后,安装到设备就出现崩溃。添加-dontobfuscate全局关闭混淆能解决问题,但我需要对核心core模块保留混淆,请问该添加哪些ProGuard规则?

崩溃堆栈

FATAL EXCEPTION: main
java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:614)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1067)
Caused by: java.lang.reflect.InvocationTargetException
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:604)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1067) 
Caused by: org.json.JSONException: End of input at character 0 of 
    at org.json.JSONTokener.syntaxError(JSONTokener.java:460)
    at org.json.JSONTokener.nextValue(JSONTokener.java:101)
    at org.json.JSONObject.<init>(JSONObject.java:168)
    at org.json.JSONObject.<init>(JSONObject.java:185)
    at com.ironsource.mediationsdk.utils.IronSourceUtils.b(Unknown Source:7)
    at com.ironsource.mediationsdk.utils.IronSourceUtils.getCachedValueByKeyOfCachedInitResponse(Unknown Source:1)
    at com.ironsource.mediationsdk.utils.IronSourceUtils.isInitResponseCached(Unknown Source:3)
    at com.ironsource.mediationsdk.y.q(Unknown Source:1)
    at com.ironsource.mediationsdk.y.a(Unknown Source:10)
    at com.ironsource.mediationsdk.IronSource.init(Unknown Source:4)
    at n2.d$a.run(PluginAds.java:88)
    at android.os.Handler.handleCallback(Handler.java:942)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loopOnce(Looper.java:226)
    at android.os.Looper.loop(Looper.java:313)
    at android.app.ActivityThread.main(ActivityThread.java:8757)
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:604) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1067)

解决方案

从堆栈可以看出,崩溃是IronSource SDK的工具类在解析JSON时出错,本质是混淆(尤其是Google Play AAB的R8优化)破坏了SDK内部的类结构或方法签名。只需保留IronSource相关类不被混淆、优化,同时继续混淆你的core模块即可,具体规则如下:

1. 添加IronSource SDK专属ProGuard规则

将以下规则加入你的ProGuard配置文件(通常是proguard-rules.pro):

# 保留IronSource所有类和方法不被混淆、移除
-keep class com.ironsource.** { *; }
# 忽略IronSource相关的警告
-dontwarn com.ironsource.**

# 保留必要的属性,确保SDK反射和注解正常工作
-keepattributes *Annotation*,InnerClasses,Signature
-keepattributes JavascriptInterface
-keepattributes EnclosingMethod

# 保留JSON相关类,避免解析逻辑被破坏
-keep class org.json.** { *; }

2. 仅对core模块启用混淆

确保你的ProGuard配置只针对core模块进行混淆,替换your.package.name.core为你实际的core包路径:

# 排除core包外的所有类,仅混淆core模块
-keep class !your.package.name.core.** { *; }

# 可选:自定义混淆字典,增强混淆强度(需提前创建对应txt文件)
-obfuscationdictionary proguard-dictionary.txt
-classobfuscationdictionary proguard-dictionary.txt
-packageobfuscationdictionary proguard-dictionary.txt

说明

AAB格式在Google Play发布时会触发更严格的R8代码优化,比本地APK的混淆规则更激进,所以必须确保第三方SDK的完整类结构不被改动。上述规则既保留了IronSource SDK的正常运行,又能让你的core模块保持混淆状态。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 17:55:12