我正在使用Android Studio 3.5 Beta1。我决定尝试“应用更改”。 Instant Run出现问题,因此我们将其禁用了很多年。我希望这会更好。
如果我尝试“应用代码更改”按钮,则在“运行”窗口中出现错误:
Changes were not applied.
Modifying resources requires an activity restart.
Resource 'assets/crashlytics-build.properties' was modified.
Apply changes and restart activity
crashlytics-build.properties
的评论中说
#This file is automatically generated by Crashlytics to uniquely
#identify individual builds of your Android application
实际上,它具有build_id
属性,该属性可能随Gradle的每次构建而变化。而且由于每当我使用“应用代码更改”或“应用更改并重新启动活动”按钮时Gradle都会运行构建,因此Gradle构建会更改文件,从而阻止Apply Run完成。
我在网上找到的唯一与此相关的信息是Reddit comment的一句话
我了解了crashlytics + proguard中断即时运行的困难方式
所以看来我不是唯一遇到此问题的人。删除Crashlytics并不是一种选择。我也不想在每次调试时都禁用它,然后再次重新启用它。
“应用更改并重新启动活动”按钮起作用。我正在使用的活动重新启动,并且更改可见。我尝试比较使用常规“运行”按钮的时间。 “应用更改并重新启动活动”需要花费同样长的时间。唯一的好处似乎是,我不必每次都在应用程序中导航到该屏幕,而是可以保留在该屏幕上并重新加载更改。这是一个不错的好处,我只是期望更多。
我可以做些什么使我更有效地执行“应用更改”吗?
答案 0 :(得分:0)
您可以在Crashlytics中为调试版本关闭此行为:https://docs.fabric.io/android/crashlytics/build-tools.html#optimize-builds-when-you-re-not-proguarding-or-using-beta-by-crashlytics
在Gradle文件中将ext.alwaysUpdateBuildId
设置为false
,以设置调试版本:
android {
buildTypes {
debug {
// Only use this flag on builds you don't proguard or upload to beta-by-crashlytics
ext.alwaysUpdateBuildId = false