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

升级AGP等依赖后AWS4Signer无法实例化问题求助

解决AGP/KGP升级后Koin无法实例化AWS4Signer的问题

问题背景

将AGP从7.4.2升级至8.2.2,Kotlin Gradle Plugin从1.6.21升级至1.9.22,同时KTX从1.8.0升级至1.12.0后,Koin无法实例化AWS组件,抛出错误:

Caused by: java.lang.InstantiationException: java.lang.Class<com.amazonaws.auth.AWS4Signer> cannot be instantiated at java.lang.Class.newInstance(Native Method)

此前功能正常时使用的混淆规则:

##### AWS ######
-keep class org.apache.commons.logging.**               { *; }
-keep class com.amazonaws.services.sqs.QueueUrlHandler  { *; }
-keep class com.amazonaws.javax.xml.transform.sax.*     { public *; }
-keep class com.amazonaws.javax.xml.stream.**           { *; }
-keep class com.amazonaws.services.**.model.*Exception* { *; }
-keep class org.codehaus.**                             { *; }
-keepattributes Signature,*Annotation*

-dontwarn javax.xml.stream.events.**
-dontwarn org.codehaus.jackson.**
-dontwarn org.apache.commons.logging.impl.**
-dontwarn org.apache.http.conn.scheme.**

问题原因

AGP 8.x版本默认启用R8 full mode,混淆优化的严格程度大幅提升。原有混淆规则未对AWS4Signer类及其构造函数做保留处理,导致R8在优化过程中修改了该类的可实例化结构(比如移除无参构造、标记类为不可实例化),而Koin依赖反射实例化该类时就会触发InstantiationException。

解决方案

在原有AWS混淆规则中补充以下内容,确保AWS4Signer及相关签名类被完整保留:

# 保留AWS签名类,避免Koin反射实例化失败
-keep class com.amazonaws.auth.AWS4Signer { *; }
# 若还有其他被Koin反射实例化的AWS auth组件,可统一保留整个包
-keep class com.amazonaws.auth.** { *; }

验证方式

  1. 更新混淆规则后,重新构建并打包应用
  2. 触发AWS相关功能,确认AWS4Signer能被Koin正常实例化,无异常抛出

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 12:32:46