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

Android targetSdkVersion 升级为34 问题处理


原因是发布到GooglePlay遭到拒绝,需要最低API level为34。之前为31,感觉还挺高的,但是GooglePlay需要的更高。
记录下处理问题:

1.升级gradle版本为8.0.2

之前是:

classpath 'com.android.tools.build:gradle:7.1.0-alpha11'
distributionUrl=https\://mirrors.cloud.tencent.com/gradle/gradle-7.2-bin.zip

升级为:

classpath 'com.android.tools.build:gradle:8.0.2'
distributionUrl=https\://mirrors.cloud.tencent.com/gradle/gradle-8.0-bin.zip

应该会有更高的版本,但是升级到8.9-bin.zip时会有问题,然后看到有开发者用的8.0-bin.zip,就切到了这个版本

2.升级Android Studio Ladybug | 2024.2.1

Build #AI-242.21829.142.2421.12409432, built on September 25, 2024

Cannot convert string value 'UNIFIED_TEST_PLATFORM' to an enum value of type 'com.android.builder.model.AndroidGradlePluginProjectFlags$BooleanFlag'
遇到上述问题,需要升级编辑器

3.Namespace not specified 问题

How do I fix ‘namespace not specified’ error in Android Studio?
过程中遇到了

Namespace not specified. Please specify a namespace in the module's build.gradle file like so:
android {
	·namespace 'com.example.namespace'
}

解决方案比较麻烦
1.将清单文件AndroidManifest.xml里的package="cn.xx.xx"删掉
2.在module(如果有依赖的library也要添加)的build.gradle文件下添加

android {
    namespace 'cn.xx.xx'

3.在项目project根目录的build.gradle下添加

    // This code is where all the magic happens and fixes the error.
    subprojects {
        afterEvaluate { project ->
            if (project.hasProperty('android')) {
                project.android {
                    if (namespace == null) {
                        namespace project.group
                    }
                }
            }
        }
    }

4.dataBinding 和 buildConfig 处理

Android BuildConfig不生成的解决办法

android {
    buildFeatures {
        dataBinding = true
        buildConfig = true
    }
}

5.JDK升级为17

Android Studio 中的 Gradle JDK 配置

android {
	compileOptions {
	        targetCompatibility JavaVersion.VERSION_17
	        sourceCompatibility JavaVersion.VERSION_17
    }
}

旧版本Android Studio可直接在编辑器里下载

然后在新编辑器里选择版本17

如果是新版本的话,可去JDK官网下载,然后再配置jdk环境变量

49 = Java 5
50 = Java 6
51 = Java 7
52 = Java 8
53 = Java 9
54 = Java 10
55 = Java 11
56 = Java 12
57 = Java 13
58 = Java 14
59 = Java 15
60 = Java 16
61 = Java 17
62 = Java 18
63 = Java 19
64 = Java 20
65 = Java 21

6.kotlin_version 最低版本为:1.6.20

    dependencies {
        classpath 'com.android.tools.build:gradle:8.0.2'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.20"
    }

7.可使用AGP Upgrade Assistant引导修改

8.动态广播接收器处理

Android14 适配之——targetSdkVersion 升级到 34 需要注意些什么?

val filter = IntentFilter("alarmReceiver_custom_action")
val listenToBroadcastsFromOtherApps = true
val receiverFlags = if (listenToBroadcastsFromOtherApps) {
    ContextCompat.RECEIVER_EXPORTED    // 该接收器对其他应用开放
} else {
    ContextCompat.RECEIVER_NOT_EXPORTED    // 该接收器不对其他应用开放
}
// 这里的 registerReceiver 方法必须设置 receiverFlags 参数
registerReceiver(requireContext(), AlarmReceiver(), filter, receiverFlags)

// 发送广播
val intent = Intent("alarmReceiver_custom_action")    // 方式1
//val intent = Intent(requireActivity(), AlarmReceiver::class.java)    // 方式2
requireActivity().sendBroadcast(intent)

9.switch 报错

Android中使用switch-case遇到case R.id.xxx报错
需要在gradle.properties中添加

android.enableJetifier=true
android.defaults.buildfeatures.buildconfig=true
android.nonTransitiveRClass=true
android.nonFinalResIds=false

10.targetSdk minSdk compileSdk

targetSdkVersion 改为 targetSdk
minSdkVersion 改为 minSdk
compileSdkVersion 改为 compileSdk


http://www.kler.cn/news/341052.html

相关文章:

  • 减少重复的请求之promise缓存池(闭包版) —— 缓存promise,多次promise等待并返回第一个promise的结果
  • 75.【C语言】文件操作(2)
  • 计算机毕业设计—基于python技术的机器学习、深度学习毕业设计选题的一些思考及参考
  • Pikachu-File Inclusion-远程文件包含
  • redis——哨兵机制
  • Vortex GPGPU的github流程跑通与功能模块波形探索(二)
  • 环形缓冲区(Ring Buffer)在STM32 HAL库中的应用:防止按键丢失
  • 第69期 | GPTSecurity周报
  • 三色标记算法
  • prctl的函数和pthread_self函数
  • Linux中的多线程
  • 打造直播美颜平台的关键技术:视频美颜SDK的深度解析
  • QDesktopWidget Class
  • Chromium 中js Fetch API接口c++代码实现(一)
  • HarmonyOS第一课 05 从简单的页面开始-开发01
  • Dockerfile搭建环境案例
  • 【EXCEL数据处理】000021 案例 保姆级教程,附多个操作案例。EXCEL文档安全性设置。
  • 「Ubuntu」文件权限说明(drwxr-xr-x)
  • LabVIEW提高开发效率技巧----阻塞时钟
  • SpringBoot面试题收集