升级Room引发的惨案!!

news2024/11/16 9:57:38

kotlin升级

在升级kotlin的时候,直接升级到大版本的kotlin(比如1.7以上),直接报错,只是报错不知道原因。
koltin Release details
后来把koltin版本改成1.6.0,报如下的错,我们才知道gradle是需要先升级的

所以 升级kotlin版本有问题,可以换一个别的kotlin版本试试
在这里插入图片描述
gradle升级也是一堆坑,我一开始想升级到比较新的版本7.3.3
Android Gradle 插件版本说明

可以在 Android Studio 的 File > Project Structure > Project 菜单中指定插件版本
在这里插入图片描述
但是,升级到最新版本报各种错,而且语法也变了。

7.3.3是gradle的版本,是gradle-wrapper中配置的,7.2.1是gradle的插件版本,这两个得匹配才行,在上面的文章中有对应说明。
gradle插件是配置在这儿的在这里插入图片描述
后来妥协了,只要6.1.1以上就行
gradle是6.3,gradle插件是4.0.1

kotlin 1.6.0 会在kaptGenerateStubDebugKolin卡住

不知道为什么,把kotlin版本换成了1.6.10正常了

gradle 升级过程中有个报错

gradle是6.3,gradle插件是4.0.1

没有这个问题

Caused by: java.lang.RuntimeException: Direct local .aar file dependencies are not supported when building an AAR. The resulting AAR would be broken because the classes and Android resources from any local .aar file dependencies would not be packaged in the resulting AAR. Previous versions of the Android Gradle Plugin produce broken AARs in this case too (despite not throwing this error). The following direct local .aar file dependencies of the :modules:module_push project caused this error: /Users/zhongyili/work/AndroidStudioProjects/sohuvideo_gradle/modules/module_push/libs/vivo_pushSDK_v3.0.0.4_484.aar, /Users/zhongyili/work/AndroidStudioProjects/sohuvideo_gradle/modules/module_push/libs/com.heytap.msp.aar
        at com.android.build.gradle.tasks.BundleAar.getHasLocalAarDeps(BundleAar.kt:61)
        at jdk.internal.reflect.GeneratedMethodAccessor603.invoke(Unknown Source)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at org.gradle.api.internal.tasks.properties.bean.AbstractNestedRuntimeBeanNode$BeanPropertyValue$1$1.create(AbstractNestedRuntimeBeanNode.java:79)
        at org.gradle.internal.deprecation.DeprecationLogger.whileDisabled(DeprecationLogger.java:225)
        at org.gradle.api.internal.tasks.properties.bean.AbstractNestedRuntimeBeanNode$BeanPropertyValue$1.get(AbstractNestedRuntimeBeanNode.java:75)
        at com.google.common.base.Suppliers$NonSerializableMemoizingSupplier.get(Suppliers.java:167)
        at org.gradle.api.internal.tasks.properties.bean.AbstractNestedRuntimeBeanNode$BeanPropertyValue.call(AbstractNestedRuntimeBeanNode.java:145)
        at org.gradle.api.internal.tasks.properties.AbstractValidatingProperty.validate(AbstractValidatingProperty.java:39)
        at org.gradle.api.internal.tasks.properties.DefaultTaskProperties.validate(DefaultTaskProperties.java:193)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$TaskExecution.validate(ExecuteActionsTaskExecuter.java:505)
        at org.gradle.internal.execution.steps.ValidateStep.execute(ValidateStep.java:50)
        at org.gradle.internal.execution.steps.SkipEmptyWorkStep.lambda$execute$2(SkipEmptyWorkStep.java:78)
        at org.gradle.internal.execution.steps.SkipEmptyWorkStep.execute(SkipEmptyWorkStep.java:78)
        at org.gradle.internal.execution.steps.SkipEmptyWorkStep.execute(SkipEmptyWorkStep.java:34)
        at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsStartedStep.execute(MarkSnapshottingInputsStartedStep.java:39)
        at org.gradle.internal.execution.steps.LoadExecutionStateStep.execute(LoadExecutionStateStep.java:40)
        at org.gradle.internal.execution.steps.LoadExecutionStateStep.execute(LoadExecutionStateStep.java:28)
        at org.gradle.internal.execution.impl.DefaultWorkExecutor.execute(DefaultWorkExecutor.java:33)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:192)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:184)
        at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:114)
        at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46)
        at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:62)
        at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57)
        at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:56)
        at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36)
        ... 116 more

