Android升级compileSdkVersion32至33后Web APIs失效问题求助
解决方案
1. 补充WebView相关混淆规则
开启minifyEnabled=true后,R8/ProGuard会混淆或移除WebView交互的关键代码,需在proguard-rules.pro中添加以下规则:
# 保留WebView核心类 -keep public class android.webkit.WebView -keep public class android.webkit.WebViewClient -keep public class android.webkit.WebChromeClient -keep public class android.webkit.JavascriptInterface # 保留自定义JS交互类(替换为你项目中的实际类名) -keepclassmembers class com.example.abcd.YourJsBridgeClass { public *; } # 保留带@JavascriptInterface注解的方法 -keepclassmembers class * { @android.webkit.JavascriptInterface <methods>; } # 保留必要注解属性,防止JS桥接失效 -keepattributes JavascriptInterface -keepattributes *Annotation*
2. 适配Android 13权限要求
API 33新增POST_NOTIFICATIONS权限,如果你的WebView涉及通知类Web API,需在AndroidManifest.xml中声明权限:
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
若需主动触发通知,还需在代码中动态申请该权限。
3. 统一Build工具版本
当前buildToolsVersion '30.0.3'与compileSdkVersion 33版本不匹配,建议升级到对应版本:
buildToolsVersion '33.0.2'
4. 保留WebView回调方法(按需添加)
如果WebView的特定回调(如onPageFinished)被优化移除,可添加规则保留:
-keepclassmembers class * extends android.webkit.WebViewClient { public void onPageFinished(android.webkit.WebView, java.lang.String); // 其他需要保留的回调方法,如shouldOverrideUrlLoading等 }
内容的提问来源于stack exchange,提问作者Taufik
相关产品推荐
相关产品推荐

