【问题标题】:First launch take long time (ClassLoader referenced unknown path)首次启动需要很长时间(ClassLoader 引用了未知路径)
【发布时间】:2016-04-14 13:00:26
【问题描述】:

更新我的 Android studio 到 2.0 和 gradle 到 2.0.0 和 SDK-Platform 到 23.0.3 之后我想启动应用程序花费了太多时间(大约 2-3 秒)并且 Android Monitor 中出现以下警告:

W/System: ClassLoader referenced unknown path: /data/app/net.hadifar.test-1/lib/arm
W/System: ClassLoader referenced unknown path: /data/app/net.hadifar.test-1/lib/arm
 W/art: Suspending all threads took: 5.439ms
W/art: Before Android 4.1, method android.graphics.PorterDuffColorFilter android.support.graphics.drawable.VectorDrawableCompat.updateTintFilter(android.graphics.PorterDuffColorFilter, android.content.res.ColorStateList, android.graphics.PorterDuff$Mode) would have incorrectly overridden the package-private method in android.graphics.drawable.Drawable
W/art: Suspending all threads took: 6.808ms

但我第二次启动应用程序时它照常运行。任何人都可以知道是什么问题吗?

【问题讨论】:

  • 我认为 instant-run 已启用.. 在第一次运行时总是需要更多时间...
  • 是的!谢谢。我禁用即时运行并修复问题。要禁用即时运行,请转到设置→构建、执行、部署→即时运行并取消选中启用即时运行。
  • 是什么意思? (如果我设置为选中,如果我设置为未选中呢?)
  • @Kuriel 看我的回答stackoverflow.com/a/37512413/1462770

标签: android android-studio gradle


【解决方案1】:

在 2.0 版中添加了一个新功能instant-run

启用此功能工具会添加大量元信息,因此第一次构建和上传需要更多时间。

注意

我们可以在这里写(或投票)issues(报告以制作更好的工具)。

【讨论】:

  • 我也遇到过这个问题,在我的情况下,如果我将minSdkVersion 设置为21,则使用 Instant Run 会显着提高第一次运行时间,如下所述:developer.android.com/intl/es/tools/building/…
  • @antonio,你是认真的吗?有多少百分比的设备可以安装您的应用程序?
  • @CoolMind,也许我解释错了,我的意思是仅在开发过程中将其设置为 21,并且作为一种解决方法,直到问题解决
  • @antonio,我刚刚检查过了,升级到 21 版本后没有任何变化。第一次运行还是很慢。
  • @CoolMind 变量太多,只有在您的具体案例中进行分析才能显示改进,如果有的话,即使对于某些项目,它也根本不起作用。检查limitations
【解决方案2】:

在新发布的A.S 2.0(或 2.1)中有一个奇怪的行为,屏幕变黑(或Activity 暂停)几秒钟。正如doc 解释的那样,A.S 2.0 中的第一次构建可能需要更长时间,但这个问题发生在运行时。

基于@Skadoosh 评论的快速修复方法是禁用instant Run

Settings → Build, Execution, Deployment → Instant Run and uncheck Enable Instant Run

更多信息:

当您部署干净的构建时,Android Studio 会检测您的应用以 允许 Instant Run 推送代码和资源更新。虽然更新 正在运行的应用程序运行得更快,第一次构建可能需要 完成时间更长。您可以通过配置一些 DexOptions 设置来改进构建过程:

android {
  ...
  dexOptions {
    maxProcessCount 4 // this is the default value
    javaMaxHeapSize "2g"
  }
}

也用于警告在 Android 4.1 之前。 它说:

仅当您部署调试构建变体时才支持即时运行, 使用 Gradle 2.0.0 或更高版本 的 Android 插件,并设置 在应用的模块级 build.gradle 中 minSdkVersion 为 15 或更高 文件。为获得最佳性能,请将 minSdkVersion 设置为 21 或更高

观看来自 Google 员工的 this 视频可能有助于您对 Instant Run 有所了解。

【讨论】:

    【解决方案3】:

    我在将 Andoid gradle 插件 2.4 更新到 2.10 时遇到了同样的问题,我通过使用以下说明解决了它

    转到Android studio File->Settings → Build, Execution, Deployment → Instant Run 并取消选中所有CheckBox

    【讨论】:

      【解决方案4】:

      我遇到了同样的问题, 使用低版本的gradle即可解决。

      build.gradle: 类路径'com.android.tools.build:gradle:1.3.0'

      gradle-wrapper.properties: distributionUrl=https://services.gradle.org/distributions/gradle-2.4-all.zip

      【讨论】:

      • 不好的建议。编译时间很长,并且必须在设置中禁用即时运行。应用程序的大小也再次变大。
      【解决方案5】:

      无需禁用即时运行,但按照我的步骤,使用 gradle plugin v2.3.2 并使用 gradle v3.5 可以解决它,享受,反正我解决了我的项目的问题。

      【讨论】:

        猜你喜欢
        • 2021-08-28
        • 1970-01-01
        • 1970-01-01
        • 2018-01-17
        • 1970-01-01
        • 1970-01-01
        • 2019-05-05
        • 2014-05-30
        • 1970-01-01
        相关资源
        最近更新 更多