适配Android15 | 升级SDK35 | failed to load include path platforms\android-35\android.jar

目前Android的APP需要做升级适配,原本是打算升级到34,即Android14的,但是看到35 即Android 15 beta出来了, 想着一步到位,就处理了。

先说结论,IDE要升级到2024.1.2 或更高版本,我之前是2024.1.1,反复折腾,都无法build,报错【failed to load include path platforms\android-35\android.jar】,查找文件,确实是存在的。查询官方文档,需要升级IDE。

参考:https://developer.android.google.cn/about/versions/15/setup-sdk?authuser=3&hl=zh-cn#groovy

升级之后,需要有几个调整的地方:

1、AGP升级到8.6.0

2、gradle升级到了8.7

3、JDK升级到了17

前面2条,在project structure里的project设置。

第3条在settings里设置。

设置完之后,可能会因为网路问题,无法下载gradle.zip,手动修改 gradle-wrapper.properties 文件,指定阿里云的代理,调整,如果你是其他版本,自行调整,可以现浏览器试试能不能下载:

distributionUrl=https://services.gradle.org/distributions/gradle-8.7-bin.zip

下载各种依赖的也可能有问题,分别调整工程和模块下的 build.gradle 文件,在buildscript下的repositories里,和allprojects下的repositories里增加以下内容,放在最前面:

maven {
        url 'https://maven.aliyun.com/repository/public/'
}

一共2个文件,4个地方。

其他地方的修改,就和之前一直,修改SDK的版本。

另外就是,我这边手动处理更新,因此会获取VERSIONCODE和VERSIONNAME,之前是之前取配置文件,升级之后,配置文件无法自行生成,所以修改为PackageManager方式获取。

另外,因为引用了大量的第三方依赖,如JPUSH、微信SDK、支付宝SDK、QQSDK、bugly、OSS存储等,这个可能会因为升级引发问题。

建议1:引入依赖的时候,指定版本,而不要用最新版本。防止第三方升级SDK,而本APK没有适配,引发的问题。

建议2:如果引入依赖有问题,需要上第三方SDK查看文档,看看需要升级到什么版本。有些SDK的升级,是需要同步调整配置的。如无问题,建议不要随意升级第三方SDK。

### 关于AAPT和aapt2.exe加载资源表失败的问题 该错误通常发生在尝试编译Android项目时,`aapt2.exe`无法成功解析APK中的资源文件。具体表现为`RES_TABLE_TYPE_TYPE entry offsets overlap actual entry data`以及`Failed to load resources table in APK '.../android.jar'`等问题。 以下是可能的原因及其对应的解决方案: #### 原因分析 1. **SDK版本不匹配** 如果项目的构建工具链(如Gradle插件)与所使用的Android SDK版本不兼容,则可能导致此类问题。例如,引用中提到的API级别为30的情况却出现了针对API 35的路径错误[^2]。 2. **损坏的SDK组件** Android SDK的部分组件可能存在安装异常或被意外修改,尤其是`android.jar`文件所在的目录结构出现问题时会触发上述错误[^3]。 3. **缓存污染** 构建过程中产生的中间产物未清理干净也可能引发冲突,尤其是在切换不同的SDK版本或者更新开发环境之后。 4. **配置不当** `build.gradle`文件内的设置如果不符合当前系统的实际状况也会造成类似的错误消息显示出来。比如指定的目标API等级过高而本地并未真正具备相应支持材料就会有风险发生这种现象[^1]。 #### 解决方案 ##### 方法一:验证并调整目标SDK版本 确认项目所需的最低、最高及默认目标SDK版本号是否合理,并确保这些数值对应已正确安装至开发者机器上的确切版次。可以通过以下方式操作: - 打开`build.gradle(Module: app)`文件; - 修改其中关于compileSdkVersion, minSdkVersion, targetSdkVersion字段的内容使之相适应现有条件下的最佳实践标准; ```gradle android { compileSdkVersion 30 // 或者其他适合您应用需求的具体整数编号 defaultConfig { applicationId "com.example.myapp" minSdkVersion 21 targetSdkVersion 30 } } ``` ##### 方法二:重新下载受影响的SDK包 由于某些原因导致特定版本的数据丢失或变得不可用,可以考虑通过官方渠道再次获取缺失部分来修复整个体系架构完整性。 - 启动Android Studio内置的SDK Manager; - 定位到有问题的那个平台层级区域(此处即指代android-35),勾选关联条目后点击Apply按钮执行同步动作直至完成为止。 ##### 方法三:清除旧有的Build Cache数据 强制移除之前累积下来的临时记录有助于消除潜在干扰因素从而恢复正常流程运转状态。 - 删除`.gradle/caches`目录下相关内容; - 运行命令刷新依赖关系树:`./gradlew clean --refresh-dependencies`. ##### 方法四:升级Gradle及相关插件 保持软件栈处于最新稳定发行序列能够有效减少不必要的麻烦事件出现几率。 - 更新Project级别的`build.gradle`文档里声明的distributionUrl链接指向更高等级实例地址; - 对应替换掉过时的功能模块调用形式以适配新规范要求。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值