这个意思是,library被打成aar包,里面放的aar包不会被打进最终的aar包里面,这个应该是gradle版本不同导致的,之前没升级gradle之前没事。
修改办法,在library中如下修改

-    implementation files('libs/vivo_pushSDK_v3.0.0.4_484.aar')
-    implementation files('libs/com.heytap.msp.aar')
+
+    compileOnly(name: 'vivo_pushSDK_v3.0.0.4_484', ext: 'aar')
+    compileOnly(name: 'com.heytap.msp', ext: 'aar')

把编译方式从implementation变成compileOnly

在工程的build.gradle文件中加入如下代码:

allprojects {
    repositories {
        
        flatDir { dirs '../frameworks/baseAarInfoLib/libs', '../baseAarInfoLib/libs', '../modules/module_push/libs' }
    }
}

其实就是把library中的libs文件夹作为aar包的加载源。

在application module的build.gradle文件中加入如下代码:

    api(name: 'vivo_pushSDK_v3.0.0.4_484', ext: 'aar')
    api(name: 'com.heytap.msp', ext: 'aar')

room升级到2.5.0

升级koltin原因就是升级了room,导致了gradle也升级

通过Android studio build 结果编译的时候一直报错,也看不出什么错
A failure occurred while executing org.jetbrains.kotlin.gradle.internal.KaptExecution
A failure occurred while executing org.jetbrains.kotlin.gradle.internal.KaptExecution

得通过下面的命令编译,能看到错误信息

./gradlew assembleDebug --stacktrace
Caused by: java.lang.IllegalArgumentException: Modifiers [PRIVATE] are not allowed on Kotlin parameters. Allowed modifiers: [VARARG, NOINLINE, CROSSINLINE]
        at com.squareup.kotlinpoet.ParameterSpec.<init>(ParameterSpec.kt:41)
        at com.squareup.kotlinpoet.ParameterSpec.<init>(ParameterSpec.kt:29)
        at com.squareup.kotlinpoet.ParameterSpec$Builder.build(ParameterSpec.kt:157)
        at com.squareup.kotlinpoet.FunSpec$Builder.addParameter(FunSpec.kt:500)
        at permissions.dispatcher.processor.impl.kotlin.KotlinBaseProcessorUnit.createPermissionRequestClass(KotlinBaseProcessorUnit.kt:452)
        at permissions.dispatcher.processor.impl.kotlin.KotlinBaseProcessorUnit.createPermissionRequestClasses(KotlinBaseProcessorUnit.kt:415)
        at permissions.dispatcher.processor.impl.kotlin.KotlinBaseProcessorUnit.createFile(KotlinBaseProcessorUnit.kt:43)
        at permissions.dispatcher.processor.impl.kotlin.KotlinBaseProcessorUnit.createFile(KotlinBaseProcessorUnit.kt:17)
        at permissions.dispatcher.processor.PermissionsProcessor.processKotlin(PermissionsProcessor.kt:68)
        at permissions.dispatcher.processor.PermissionsProcessor.process(PermissionsProcessor.kt:58)
        at org.jetbrains.kotlin.kapt3.base.incremental.IncrementalProcessor.process(incrementalProcessors.kt:90)
        at org.jetbrains.kotlin.kapt3.base.ProcessorWrapper.process(annotationProcessing.kt:188)
        at jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment.callProcessor(JavacProcessingEnvironment.java:980)
        ... 38 more

通过如下命令能知道依赖关系

 ./gradlew :sohuVideoMobile:dependencies > /Users/zhongyili/Downloads/depen6
