关于安卓升级gradle8.0和jdk17的要点

背景

升着玩

思路

把旧项目,gradle7.0+和jdk11,直接升级到gradle8.0和jdk17。

开发环境

win10,as4+,jdk8+

过程

要点

对于安卓targetVersion的升级要点,没什么好说的,提一下核心的改动点。

安卓12,pendingIntent,蓝牙这两块是重点,pendingIntent可以整合一个工具类,统一创建,统一适配。蓝牙,得判断版本,再去申请权限。

安卓13,图片,视频读取权限变更,这里注意适配一下就好了,可能对于某些音频相关的应用,会有比较大的影响。

过程

首先,在targetVersion升级的过程中,会有:

(1)namespace的申明变动,这个cv解决就好了。

(2)会有buildConfig的失效。这个直接在对应的module,进行下面代码的配置即可。

复制代码
    buildFeatures{
        buildConfig = true
    }

(3)会有compose版本的兼容问题,这里博主配置如下:

复制代码
    composeRootDp = [
            //platform('androidx.compose:compose-bom:2022.12.00'),
            'androidx.compose:compose-bom:2024.01.00'
    ]
    composeDep = [
            'androidx.compose.material3:material3',
            'androidx.compose.material:material',
            'androidx.compose.foundation:foundation:1.6.0',
            'androidx.compose.ui:ui',
            'androidx.compose.ui:ui-tooling-preview',
            'androidx.compose.ui:ui-tooling',
            'androidx.compose.ui:ui-test-junit4',
            'androidx.compose.ui:ui-test-manifest',
            'androidx.compose.material:material-icons-core',
            'androidx.compose.material:material-icons-extended',
            'androidx.compose.material3:material3-window-size-class',
            'androidx.activity:activity-compose:1.5.1',
            'androidx.lifecycle:lifecycle-viewmodel-compose:2.5.1',
            "androidx.compose.runtime:runtime:1.7.0", // 或者使用最新版本
            "androidx.compose.runtime:runtime-livedata:1.7.0",// 可选
            'androidx.compose.runtime:runtime-rxjava2:1.7.0',
            'androidx.lifecycle:lifecycle-runtime-ktx:2.7.0',
            'com.google.accompanist:accompanist-swiperefresh:0.34.0',
            'com.airbnb.android:lottie-compose:6.1.0',
    ]

关联的编译版本

复制代码
            compileSdkVersion: 34,
            buildToolsVersion: "34.0.0",
            minSdkVersion    : 24,
            targetSdkVersion : 34,

(4)签名,打包问题。如果升级了jdk版本,在你进行加固包重签名,多渠道(walle)的时候,也必须用上对应的jdk环境进行操作,否则会失败或者应用闪退。

(5)代码兼容低版本方面,代码如下,博主兼容的是jdk8

复制代码
    compileOptions {
        sourceCompatibility 1.8
        targetCompatibility 1.8
    }
    kotlinOptions {
        jvmTarget = '1.8'
    }

上面就是博主遇到升级gradle8.0和jdk17遇到的要点,有其他的问题欢迎评论区留言。

相关推荐
AFinalStone3 小时前
Android 7系统网络(四)Native层(下)—netd Controller详解
android·网络
爱笑鱼3 小时前
Handler(一):post 之后,Runnable 到底在哪个线程执行?
android
木木子224 小时前
[特殊字符] 音乐播放器——状态驱动的多媒体控制
android·开发语言·华为·php·harmonyos
雨白4 小时前
C 语言基础:结构体、联合体与枚举
android
阿巴斯甜5 小时前
Android 代码混淆
android
apihz7 小时前
台风实时与历史详情查询免费 API 接口完整教程
android·开发语言·tcp/ip·dubbo·台风·天气预报
浪客川8 小时前
AOSP源码隐藏状态栏
android·aosp
没有了遇见8 小时前
AI Agent 是什么?—— 一文理解 LLM、Memory、Skills、Tools、MCP、Workflow,Context
android·前端·程序员
知行合一。。。9 小时前
LangChain--07--智能体、Agent的基本用法
android·数据库·langchain
御坂嘀喵9 小时前
Speed Tools:一套低侵入的 Android 插件化 + 动态换肤 + 字体切换框架
android·gitee