Android 打包适配15 版本(api 35)问题处理
一、场景
Google play 对于上架app的适配sdk 版本要求:
二、问题处理
首先肯定是要将build.gradle中的targetsdk 版本提升上来
compileSdkVersion 35defaultConfig {applicationId "xxxx"versionCode 28versionName "2.1.0.0"minSdkVersion 21targetSdkVersion 35
修改完后编译报错:
* What went wrong:
Execution failed for task ':app:processNormalAppDebugResources'.
> A failure occurred while executing com.android.build.gradle.internal.res.LinkApplicationAndroidResourcesTask$TaskAction
> Android resource linking failed
ERROR:AAPT: aapt2 E 08-29 14:39:59 90107 155896441 LoadedArsc.cpp:94] RES_TABLE_TYPE_TYPE entry offsets overlap actual entry data.
aapt2 E 08-29 14:39:59 90107 155896441 ApkAssets.cpp:149] Failed to load resources table in APK '/Users/xxx/Library/Android/sdk/platforms/android-35/android.jar'.
error: failed to load include path /Users/xxxx/Library/Android/sdk/platforms/android-35/android.jar.
从stackoverflow 找到的原因是google 的bug
https://stackoverflow.com/questions/78678063/android-15-update-compilesdk-android-35-cause-an-error-res-table-type-type-e
gralde版本:distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-bin.zip插件版本:
classpath 'com.android.tools.build:gradle:8.3.1'
同步gradle 直接显示:
What went wrong:
A problem occurred configuring project ':app'.
> Could not create an instance of type com.android.build.api.variant.impl.ApplicationVariantImpl.
> Namespace not specified. Specify a namespace in the module's build file. See https://d.android.com/r/tools/upgrade-assistant/set-namespace for information about setting the namespace.
If you've specified the package attribute in the source AndroidManifest.xml, you can use the AGP Upgrade Assistant to migrate to the namespace value in the build file. Refer to https://d.android.com/r/tools/upgrade-assistant/agp-upgrade-assistant for general information about using the AGP Upgrade Assistant.
https://developer.android.com/build/configure-app-module?hl=zh-cn#set-namespace
Android Studio 工具有一个 AGP 助手工具,可以用来帮助升级:
注意要一步步升级到 8.3.1 版本, 最终它会将各个模块里面的Androidmanifest.xml 中的 package 包名去掉,然后再gradle 中添加 namespace 来定义命名空间。
至此,似乎完成了Android 15 版本适配的第一步,编译打包报错问题, 也就是除了升级compile 和 target sdk 版本之外,还需要升级对应的AGP 。
另外这个问题在刚开始因为切换分支,导致了gradle-wrapper.properties 文件中的 gradle 版本变化,导致的各种编译问题,其实还是因为版本不对应造成的,基本上都需要用Android studio 报错指出来的版本。
另外的另外,这次用上了代理,直接下更新gradle :