Android Studio版本升级那些事

Android Studio版本升级那些事

文章目录

一、前言

Android Studio目前最新版本是 2024.2.1 主要版本特征是为了更好支持kotlin代码的编译运行。

2017年的Android Studio 版本已经支持kotlin的正常开发了;

但是真正比较完善的kotlin编辑的版本是2023年的版本;

我这里不是想讲AndroidStudio对kotlin的支持,因为系统开发代码中kotlin虽然有,但是不多,影响比较小。

本文主要是记录一下,Android Studio旧版本无法编译安装Android13 以后的签名应用。

开发Android13 的系统源代码后,我发现我的系统签名文件无法在Android Studio 中加载签名文件编译运行到设备中。

提示报错是:INSTALL_FAILED_SHARED_USER_INCOMPATIBLE,

大概意思就是sharedUserId不匹配。

网上看了几个文章说是更新JDK版本就行了,但是试了一下不行,后面更新Android Studio 发现也不行,最后是更新了Gradle为8.7版本就OK了。

下面记录一下。也写了一下Android和Gradle的历史版本让大家了解一下。

二、Android Studio版本相关知识

系统签名应用无法安装是有很多情况的,签名证书不信息匹配,环境问题,版本问题等等。

这里的 INSTALL_FAILED_SHARED_USER_INCOMPATIBLE 错误相当于环境问题。

可能会有不同情况,这里只做这种情况的简单介绍。

1、Android13 签名应用无法在Android Studio 编译运行解决

(1)无法编译运行前的尝试
复制代码
1、更新JDK版本,修改比较麻烦!没啥用。
2、更新Android Studio 版本,下载安装覆盖就可以用了,但是也不行。

3、我以为无法适配了,等几个月后,发现有的同时是可以编Android13的系统应用正常运行的
所以办法肯定是有的,只是没找到关键的地方
有的同事说是更新了版本,有的同事说是更新了JDK。。。
我当时旧的Android Studio版本是2021年安装的,比较旧了。
我旧项目的Gradle看了一下版本是Gradle 6.5,新的Android Studio 安装的软件默认是Gradle8.7 版本的。

4、新建项目添加系统签名证书测试
发现新建的项目添加系统签名是可以安装的,说明和Gradle版本有关。
具体到哪个Gradle版本才能支持Android13 或者更新版本的系统签名,
这个就好考证了,不想去一一尝试了;


5、替换Gradle版本进行编译
后面发现旧项目的Gradle的版本是6.5,把旧项目中的Gradle替换成最新版本创建的应用的8.7版本的Gradle就ok了。

系统签名需要AndroidManifest里面声明 "android.uid.system",

并且在build.gradle里面的signingConfigs 加载签名文件和配置签名文件信息。

如果只配置签名文件信息,不加声明uid,只会被当成普通签名应用,不会有系统权限。

2、Android Studio 的历史版本介绍

