当前位置: 首页 > news >正文

android开发将项目升级到target35的解决方法

出于上架等要求,需要android项目升级target 35以上,target 35默认需要gradle 8.x之后才能编译成功,下面提供两种解决方法

1. 如何只升级target到35,不需要升级gradle到8.x也能编译成功呢,毕竟升级gradle一般要处理不少问题,特别是升级到gradle 8.x,需要改动的东西不少
  • 具体参考别人家的这篇文章吧:https://juejin.cn/post/7534903589255069722 ,主要内容就是:
      1. 处理编译报错问题
      1. 在gradle.properties文件强制指定aapt2版本问题:
      # gradle.properties
      android.aapt2FromMavenOverride=/Users/xxx/Android/sdk/build-tools/35.0.1/aapt2
      
      1. 因为步骤2出现了硬编码,可以使用gradle脚本实现,别人都写好了fixTarget35.gradle:https://gist.github.com/sickworm/ee2d64b12a770a88e7c860ae4058634a
      1. R8 编译失败,网上的解决方案是指定 R8 版本:
      buildscript {repositories {maven {url = uri("https://storage.googleapis.com/r8-releases/raw")}}dependencies {classpath 'com.android.tools:r8:8.4.27'}
      }
      
2. 老老实实升级到gradle 8.x版本,不过改修东西比较多,这里简单记录一些
    1. 缺少namespace问题,针对这个问题,可以通过gradle在编译期间强制指定,具体可以参考::https://blog.csdn.net/weixin_43952004/article/details/143177043
      subprojects {afterEvaluate { project ->if (project.plugins.hasPlugin('com.android.library') || project.plugins.hasPlugin('com.android.application')) {println "project: ${project.name} Namespace get: ${project.android.namespace}"def packageName = project.android.namespace ?: project.android.defaultConfig.applicationId ?: project.android.sourceSets.main.manifest.srcFile.text.find(/package="([^"]*)"/) ?: project.groupproject.android.namespace = packageNameprintln "Namespace set to: ${packageName} for project: ${project.name}"def manifestFile = project.android.sourceSets.main.manifest.srcFileif (manifestFile.exists()) {def manifestText = manifestFile.textif (manifestText.contains('package=')) {manifestText = manifestText.replaceAll(/package="[^"]*"/, "")manifestFile.text = manifestTextprintln "Package attribute removed in AndroidManifest.xml for project: ${project.name}"} else {println "No package attribute found in AndroidManifest.xml for project: ${project.name}"}} else {println "AndroidManifest.xml not found for project: ${project.name}"}}}
      }
    1. java或者kotlin版本不一致问题,这里统一指定为1.8
      allprojects {repositories {google()mavenCentral()maven { url 'https://maven.aliyun.com/repository/central' }maven { url 'https://maven.aliyun.com/repository/public' }maven { url 'https://maven.aliyun.com/repository/google'}maven { url 'https://maven.aliyun.com/repository/gradle-plugin'}}tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach {kotlinOptions.jvmTarget = '1.8'}afterEvaluate { project ->if (project.hasProperty('android')) {android {compileOptions {sourceCompatibility JavaVersion.VERSION_1_8targetCompatibility JavaVersion.VERSION_1_8}}}}
      }
      
http://www.aitangshan.cn/news/128.html

相关文章:

  • 常见光照范围
  • 无监督训练在NLP中的价值体现
  • HFSS许可证多用户支持
  • 【斯普林格出版、快至见刊后1个月检索】第五届现代教育技术与社会科学国际学术会议(ICMETSS 2025)
  • 8.11
  • 统计出哪个时间段在线人数最多
  • HotSpot虚拟机对象探秘 - Charlie
  • 哨兵卫星 在线查看网站
  • ExpeRepair: Dual-Memory Enhanced LLM-based Repository-Level Program Repair 论文笔记
  • GPT5模型工程重构实践
  • rdx与edx之间的关系
  • SSRF靶场
  • ubuntu上Docker的安装与卸载
  • C++编程2025秋课堂教学
  • 防止NLP模型更新中的性能回退技术解析
  • 1431. 拥有最多糖果的孩子
  • 35页PPT|零售行业自助数据分析方法论:指标体系构建平台集成、会员与商品精细化运营实践
  • 题解:P13685 【MX-X16-T3】「DLESS-3」XOR and Impossible Problem
  • 题解:P13684 【MX-X16-T2】「DLESS-3」XOR and Multiply
  • 有没有哪个勇士能顶顶百度的网盘,限速的太恶心了
  • 库卡机器人tag焊接保护气体流量控制系统
  • 微算法科技(NASDAQ:MLGO)通过蚁群算法求解资源分配的全局最优解,实现低能耗的区块链资源分配
  • VScode编译报错:正在执行任务: CMake: build build failed. * 终端进程启动失败(退出代码: -1)。 * 终端将被任务重用,按任意键关闭。
  • 电风扇离线语音芯片方案设计与应用场景
  • Vue 中操作data中数组的方法中哪些可以触发视图更新, 哪些不可以,不可以的话有什么解决办法?
  • sublimeText安装配置插件-xml2json
  • Hbuilderx编译正常但无法打开微信开发者工具
  • solidity学习之ERC4626
  • ECharts技巧:如何按数据批次为柱状图设置不同颜色✔️♨️
  • 找到一个数的最低二进制位(lowbit)