首次启动需要很长时间(ClassLoader引用了未知路径)



将我的Android studio更新到2.0,将gradle升级到2.0.0,将SDK平台版本更新到23.0.3之后,当我想启动应用程序时,花费了太多时间(约2-3秒),安卓监视器中出现以下警告:

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

但第二次启动应用程序时,它会照常运行。有人知道问题出在哪里吗?

在2.0版本中,添加了一个新的即时运行功能。

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

注意关于

  • 设置minSdkVersion 15或更高版本以获得任何利润;

  • Instant Run目前不适用于Jack(支持java8),在使用新的工具链时将被禁用;

  • 你可能仍然会遇到一些小故障和bug;

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

在新发布的A.S 2.0(或2.1)中出现了一种奇怪的行为,屏幕变为黑色(或Activity暂停)数秒。正如doc所解释的,A.S 2.0中的第一次构建可能需要更长的时间,但这个问题发生在Runtime中。

基于@Skadoosh评论的快速修复将禁用即时运行:

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插件,并设置minSdkVersion到15或更高在应用程序的模块级build.gradle中文件要获得最佳性能,请将minSdkVersion设置为21或更高

看到谷歌的这段视频可能会帮助你了解一点即时跑步。

我在将Andoid gradle插件2.4更新到2.10&我通过使用以下指令解决了这个问题

转到Android工作室文件->设置→构建、执行、部署→即时运行并取消选中所有复选框

我遇到了同样的问题,使用低版本渐变可以解决。

build.gradle:classpath"com.android.tools.build:gradle:1.3.0"

渐变包装器.属性:distributionUrl=https://services.gradle.org/distributions/gradle-2.4-all.zip

不需要禁用即时运行,但按照我的步骤,使用gradle插件v2.3.2和gradle v3.5可以解决它,享受吧,无论如何我都解决了我的项目上的问题。

最新更新