如果使用Crashlytics,如何使用“应用更改”?

Cha*_*ltz 11 android android-studio android-gradle-plugin

我正在使用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
Run Code Online (Sandbox Code Playgroud)

crashlytics-build.properties 有评论说

#This file is automatically generated by Crashlytics to uniquely
#identify individual builds of your Android application
Run Code Online (Sandbox Code Playgroud)

实际上,它具有一个build_id可能随Gradle每次构建而变化的属性。而且由于每当我使用“应用代码更改”或“应用更改并重新启动活动”按钮时Gradle都会运行构建,因此Gradle构建会更改文件,这会阻止Apply Run完成。

我在网上找到的与此相关的唯一信息是Reddit评论

我了解了crashlytics + proguard中断即时运行的困难方式

因此,看来我不是唯一遇到此问题的人。删除Crashlytics并不是一种选择。我也不想在每次调试时都禁用它,然后再次重新启用它。

“应用更改并重新启动活动”按钮起作用。我正在使用的活动重新启动,并且更改可见。我尝试比较使用常规“运行”按钮的时间。“应用更改并重新启动活动”需要花费同样长的时间。唯一的好处似乎是,我不必每次都在应用程序中导航到该屏幕,而是可以保留在该屏幕上并重新加载更改。这是一个很大的好处,我只是期望更多。

我可以做些什么来使“应用更改”更有效地工作?

小智 15

您可以在Crashlytics中为调试版本关闭此行为:https ://docs.fabric.io/android/crashlytics/build-tools.html#optimize-builds-when-you-re-not-pro-guarding-or-using- beta-by-crashlytics

在模块中设置ext.alwaysUpdateBuildId为:falsebuild.gradledebug

android {
    buildTypes {
        debug {
          // Only use this flag on builds you don't proguard or upload to beta-by-crashlytics
          ext.alwaysUpdateBuildId = false
Run Code Online (Sandbox Code Playgroud)

  • 欢迎使用堆栈溢出!您能否包括说明而不仅仅是链接?这是回答问题的首选方式,因为链接可能会中断或更改。 (3认同)