kapt
+--- androidx.room:room-compiler:2.5.0
|    +--- androidx.room:room-common:2.5.0
|    |    +--- androidx.annotation:annotation:1.3.0
|    |    \--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.7.20
|    |         +--- org.jetbrains.kotlin:kotlin-stdlib:1.7.20
|    |         |    +--- org.jetbrains.kotlin:kotlin-stdlib-common:1.7.20
|    |         |    \--- org.jetbrains:annotations:13.0
|    |         \--- org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.7.20
|    |              \--- org.jetbrains.kotlin:kotlin-stdlib:1.7.20 (*)
|    +--- androidx.room:room-compiler-processing:2.5.0
|    |    +--- com.google.auto:auto-common:0.11
|    |    |    \--- com.google.guava:guava:29.0-jre -> 31.1-jre
|    |    |         +--- com.google.guava:failureaccess:1.0.1
|    |    |         +--- com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava
|    |    |         +--- com.google.code.findbugs:jsr305:3.0.2
|    |    |         +--- org.checkerframework:checker-qual:3.12.0
|    |    |         +--- com.google.errorprone:error_prone_annotations:2.11.0
|    |    |         \--- com.google.j2objc:j2objc-annotations:1.3
|    |    +--- com.google.auto.value:auto-value-annotations:1.6.3
|    |    +--- com.google.devtools.ksp:symbol-processing-api:1.7.20-1.0.6
|    |    |    \--- org.jetbrains.kotlin:kotlin-stdlib:1.7.20 (*)
|    |    +--- com.google.guava:guava:31.1-jre (*)
|    |    +--- com.intellij:annotations:12.0
|    |    +--- com.squareup:javapoet:1.13.0
|    |    +--- com.squareup:kotlinpoet:1.12.0
|    |    |    +--- org.jetbrains.kotlin:kotlin-reflect:1.7.0
|    |    |    |    \--- org.jetbrains.kotlin:kotlin-stdlib:1.7.0 -> 1.7.20 (*)
|    |    |    \--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.7.0 -> 1.7.20 (*)
|    |    +--- com.squareup:kotlinpoet-javapoet:1.12.0
|    |    |    +--- com.squareup:kotlinpoet:1.12.0 (*)
|    |    |    +--- com.squareup:javapoet:1.13.0
|    |    |    \--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.7.0 -> 1.7.20 (*)
|    |    +--- org.jetbrains.kotlin:kotlin-stdlib:1.7.20 (*)
|    |    +--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.7.20 (*)
|    |    \--- org.jetbrains.kotlinx:kotlinx-metadata-jvm:0.5.0
|    |         \--- org.jetbrains.kotlin:kotlin-stdlib:1.7.0 -> 1.7.20 (*)
|    +--- androidx.room:room-migration:2.5.0
|    |    +--- androidx.room:room-common:2.5.0 (*)
|    |    +--- com.google.code.gson:gson:2.9.0
|    |    \--- org.jetbrains.kotlin:kotlin-stdlib:1.7.20 (*)
|    +--- com.google.auto:auto-common:0.11 (*)
|    +--- com.google.auto.value:auto-value-annotations:1.6.3
|    +--- com.google.devtools.ksp:symbol-processing-api:1.7.20-1.0.6 (*)
|    +--- com.intellij:annotations:12.0
|    +--- com.squareup:javapoet:1.13.0
|    +--- com.squareup:kotlinpoet:1.12.0 (*)
|    +--- com.squareup:kotlinpoet-javapoet:1.12.0 (*)
|    +--- commons-codec:commons-codec:1.15
|    +--- org.jetbrains.kotlin:kotlin-stdlib:1.7.20 (*)
|    +--- org.jetbrains.kotlinx:kotlinx-metadata-jvm:0.5.0 (*)
|    \--- org.xerial:sqlite-jdbc:3.36.0
+--- com.alibaba:arouter-compiler:1.5.1
|    +--- com.alibaba:arouter-annotation:1.0.6
|    +--- com.squareup:javapoet:1.8.0 -> 1.13.0
|    +--- org.apache.commons:commons-lang3:3.5
|    +--- org.apache.commons:commons-collections4:4.1
|    \--- com.alibaba:fastjson:1.2.48
\--- com.github.permissions-dispatcher:permissionsdispatcher-processor:4.9.2
     +--- androidx.annotation:annotation:1.0.0 -> 1.3.0
     +--- org.jetbrains.kotlinx:kotlinx-metadata-jvm:0.3.0 -> 0.5.0 (*)
     +--- com.squareup:javapoet:1.9.0 -> 1.13.0
     +--- com.squareup:kotlinpoet:1.3.0 -> 1.12.0 (*)
     +--- com.github.permissions-dispatcher:permissionsdispatcher-annotation:4.9.2
     \--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.5.20 -> 1.7.20 (*)

这个不好搞,我把permissionsdispatcher升级到最新版本还是报这个错。我研究了一下com.squareup:kotlinpoet:1.12.0 是androidx.room:room-compiler:2.5.0引用的,这样会把permissionsdispatcher引用的kotlinpoet版本也会从1.3.0变成1.12.0

,然后就报上面的错了。即便,我强制让kotlinpoet是1.3.0版本,room2.5.0又报错了,它得用kotlinpoet1.12.0版本。这两个库使用kotlinpoet的版本有冲突

permissionsdispatcher升级折腾了几小时,包名进行了改变

