Android Studio targetApi=33 android 13 setAppCacheEnabled/setAppCachePath/setAppCacheMaxSize 报红问题探究

在Android Studio中,当targetApi设置为33时,WebSettings的setAppCacheEnabled等方法报红。分析发现,这些方法在Android 13已被移除。解决方案包括降级targetSdkVersion,迁移至Service Workers,替换android.jar或制作修复版的android.jar。目前采用的方案五,通过替换修复后的android.jar可临时解决问题,但推荐遵循官方建议,长远考虑迁移至Service Workers。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

现象

在这里插入图片描述

可以看到即使加了Api版本判断依然是报红的

具体分析

  • 编译后有如下类似错误提示
Launching lib/main.dart on sdk gphone64 arm64 in debug mode...
/Users/dararii/Dev/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_inappwebview-5.4.3+7/android/src/main/java/com/pichillilorenzo/flutter_inappwebview/in_app_webview/InAppWebView.java:280: error: cannot find symbol
settings.setAppCachePath(options.appCachePath);
^
symbol: method setAppCachePath(String)

location: variable settings of type WebSettings
/Users/dararii/Dev/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_inappwebview-5.4.3+7/android/src/main/java/com/pichillilorenzo/flutter_inappwebview/in_app_webview/InAppWebView.java:494: error: cannot find symbol
settings.setAppCacheEnabled(false);
^
symbol: method setAppCacheEnabled(boolean)
location: variable settings of type WebSettings
/Users/dararii/Dev/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_inappwebview-5.4.3+7/android/src/main/java/com/pichillilorenzo/flutter_inappwebview/in_app_webview/InAppWebView.java:504: error: cannot find symbol
settings.setAppCacheEnabled(true);
^
symbol: method setAppCacheEnabled(boolean)
  • 首先在Android Studio 直接跳到系统源码里是可以看到这几个函数的
    在这里插入图片描述
  • 但是呢,当我们直接在本地找到对应android.jar包,然后用jadx反编译后,并没有这几个函数
    在这里插入图片描述

解决方案

  • 方案一
    最简单,直接退回到32即可,即targetSdkVersion =32 和 compileSdkVersion =32

  • 方案二
    根据官方建议,迁移到替代方案: Service Workers & 具体迁移策略

  • 方案三
    setAppCacheEnabled(true);换成setCacheMode(WebSettings.LOAD_DEFAULT)
    setAppCacheEnabled(false);换成setCacheMode(WebSettings.LOAD_NO_CACHE)
    setAppCachePath("")这个就没有代替方案了

这个官方并没有提及,不知道是否靠谱

  • 方案四
    替换android.jar为32的
    在这里插入图片描述

这个方法最简单,但有个弊端,若是你使用了33的api,那可能就会报错了

  • 方案五
    制作一个修复版的android.jar包
    在这里插入图片描述
    具体就是将32的WebSettings.class文件替换到33的WebSettings.class即可
    替换之后,在Android Studio就可以实现如下版本判断效果,还不会报红了
    在这里插入图片描述
    这里,我在Android33暂时采用的是方案三,并没有迁移到Service Workers,这个方案看起来挺复杂的,网上也没有相关文章,后续有时间再分析分析

  • 修复包成品下载
    资源在文章开头即可下载

使用方法:解压后,将 android33fix.jar 重命名为android.jar,然后复制替换到/Sdk/platforms/android-33/android.jar,替换前记得备份原始android.jar包哦

总结

  • 目前我用的是方案五,基本上完美解决问题,既能使用33的api又不报错( 当然这只是临时解决方案,要想根本解决问题,还是按官方建议,迁移到 Service Workers ),不过记得要备份原始android.jar包哦,若是不会操作的,可以直接下载我下面修复后的成品

  • 关于该问题的深入研究
    根本原因是AppCache问题,该组件强制从Chrome 85 里移除了,具体参看:准备进行 AppCache 移除 ,之前这几个方法由于兼容问题暂时保留了,并被设置为弃用了,建议迁移到 Service Workers 方案。到了Android 13就直接被移除了。其实官方还是给了一个过渡期的