复制代码
以下是一些常见的 Android Studio 版本:
早期版本
0.1:2013 年 5 月开始的早期访问预览版本.
0.8:2014 年 6 月发布的 beta 版本.
1.0:2014 年 12 月发布的第一个稳定版本.
1.x 版本
1.1:2015 年 2 月发布.
1.2:2015 年 4 月发布.
1.3:2015 年 7 月发布.
1.4:2015 年 9 月发布.
1.5:2015 年 11 月发布.
2.x 版本
2.0:2016 年 4 月发布.
2.1:2016 年 4 月发布.
2.2:2016 年 9 月发布.
2.3:2017 年 3 月发布.
3.x 版本
3.0:2017 年 10 月发布,该版本及以后开始支持 Kotlin 。在性能优化方面有一定提升,比如构建速度有所加快等.
3.1:2018 年 3 月发布,对 Android 8.1 的支持更好,同时在 IDE 的稳定性和性能方面有进一步改进.
3.2:2018 年 9 月发布,增强了对 Kotlin 的支持,包括更好的 Kotlin 代码编辑和调试体验等.
3.3:2019 年 1 月发布,包含了一些对布局编辑器、构建系统等方面的改进和优化.
3.4:2019 年 4 月发布,主要是对一些新特性和功能的支持以及 bug 的修复.
3.5:2019 年 8 月发布,进一步提升了 IDE 的性能和稳定性,同时对一些 Android 开发的新特性提供了更好的支持.
3.6:2020 年 2 月发布,在构建速度、代码分析等方面有一定的优化和改进.
4.x 版本
4.0:2020 年 5 月发布,带来了一些新的功能和改进,如对 Java 8 语言特性的更好支持,以及在布局编辑器、调试工具等方面的优化.
4.1:2020 年 10 月发布,主要是对开发工具和流程的进一步优化,提高了开发效率.
4.2:2021 年 5 月发布,增强了对新 Android 版本和技术的支持,同时在 IDE 的性能和稳定性方面有持续提升.
以动物命名的版本
Arctic Fox(北极狐):2020.3.1 版本,在对新 Android 版本的支持以及开发工具的优化方面有一定的更新.
Bumblebee(大黄蜂):2021.1.1 版本,进一步提升了开发体验,包括对 Kotlin 的更好支持、构建系统的优化等.
Chipmunk(花栗鼠):2021.2.1 版本,对 IDE 的性能和稳定性进行了改进,同时在代码编辑、调试等方面有一些新的特性和优化.
Dolphin(海豚):2021.3.1 版本,在日志查看、代码分析等方面有一定的更新和优化,提升了开发过程中的调试和问题排查效率.
Electric Eel(电鳗):2022.1.1 版本,增强了对新 Android 特性的支持,同时在 IDE 的界面和操作流程方面有一些改进,使其更加便捷和高效.
Flamingo(火烈鸟):2022.2.1 版本,在构建速度、代码编辑体验等方面有显著提升,并且对 Android 12 的支持更加完善.
Giraffe(长颈鹿):2022.3.1 版本,主要是对 IDE 的性能优化和一些新功能的引入,如改进的布局编辑器等.
Hedgehog(刺猬):2023.1.1 版本,进一步提升了 IDE 的稳定性和性能,同时在代码分析和调试方面有一些新的特性和改进.
Iguana(鬣蜥):2023.2.1 版本,增强了对 Kotlin 的支持,优化了代码编辑和调试的流程,提高了开发效率.
Jellyfish(水母):2023.3.1 版本,在对新 Android 版本和技术的支持上有一定的更新,同时优化了 IDE 的性能和用户体验.
最新版本
Koala Feature Drop:2024.1.2 版本,包含了一些新的特性和功能改进,如对特定 API 级别的更好支持等.
Ladybug:2024.2.1 版本,引入了 IntelliJ 2024.2 平台的更新,具备集成 K2 模式以提高 Kotlin 的稳定性、增强 IDE 启动效率、简化 cron 表达式管理等新特性.

现在2024年底了,最新版本是2024.2.1。

说明2024年是出了两个版本的,2025年肯定也是会出新版本的。

4、Android Studio Gradle 的历史版本

复制代码
以下是 Android Studio Gradle 的一些主要历史版本及相关信息:
Gradle 1.x 系列

    主要特点:稳定性和性能有显著提升,引入了使用 Groovy 脚本实现自定义构建逻辑的功能,开发者可通过自定义任务和插件扩展构建过程.
    
Gradle 2.x 系列
    主要特点:实现了多模块项目的支持,使开发者能够在单个项目中管理多个模块,更便于处理具有多个组件的复杂应用程序.

Gradle 3.x 系列
    主要特点:增加了对 Kotlin 作为构建语言的支持,让开发者可以使用 Kotlin 编写构建脚本,与 Android 生态系统更好地集成.

Gradle 4.x 系列
    主要特点:持续优化构建过程,提升了性能,并引入了 AndroidX 库来替代传统的 Android 支持库,以增强 Android 组件的模块化并减小 APK 体积.

Gradle 5.x 系列
    主要特点:进一步提高了性能和稳定性,支持在构建脚本中使用 Java 8 语言特性,如 lambda 表达式和方法引用等,使构建逻辑更加现代化.

