此更新包括对以下问题的修复:
Android Gradle 插件
- 问题 #223365583:R8 报告的重复类问题
构建变体
- 问题 #158597249:如果变体的版本名称是通过新的 onVariants API 设置的,则 versionNameSuffix 不再有效
撰写预览
- 性能和稳定性相关的错误修复。
- 解决使用文字实时编辑功能时偶尔发生的冻结问题。
网络检查员
问题 #219563755:Bumblebee 更新后新的网络检查器崩溃- 问题 #220807361:当调试器连接到最新版本的 Android Studio 时,我经常收到此错误。
- 问题 #219572925:TrackedHttpURLConnection.getHeaderField 崩溃并出现 NullPointerException
详细描述问题:
我们看到一些问题,开发人员在移动类后无法构建项目。尽管有多种情况似乎会发生这种情况,但我们发现最简单的重现是从一个定义两个具有相同 . 的库项目的项目开始
packageName
,然后构建,然后更改包名称,然后再次尝试构建。在这种情况下BuildConfig
,原始包名的类以及新包名存在于位于的最终 apk 中app/build/intermediates/apk/debug/app-debug.apk
Android Studio Bumblebee 2021.1.1 Android Gradle 插件 7.1.1 Gradle 7.4 操作系统:Mac OS 10.15.7
重现步骤:
- 在 Android Studio 中导入附加的项目
- 连接 API 29 的 Android 设备
- 点击运行按钮
- 签入 APK
app/build/intermediates/apk/debug/app-debug.apk
以查看它仅包含 4 个类com.example.app.BuildConfig
、com.example.app.R
和com.example.lib.BuildConfig
com.example.lib.R
- 将 packageName 值更改
lib/src/main/AndroidManifest.xml
为com.example.lib.a
.- 再次单击运行按钮。
- 再次检查
app/build/intermediates/apk/debug/app-debug.apk
它现在包含 6 个类文件,BuildConfig
每个包中都有一个com.example.app
,com.example.lib
并且com.example.lib.a
您还将看到两个类
dex
都存在一个文件,如所附屏幕截图所示BuildConfig
lib/build/.transforms
Studio Build:2021.1.1 Gradle 插件版本:7.1.1 Gradle 版本:7.4 Java 版本:11 操作系统:MacOS 10.15.7
Studio Build: N/A Version of Gradle Plugin: 4.1.0-alpha09 Version of Gradle: 6.5 Version of Java: 8 OS: MacOS
如果我有一个自定义任务计算新
onVariants
API的版本名称,则versionNameSuffix
实际上变成了无操作。我在这个项目+分支中有一个复制案例:GitHub - ZacSweers/CatchUp at z/suffix
运行
./gradlew :app:assembleRelease
并观察最终清单没有-release
该分支为其添加提交的后缀。该项目使用新的 onVariants API 在此处进行设置:CatchUp/CatchUpPlugin.kt at z/suffix · ZacSweers/CatchUp · GitHubrepro 项目在 buildtype 上使用 versionNameSuffix,但我们在 slack 内部也观察到在产品风味上使用时也出现了同样的错误。
每次我尝试使用 App Inspector,特别是 Network Inspector 时,它一直在崩溃,Android Studio 继续正常工作,但 Network Inspector 只是告诉我它崩溃了并向我显示了一个“重新启动”按钮,但它基本上什么也没做。
内部版本:AI-211.7628.21.2111.8139111、202202012023、
AI-211.7628.21.2111.8139111、JRE 11.0.11+9-b60-7590822x64 JetBrains sro、操作系统 Windows 10(amd64) v10.0080.0.0.x 10.0080.0.x x1080.0
如:大黄蜂 | 2021.1.1 补丁 1;Kotlin 插件:211-1.6.10-release-923-AS7442.40;Android Gradle 插件:7.0.4;摇篮:7.0.2;Gradle JDK:版本 11.0.11;NDK:来自local.properties:(未指定),最新来自SDK:(未找到);LLDB:未找到固定版本 3.1,来自 SDK 的最新版本:(未找到包);CMake:来自 local.properties:(未指定),最新来自 SDK:(未找到),来自 PATH:(未找到)来源:user_sentiment_feedback
内部版本:AI-211.7628.21.2111.8139111、202202012023、
AI-211.7628.21.2111.8139111、JRE 11.0.11+9-b60-7590822x64 JetBrains sro、OS Windows 10(amd64)、v10.0350.0.02、屏幕x1080.0
AS:大黄蜂 | 2021.1.1 补丁 1;Kotlin 插件:211-1.6.10-release-923-AS7442.40;Android Gradle 插件:7.0.4;摇篮:7.0.2;Gradle JDK:版本 11.0.11;NDK:来自local.properties:(未指定),最新来自SDK:(未找到);LLDB:未找到固定版本 3.1,来自 SDK 的最新版本:(未找到包);CMake:来自local.properties:(未指定),最新来自SDK:(未找到),来自PATH:(未找到)重要提示:请 仔细
阅读https://developer.android.com/studio/report-bugs.html并提供所有必需的信息。
没有特定的复制步骤。它似乎随机且频繁地发生。不调试时没有问题。我相信这与android studio中的网络分析器有关。我已连接到物理设备(Samsung Galaxy Tab S7)
构建:AI-211.7628.21.2111.8139111、202202012023、
AI-211.7628.21.2111.8139111,JRE 11.0.11+9-b60-7590822x64 JetBrains sro,操作系统 Windows 10(amd64) v10.0,屏幕 3200.0x1800.0
如:大黄蜂 | 2021.1.1 补丁 1;Kotlin 插件:211-1.6.10-release-923-AS7442.40;Android Gradle 插件:7.1.1;梯度:7.3.3;Gradle JDK:版本 11.0.12;NDK:来自local.properties:(未指定),最新来自SDK:(未找到);LLDB:LLDB 3.1(修订版:3.1.4508709);CMake:来自 local.properties:(未指定),最新来自 SDK:3.18.1-g262b901-dirty,来自 PATH:(未找到)
我启用网络分析器(https://developer.android.com/studio/profile/network-profiler)
HttpURLConnection 被包裹在 TrackedHttpURLConnection (com.android.tools.appinspection.network.httpurl.TrackedHttpURLConnection)
我调用
con.getHeaderField("Content-Type")
的方法契约是“返回:命名的头字段的值,如果头中没有这样的字段,则返回null。”但是,
TrackedHttpURLConnection
在此调用中崩溃:java.lang.NullPointerException: wrapped.getHeaderField(key) must not be null
似乎您注入的 TrackedHttpURLConnection 因期望来自包装的 HttpURLConnection 的非空结果而违反合同。
预期修复:如果没有这样的标头字段,则在 TrackedHttpURLConnection.getHeaderField 中返回 null。