参考

<think>好的,用户想了解HS400模式下200MHz的配置或相关信息。首先,我需要回忆HS400是什么,它属于eMMC规范中的高速接口模式。HS400代表High Speed SDR 400,支持双倍数据率(DDR),最高时钟频率200MHz,每个时钟周期传输两次数据,所以理论速度达到400MB/s。 接下来,配置HS400的步骤可能包括硬件和软件两方面。硬件上,设备必须支持HS400模式,PCB布线要符合信号完整性要求,比如走线长度匹配、阻抗控制。电源稳定性也很重要,因为高速信号对噪声敏感。 软件配置方面,首先需要初始化eMMC设备,设置总线宽度为8位,切换到HS200模式进行校准,再切换到HS400。可能需要调整驱动强度和采样点,确保信号质量。设备树(Device Tree)的配置是否正确,比如是否启用了HS400相关属性,也是关键。 还要考虑用户提到的引用内容,比如引用[4]中的存储测试工具,可能用memtester和fio来验证配置后的性能。此外,调试方法如示波器检查信号质量,以及查看内核日志确认模式切换是否成功,都是必要的步骤。 用户可能遇到的问题包括模式切换失败、数据错误或系统不稳定,需要逐一排查硬件设计、驱动配置和电源问题。最后,确保引用的相关信息正确,比如引用[4]中的测试工具是否适用于HS400的验证,可能需要补充说明。</think>### HS400 200MHz 模式配置信息 HS400(High Speed SDR 400)是eMMC 5.1及更高版本中定义的高速接口模式,通过200MHz时钟频率和双倍数据率(DDR)实现更高的传输速率。以下是相关配置信息: #### 1. **硬件要求** - **设备支持**:存储设备(如eMMC芯片)需支持HS400模式[^4]。 - **信号完整性**:200MHz高频信号对PCB布线要求严格,需确保走线长度匹配、阻抗控制(通常50Ω差分阻抗)及减少串扰。 - **电源稳定性**:需提供稳定的1.8V或3.3V电源,噪声需控制在±5%以内。 #### 2. **软件配置步骤** 1. **初始化模式切换**: - 从默认模式切换至HS200模式,完成信号校准。 - 通过CMD6命令切换至HS400模式,并启用8位总线宽度。 ```c // 示例:eMMC模式切换命令(Linux内核驱动参考) mmc_switch(card, EXT_CSD_CMD_SET_NORMAL, EXT_CSD_HS_TIMING, HS400_TIMING); ``` 2. **驱动强度调整**:通过设备树(Device Tree)配置驱动强度采样点: ```dts &mmc { bus-width = <8>; mmc-hs400-1_8v; hs400-ds = "strength_high"; // 驱动强度 hs400-reduced-tx = <0>; // 采样点调整 }; ``` 3. **时钟配置**:确保主机控制器支持200MHz时钟输出,并配置PLL参数。 #### 3. **调试验证** - **信号质量测试**:使用示波器检查CLKDATA信号的眼图,确保建立/保持时间符合要求。 - **性能测试**:通过`fio`工具验证读写速度(引用[4]中提到的存储测试方法): ```bash fio --name=hs400_test --rw=randrw --bs=128k --direct=1 --ioengine=libaio --runtime=60 --numjobs=4 --group_reporting --filename=/dev/mmcblk0 ``` - **内核日志检查**:通过`dmesg`查看eMMC模式切换是否成功: ``` mmc0: new HS400 MMC card at address 0001 ``` #### 4. **常见问题优化** - **模式切换失败**:检查设备树配置或电压是否匹配。 - **数据错误**:优化PCB走线或调整驱动强度。 - **性能瓶颈**:启用命令队列(CQHCI)或优化DMA配置[^4]。 ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jitcor

觉得有用,不赏点?

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值