Gradle 6.x 系列
    主要特点:带来了重大更新,包括性能改进、增强的安全特性以及对多模块项目的更好支持。还引入了新的插件系统,简化了依赖管理和插件的使用.
Gradle 7.x 系列
    主要特点:改进了对 Kotlin DSL(领域特定语言)的支持,开发者能够完全使用 Kotlin 编写构建脚本,与其他基于 Kotlin 的项目集成更加容易,进一步提升了开发效率和代码的可读性.

Gradle 8.x 系列
    主要特点:Kotlin DSL 增强,引入了解释器以跳过声明性插件的 Kotlin 编译步骤,并升级到了 Kotlin 的 API 级别;BuildSrc 改进,可直接执行任务,跳过特定测试 ;配置缓存优化,提升了配置缓存的功能,允许从缓存条目加载任务,增强了构建过程的并行性,进一步加快了构建速度.

不同的 Android Studio 版本对 Gradle 版本有相应的兼容性要求,以下是部分 Android Studio 版本与 Gradle 版本的对应关系 :

Android Studio 版本 所需 Gradle 版本
Ladybug 2024.2.1 3.2 - 8.7
Koala Feature Drop 2024.1.2 3.2 - 8.6
Koala 2024.1.1 3.2 - 8.5
Jellyfish 2023.3.1 3.2 - 8.4
Iguana 2023.2.1 3.2 - 8.3
Hedgehog 2023.1.1 3.2 -7

从上面对应关系看,大致可以看到Android Studio新版本可以兼容所有就行的版本的Gradle;

但是Android Studio旧版本要2023年以后的版本才能兼容Gradle8或者更新的版本;

简单的说就是旧版本的Android Studio不能兼容最新版本的Gradle版本。

所以升级Android Studio是有必要的。

3、Android Studio 下载

(1)官方网址(国内网打不开):

https://developer.android.com/studio

(2)官方网址2(国内网可以正常打开下载):

https://developer.android.google.cn/studio/releases?hl=zh-cn

我就是用第二个网址进行下载的,ok的。

之前使用旧版本的Android Studio,运行环境设置为Android13或者更新版本的配置,res中的布局文件好像不会自动关联那些关键字,

需要手动敲打比较麻烦;更新Android Studio好像就没有这个问题了。

三、其他

1、Android Studio 报错INSTALL_FAILED_SHARED_USER_INCOMPATIBLE 小结

这个错误是安装应用的uid和系统验证信息不匹配导致;

大概率是和Android Studio 的Gradle; 的版本有关,使用最新的Gradle版本就行。

不一定要最新版本Gradle才能编译安装Android13版本的系统应用;

可以尝试一下新建一个应用,添加系统签名证书和uid,验证查看是否能安装成功。

2、如果确定安装的应用是否是系统签名应用

运行环境中执行dumpsys 就可以看出应用信息:

dumpsys package XXX | grep appid 示例:

复制代码
console:/ # dumpsys package com.dubug.settings | grep -i -E "appid|persistent"
    appId=1000
    flags=[ SYSTEM DEBUGGABLE HAS_CODE PERSISTENT ALLOW_CLEAR_USER_DATA UPDATED_SYSTEM_APP TEST_ONLY ALLOW_BACKUP ]
    pkgFlags=[ SYSTEM DEBUGGABLE HAS_CODE PERSISTENT ALLOW_CLEAR_USER_DATA UPDATED_SYSTEM_APP TEST_ONLY ALLOW_BACKUP ]
    appId=1000
    appId=1000
console:/ # 

看出信息appid 是否是1000 ,系统签名应用都是1000.

persistent 属性是查看系统应用是否保活。

3、Android版本和API版本(SDK)关联:

(1)Android 的历史版本

