如果我使用低于 targetSdkVersion 的 buildToolsVersion 会发生什么情况

What happens if I use a buildToolsVersion which is lower than the targetSdkVersion

提问人:htafoya 提问时间:9/28/2023 最后编辑:htafoya 更新时间:9/28/2023 访问量:46

问:

我最近注意到 gradle 设置具有以下配置:

android {
    buildToolsVersion = 30.0.2

    defaultConfig {
       minSDk = 33
       targetSDK = 33
    }
}

如前所述,buildToolsVersion 与 targetSDK 不匹配。但是在过去几个月的测试和发布中,没有发生任何不好的事情。

现在,我最近没有修改任何与 gradle 或 sdk 相关的内容,但是在最近的应用程序升级出版物(2023 年 9 月)中,应用程序在尝试加载本机库时开始崩溃。

不兼容的 buildToolsVersion 是否会影响 Google 交付基于捆绑包的 apk 或库的编译和构建方式?

构建版本没有因错误而更新,现在我可以使用 33.0.2,它应该与 sdk 33 相匹配。

android-gradle-plugin targetsdkversion target-sdk

评论

1赞 Nikola Despotoski 9/28/2023
删除生成工具版本,它将采用您在计算机上安装的版本。
0赞 htafoya 9/28/2023
@NikolaDespotosk我不想这样做,因为有时其他机器中的其他进程会使用一些构建工具命令将其他进程注入或执行到捆绑包或APK中,因此版本必须匹配

答:

0赞 Scott Stanchfield 9/28/2023 #1

只要您使用的是 Android Gradle 插件 3.0.0 或更高版本,它就会自动选择正确的版本来使用。(只有当默认版本有问题时,才需要显式指定它)

请参阅 SDK 构建工具发行说明

评论

0赞 htafoya 9/28/2023
是的,但这并不能回答这个问题,如果我选择使用另一个更低的会发生什么?
0赞 Scott Stanchfield 9/28/2023
您确实希望使用最新的构建工具(让 Android Gradle 插件选择它),以确保您拥有与您正在使用的 SDK 版本相匹配的工具,并修复了最新的错误。例如,apksigner 多年来在其 APK 签名方案中发生了变化。如果使用较旧版本的生成工具,则无法使用更新的签名方案。(一般来说,较旧的主要版本的构建工具不知道较新的 Android SDK 中提供的功能和优化)
0赞 Scott Stanchfield 9/28/2023
我不得不问,您想使用旧版本有什么具体原因吗?从生成脚本中删除 buildToolsVersion 意味着要更新的版本号少了一个。
0赞 htafoya 9/29/2023
不,这不是故意的。但是上一个应用程序版本突然在某些设备上开始崩溃,这可能是构建工具未更新的原因。但是,我们已经做了一些测试,似乎没有关系。