妈蛋,解决不了了

可能是room版本太新,降低到2.4.3

把room版本降低到2.4.3,library aar包的问题和permissionsdispatcher的问题都没有了。

最终的配置是:
gradle是6.3,gradle插件是4.0.1,kotlin 1.6.10,room 2.4.3

太难了,折腾了我三四天

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/350541.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

积水内涝监测——埋入式积水终端设备介绍

一、设备概述 埋入式积水终端是针对城市内涝推出的积水信息监测采集设备&#xff0c;采用超声波传感技术&#xff0c;对积水的深度进行精确的测量。产品能够在低温、腐蚀环境下可靠运行本产品特别适用于智慧城市中&#xff0c;对城市道路、社区低洼处的积水进行实时监测上报到…

(十)、通过云对象修改阅读量+点赞功能的实现【uniapp+uinicloud多用户社区博客实战项目(完整开发文档-从零到完整项目)】

1&#xff0c;通过云对象importObj修改阅读量 1.1 新建云对象 1.2 云对象中写自增自减方法 封装云对象utilsObj中的自增自减方法&#xff0c;方法名取为operation&#xff0c;传递4个参数。 // 云对象教程: https://uniapp.dcloud.net.cn/uniCloud/cloud-obj // jsdoc语法提…

火山引擎数智平台的这款产品,正在帮助 APP 提升用户活跃度

更多技术交流、求职机会&#xff0c;欢迎关注字节跳动数据平台微信公众号&#xff0c;回复【1】进入官方交流群 你有没有关注过 APP 给你推送的消息&#xff1f; 出于提升用户活跃度的考虑&#xff0c;APP 会定期在应用内面向用户进行内通推送&#xff0c;推送形式既包括 APP …

查看jdk安装路径,在windows上实现多个java jdk的共存解决办法,安装java19后终端乱码的解决

查看jdk安装路径&#xff0c; 在windows上实现多个java jdk的共存解决办法&#xff0c; 安装java19后终端乱码的解决 目录 一、查看jdk&#xff08;java开发工具包&#xff09;安装路径的方法 二、在windows上实现多个java jdk的共存 &#xff08;1&#xff09;、安装好多…

【数据宝应用场景】智慧工地哪些场景需要用到哪些大数据?

近几年来&#xff0c;我国施工安全管理日趋严格&#xff0c;人力成本逐渐提升&#xff0c;人力成本压力逐渐增加&#xff0c;通过大数据、物联网、云计算和智能设备等软硬件信息化技术能有效提升工地的生产效率、管理效率等&#xff0c;实现工地的数字化、精细化、智慧化管理&a…

WGCNA | 值得你深入学习的生信分析方法!~(网状分析-第四步-模块的功能注释)

1写在前面 前面我们用WGCNA分析得到多个模块&#xff0c;其中有一些模块和我们感兴趣的表型或者临床特征是相关的。&#x1f973; 接着就是要做模块的富集分析了&#xff0c;帮助我们了解这些模块的基因都有哪些已知的功能&#xff0c;涉及到哪些通路&#xff0c;在哪些疾病中最…

贪心算法-蓝桥杯

一、贪心算法的优缺点优点&#xff1a;1.容易理解:生活常见。2.操作简单:在每一步都选局部最优。3.效率高: 复杂度常常是O(1)的。缺点&#xff1a;1.局部最优不一定是全局最优。二、例子: 最少硬币问题硬币面值1、2、5。支付13元&#xff0c;要求硬币数量最少。贪心法: (1) 5元…

工程项目管理系统源码之工程项目管理系统面临的挑战

​ ​工程项目管理系统是指从事工程项目管理的企业&#xff08;以下简称工程项目管理企业&#xff09;受业主委托&#xff0c;按照合同约定&#xff0c;代表业主对工程项目的组织实施进行全过程或若干阶段的管理和服务。 ​系统定义 工程项目管理企业不直接与该工程项目的总承包…

电商项目之电子账户的收单模式

文章目录1 问题背景2 前言3 什么是电子账户支付方式4 什么是收单模式5 电子账户有哪些收单模式5.1 Direct Pay模式5.2 Auth Capture模式5.3 ESCOW模式6 区别1 问题背景 笔者从事电商开发有1年多&#xff0c;对接了10几个信用卡支付方式&#xff0c;也接触了像PayPal这种电子账户…

零基础学习测试还是开发?