复制代码
Android 1.0
发布时间:2008 年 9 月 23 日.
特点:是 Android 系统的首次正式发布版本,当时已经集成了如 Gmail、Maps、Calendar 和 YouTube 等谷歌应用.
Android 1.1
发布时间:2009 年 2 月 2 日左右.
特点:优化了插件显示皮肤的性能等.
Android 1.5 Cupcake
发布时间:2009 年 4 月 30 日.
特点: 引入了屏幕键盘,为没有实体键盘的设备提供了输入方式;还建立了第三方应用小部件框架,并且首次支持视频录制.
Android 1.6 Donut
发布时间:2009 年 9 月 15 日.
特点:使操作系统能够适配多种不同的屏幕尺寸和分辨率,还添加了对 CDMA 网络的支持,并且首次出现了通用搜索框.
Android 2.0/2.1 Eclair
发布时间:Android 2.0 于 2009 年 10 月 26 日发布,2.1 则在 2010 年 1 月 12 日左右发布.
特点:因搭载于摩托罗拉 Droid 手机而受到广泛关注,首次加入了语音引导的逐向导航和实时交通信息功能,还带来了动态壁纸以及语音输入功能.
Android 2.2 Froyo
发布时间:2010 年 5 月 20 日.
特点:主要侧重于性能提升,采用了 Dalvik 运行模式使性能大幅提高;还增加了标准的主屏幕底部停靠栏以及语音操作功能,并且浏览器开始支持 Flash.
Android 2.3 Gingerbread
发布时间:2010 年 12 月 6 日.
特点:Android 系统开始有了独特的视觉风格,绿色成为其重要的设计元素,还增加了对更多传感器的支持,如气压计和陀螺仪.
Android 3.0/3.1/3.2 Honeycomb
发布时间:Android 3.0 于 2011 年 2 月 22 日发布,3.1 在 2011 年 5 月 11 日发布,3.2 于 2011 年 7 月 15 日发布.
特点:是专门针对平板电脑设计的版本,采用了全新的 "全息" 界面设计,更注重利用平板的大屏幕空间.
Android 4.0 Ice Cream Sandwich
发布时间:2011 年 10 月 19 日.
特点:引入了 "Holo" 界面,成为后续 Android 版本界面更新的基础,同时在交互和视觉效果上有了较大的改进,让用户体验更加统一和流畅.
Android 4.1/4.2/4.3 Jelly Bean
发布时间:Android 4.1 于 2012 年 6 月 28 日发布,4.2 在 2012 年 10 月 30 日发布,4.3 于 2013 年 7 月 25 日发布.
特点:引入了 Google Now 智能语音助手,能够根据用户的搜索历史和使用习惯,为用户提供个性化的信息和建议.
Android 4.4 KitKat
发布时间:2013 年 9 月 4 日.
特点:界面更加现代化和简洁,性能上也有很大提升,使得即使是配备 512MB RAM 的低端设备也能流畅运行,进一步扩大了 Android 的市场占有率.
Android 5.0/5.1 Lollipop
发布时间:Android 5.0 于 2014 年 10 月 15 日发布,5.1 在 2015 年 3 月 9 日发布.
特点:采用了全新的 "Material Design" 设计语言,强调卡片式布局、色彩鲜艳、动画过渡效果等,让界面更加美观和富有层次感,同时将 Dalvik 虚拟机替换为 ART 模式,提升了应用的运行速度.
Android 6.0 Marshmallow
发布时间:2015 年 5 月 28 日.
特点:加入了 APP 关联间的联动、Android Pay 以及指纹识别 API 等重要功能,增强了系统的安全性和用户的便捷性.
Android 7.0 Nougat
发布时间:2016 年 8 月 22 日.
特点:加入了多任务分屏功能,底层实现了多任务分屏操作以增强应用的兼容性,还引入了 JIT 编译器,提高了 APP 的安装速度并减少了占用空间,同时引入了 Vulkan API 图形处理器 API,提升了系统动画的性能.
Android 8.0 Oreo
发布时间:2017 年 8 月 21 日.
特点:APP 的启动速度比 Android 7.0 快 2 倍,后台续航监控功能可以最大化限制不常用后台应用的活跃度,还加入了分屏画中画模式,通知栏下拉后变为彩色背景通知.
Android 9 Pie
发布时间:2018 年 8 月 6 日.
特点:引入了全新的手势导航系统,用户可以通过手势来操作手机,如从屏幕底部上滑回到主屏幕、上滑并停顿进入多任务界面等。同时,在人工智能和机器学习方面也有了进一步的应用,系统能够根据用户的使用习惯自动调整电池电量分配、预测用户的下一步操作等,以提高设备的性能和续航能力。
Android 10
发布时间:2019 年 9 月 3 日.
特点:支持折叠屏设备,优化了多窗口模式,让用户可以更方便地在折叠屏设备上同时使用多个应用程序。还加强了隐私保护功能,例如应用在获取用户位置信息时需要用户明确授权,并且用户可以随时在设置中更改应用的权限。此外,系统对 5G 网络的支持也更加完善,能够更好地发挥 5G 网络的高速和低延迟特性。
Android 11
发布时间:2020 年 9 月 8 日.
特点:进一步加强了隐私保护,如一次性权限授权,用户可以授予应用临时访问权限,使用完后权限自动收回。还优化了屏幕录制功能,支持内录音频,并且对通知栏和快捷设置面板进行了重新设计,让用户操作更加便捷。此外,Android 11 还增强了对物联网设备的支持,使手机与其他智能设备之间的连接和交互更加顺畅。
Android 12
发布时间:2021 年 10 月 4 日.
特点:带来了全新的设计语言 Material You,系统能够根据用户的壁纸颜色自动生成主题颜色,使整个系统的界面更加个性化。同时,隐私保护功能再次升级,新增了隐私仪表板,用户可以更直观地查看应用对各种隐私权限的访问情况。在性能方面,也进行了优化,提高了系统的流畅度和响应速度。
Android 13
发布时间:2022 年 8 月 15 日.
特点:进一步细化了隐私权限管理,用户可以对应用的通知权限、媒体权限等进行更精细的控制。还优化了多设备协同功能,让用户在不同的 Android 设备之间共享数据和协同工作更加方便快捷。此外,Android 13 对无障碍功能进行了增强,为残障人士提供了更好的使用体验。
Android 14
发布时间:2023 年 10 月 4 日.
特点:在系统性能优化方面有了新的进展,能够更有效地管理内存和资源,提高设备的运行效率。同时,继续加强隐私保护,例如限制应用对剪切板数据的访问权限等。此外,还对系统界面进行了一些微调,使操作更加便捷和直观.
Android 15
发布时间:2024 年 10 月 15 日.
特点:包括针对折叠屏手机、平板电脑、桌面尺寸屏幕和 Chromebooks 的改进.
Android 16
发布时间:目前只有开发者预览版 1,于 2024 年 11 月 19 日发布.

(2)Android SDK的历史版本:

复制代码
以下是 Android 版本号对应的 API 等级 :
Android 1.0:API 等级 1
Android 1.1:API 等级 2
Android 1.5 Cupcake:API 等级 3
Android 1.6 Donut:API 等级 4
Android 2.0 Eclair:API 等级 5
Android 2.0.1 Eclair:API 等级 6
Android 2.1 Eclair:API 等级 7
Android 2.2 Froyo:API 等级 8
Android 2.3 Gingerbread:API 等级 9、10 ,其中 Android 2.3.0 - 2.3.2 对应 API 等级 9,Android 2.3.3 - 2.3.7 对应 API 等级 10
Android 3.0 Honeycomb:API 等级 11
Android 3.1 Honeycomb:API 等级 12
Android 3.2 Honeycomb:API 等级 13
Android 4.0 Ice Cream Sandwich:API 等级 14、15 ,其中 Android 4.0.1 - 4.0.2 对应 API 等级 14,Android 4.0.3 - 4.0.4 对应 API 等级 15
Android 4.1 Jelly Bean:API 等级 16
Android 4.2 Jelly Bean:API 等级 17
Android 4.3 Jelly Bean:API 等级 18
Android 4.4 KitKat:API 等级 19
Android 5.0 Lollipop:API 等级 21
Android 5.1 Lollipop:API 等级 22
Android 6.0 Marshmallow:API 等级 23
Android 7.0 Nougat:API 等级 24
Android 7.1 Nougat:API 等级 25
Android 8.0 Oreo:API 等级 26
Android 8.1 Oreo:API 等级 27
Android 9 Pie:API 等级 28
Android 10 Q:API 等级 29
Android 11 R:API 等级 30
Android 12 S:API 等级 31 ,另外 Android 12L 对应的 API 等级是 32
Android 13 Tiramisu:API 等级 33
Android 14 Upside Down Cake:API 等级 34
Android 15 Vanilla Ice Cream:API 等级 35