软件测试作为IT行业的刚需职位&#xff0c;其实是非常适合0基础的小白同学加入学习的但是具体选择测试还是开发还是要看你个人的兴趣爱好以及学习能力&#xff0c;对哪个感兴趣&#xff0c;哪个能学的会就选择哪个就可以了 平时说起程序员印象中大都是做Java、做前端、做后端&…

春招Leetcode刷题日记-D4-双指针算法-滑动窗口快慢指针

D4-双指针算法-滑动窗口&&快慢指针快慢指针算力扣141. 环形链表思路代码力扣142. 环形链表 II思路代码滑动窗口力扣76. 最小覆盖子串思路代码力扣424. 替换后的最长重复字符思路代码快慢指针算 快慢指针算法&#xff0c;多用于链表当中&#xff0c;常见的如&#xff1…

Java锁相关知识

目录 线程安全 对象头Mark 偏向锁 轻量级锁 减少锁持有时间 减小锁粒度 锁分离 锁粗化 锁消除 无锁自旋锁 线程安全 多线程访问ArrayList 多线程网站统计访问人数,是否需要精确统计&#xff1f;如果不需要&#xff0c;可以不进行加锁 public static List<Integ…

ROS2 humble安装-chatgpt版本

如果按照chatgpt版本可能不合适。请一定要参考官网。ROS (Robot Operating System) 是一个开源的机器人操作系统&#xff0c;提供了一系列软件库和工具&#xff0c;用于构建机器人应用程序。以下是在 Ubuntu 系统中安装 ROS Humble 的详细步骤和方法&#xff1a;首先&#xff0…

网络安全入门必备:渗透常用命令速查手册

系统信息 arch #显示机器的处理器架构(1) uname -m #显示机器的处理器架构(2) uname -r #显示正在使用的内核版本 dmidecode -q #显示硬件系统部件 - (SMBIOS / DMI) hdparm -i /dev/hda #罗列一个磁盘的架构特性 hdparm -tT /dev/sda #在磁盘…

CMake系列:正确使用多配置编译系统

目录 常见错误 问题现象 正确做法 if指令应该什么时候使用 活学活用 把IF指令用于多配置编译系统是很多初学者容易犯下的错误。这篇文章启示性的教你如何正确理解、使用CMake的多配置编译系统。 常见错误 以Debug和Release配置有不同的宏定义为例&#xff0c;如下所示&a…

大数据选股智能推荐系统V1.0-1

很长时间没有发布博客了&#xff0c;这段时间个人确实有点忙。另外一方面在这段时间我也没有闲着。自己研发了一套大数据选股的智能推荐系统。废话不说&#xff0c;我们先来看这套系统&#xff1a;登录页面&#xff1a;&#xff08;技术点&#xff1a;验证码的生成&#xff09;…

webrtc QOS笔记一 Neteq直方图算法浅读

webrtc QOS笔记一 Neteq直方图算法浅读 文章目录webrtc QOS笔记一 Neteq直方图算法浅读Histogram Algorithm获取目标延迟遗忘因子曲线Histogram Algorithm DelayManager::Update()->Histogram::Add() 会根据计算的iat_packet(inter arrival times, 实际包间间隔 / 打包时长…

基于SpringBoot的在线课程管理系统

文末获取源码 开发语言&#xff1a;Java 框架&#xff1a;springboot JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 5.7/8.0 数据库工具&#xff1a;Navicat11 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.3.9 浏…

哈尔滨工业大学2020届面向服务复习笔记

目录 一、面向服务架构SOA 1.SOA概念 SOA所解决的问题 SOA的特性 SOA的特征 SOA组成要素 2.SOA服务设计原则 3.SOA协作模式 4.SOMA开发方法 SOMA生命周期 敏捷开发 服务外包与众包 5.ESB原理与机制 ESB解决的问题 ESB的功能 ESB关键技术 ESB的优势 6.服务组…

【Opencv--形态学操作】膨胀、腐蚀、开/闭操作:cv2.morphologyEx、cv2.erode、cv2.dilate

【Opencv–形态学操作】膨胀、腐蚀、开/闭操作 文章目录【Opencv--形态学操作】膨胀、腐蚀、开/闭操作1. 介绍2. 形态学操作2.1 腐蚀和膨胀2.1.1 腐蚀2.1.2 膨胀2.1.3 代码示例2.2 开/闭操作2.2.1 开操作2.2.2 闭操作2.2.3 代码示例2.3 礼帽和黑帽2.3.1 礼帽运算2.3.2 黑帽运算…