Android 版本发布可能是会准备好相应的SDK版本。

目前最新的SDK是Android15 的 35 ,SDK 36 估计要明年才能生成。

4、不同Gradle 版本的app/build.gradle 的某些代码区别:

Gradle6.5 的app/build.gradle某些代码:

复制代码
plugins {
    id 'com.android.application'
}

android {
    buildToolsVersion "34.0.0"
    compileSdkVersion 34

    defaultConfig {
        applicationId "com.demo.android14demo"
        minSdkVersion 30
        targetSdkVersion 34
        versionCode 1
        versionName "1.0"

    }
    。。。
}

dependencies {

    implementation 'androidx.appcompat:appcompat:1.1.0'
    implementation 'com.google.android.material:material:1.1.0'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    //加载系统 framework 的jar包
    implementation files('libs\\framework_13.jar')
}

上面都是之前那种比较标准的写法。

Gradle8.7 的app/build.gradle某些代码:

复制代码
plugins {
    alias(libs.plugins.android.application)
}

android {
    namespace 'com.example.android14'
    compileSdk 34

    defaultConfig {
        applicationId "com.example.android14"
        minSdk 34
        targetSdk 34
        versionCode 1
        versionName "1.0"
    }
    ...
}

dependencies {

    implementation libs.appcompat
    implementation libs.material
    implementation libs.activity
    implementation libs.constraintlayout
    implementation files('libs\\framework.jar')
}

对比发现标签里面很多名字都不一样的。看起来简洁了很多。

部分标签关键字对比:

Gradle6.5 Gradle8.7
plugins --> id plugins --> alias
android --> compileSdkVersion android --> compileSdk
implementation 'androidx.appcompat:appcompat:1.1.0' implementation libs.appcompat
还有很多不同的标签,估计都是和不同的Gradle版本关联的,不用一一了解。

新板的Gradle依赖的包的版本号都是统一在一个文件里面管理的。

这些东西没必要记,只是知道Gradle版本不同里面编译的标签名称不同就可以了。

低版本的Gradle 不能导入高版本的标签底代码;

但是高版本的标签代码一般可以导入低版本的标签代码(兼容性)。

在项目下也有个build.gradle文件,里面的代码关键字也是有不同的。

因为Gradle有兼容性,所以最好用新一点的Gradle版本;

所以最好是自己的电脑新建一个项目,看看自己Studio支持的Gradle最新版本;

所以有些别人能正常编译的项目,到另外一个电脑就不能正常编译了;

这个和Android Studio版本,Gradle版本,JDK版本都是有关系的,有的还和电脑环境有关系。

相关推荐
雨白5 小时前
Jetpack系列(二):Lifecycle与LiveData结合,打造响应式UI
android·android jetpack
这是个栗子6 小时前
【问题解决】VSCode终端中看不到Git-Bash
ide·git·vscode
kk爱闹6 小时前
【挑战14天学完python和pytorch】- day01
android·pytorch·python
每次的天空8 小时前
Android-自定义View的实战学习总结
android·学习·kotlin·音视频
恋猫de小郭8 小时前
Flutter Widget Preview 功能已合并到 master,提前在体验毛坯的预览支持
android·flutter·ios
断剑重铸之日9 小时前
Android自定义相机开发(类似OCR扫描相机)
android
随心最为安9 小时前
Android Library Maven 发布完整流程指南
android
岁月玲珑10 小时前
【使用Android Studio调试手机app时候手机老掉线问题】
android·ide·android studio
还鮟14 小时前
CTF Web的数组巧用
android
木头没有瓜14 小时前
vscode离线安装插件
ide·vue.js·vscode