即时运行需要比标准版本更长的时间

即时运行已经有一段时间了,也就是说,它比标准版本要慢。

AOSP错误跟踪器中有一些内容,但是我无法解决这个问题。 我相信你们中的一些人会帮忙。

没有即时运行

build设需要约1.30分钟。

随着即时运行

我第一次运行该应用程序,然后应用一些小的变化。 例如,在方法int a = 1更改为int a = 2 ,或者更改一个string。

然后再次点击运行。 怎么了:

  • 一个看似完整的构build发生(在我所有的模块上调用assembleDebug )。 需要约1.30分钟。
  • 第二轮继续,只是调用app:assembleDebug 。 大概需要一分钟:

     16:27:10 Executing tasks: [:app:assembleDebug] 16:28:16 Gradle build finished in 1m 5s 264ms 16:28:22 Instant Run applied code changes and restarted the app. 

在第一轮,没有输出任何事件日志或Gradle控制台。 在第二轮,Gradle控制台输出很多东西,并以

 BUILD SUCCESSFUL Total time: 51.385 secs PREDEX CACHE HITS: 0 PREDEX CACHE MISSES: 45 Stopped 0 compiler daemon(s). 

我能做什么?

我有这些在我的grade.properties文件中:

 org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 org.gradle.parallel=true org.gradle.daemon=true 

没有什么dex在build.gradle文件中相关。 不使用杰克。 Android Studio 2.2.3。


gradle.properties文件

 org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 org.gradle.parallel=true org.gradle.daemon=true ANDROID_BUILD_MIN_SDK_VERSION=15 ANDROID_BUILD_TARGET_SDK_VERSION=25 ANDROID_BUILD_SDK_VERSION=25 ANDROID_BUILD_TOOLS_VERSION=25.0.2 

项目级别build.gradle

 buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:2.2.3' classpath 'com.google.gms:google-services:3.0.0' } } allprojects { repositories { jcenter() } } 

主要模块build.gradle

(我还有其他两个“图书馆”模块)

 apply plugin: 'com.android.application' Properties signProp = new Properties() signProp.load(new FileInputStream(file(project.property("SIGN_PROPS")))) Properties authProp = new Properties() authProp.load(new FileInputStream(file(project.property("AUTH_KEYS_PROPS")))) def PARSE_APPLICATION_ID = '"' + authProp['parseApplicationId'] + '"'; def PARSE_CLIENT_KEY = '"' + authProp['parseClientKey'] + '"' def PARSE_SERVER_URL = '"' + authProp['parseServerURL'] + '"' def GOOGLE_PLAY_API_KEY = '"' + authProp['googlePlayApiKey'] + '"' android { signingConfigs { release_config { keyAlias signProp['keyAlias'] keyPassword signProp['keyPassword'] storeFile file(signProp['storeFilePath']) storePassword signProp['storePassword'] } } compileSdkVersion Integer.parseInt(project.ANDROID_BUILD_SDK_VERSION) buildToolsVersion project.ANDROID_BUILD_TOOLS_VERSION defaultConfig { minSdkVersion Integer.parseInt(project.ANDROID_BUILD_MIN_SDK_VERSION) targetSdkVersion Integer.parseInt(project.ANDROID_BUILD_TARGET_SDK_VERSION) versionCode 21 versionName "1.3.3" buildConfigField 'String', 'PARSE_APPLICATION_ID', PARSE_APPLICATION_ID buildConfigField 'String', 'PARSE_CLIENT_KEY', PARSE_CLIENT_KEY buildConfigField 'String', 'PARSE_SERVER_URL', PARSE_SERVER_URL buildConfigField 'String', 'GOOGLE_PLAY_API_KEY', GOOGLE_PLAY_API_KEY signingConfig signingConfigs.release_config proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' vectorDrawables.useSupportLibrary = true } buildTypes { release { minifyEnabled true shrinkResources true } debug { minifyEnabled false shrinkResources false } } productFlavors { } } dependencies { compile 'com.android.support:design:24.2.1' compile 'com.android.support:cardview-v7:24.2.1' compile 'com.android.support:recyclerview-v7:24.2.1' compile 'com.android.support:preference-v14:24.2.1' compile 'com.google.maps.android:android-maps-utils:0.4.3' compile 'com.google.android.gms:play-services-maps:9.2.1' compile 'com.google.android.gms:play-services-appinvite:9.2.1' compile 'com.google.android.gms:play-services-location:9.2.1' compile 'com.google.android.gms:play-services-appindexing:9.2.1' compile ('com.facebook.android:facebook-android-sdk:4.16.1') { exclude module: 'bolts-tasks' } compile 'com.parse.bolts:bolts-tasks:1.4.0' compile 'com.squareup.okhttp3:okhttp:3.2.0' compile 'com.parse:parse-android:1.13.1' compile ('com.parse:parseui-widget-android:0.0.1') { exclude module: 'parse-android' } compile project(':dateTimePicker') compile project(':commons') } apply plugin: 'com.google.gms.google-services' 

Related of "即时运行需要比标准版本更长的时间"

http://tools.android.com/recent/androidstudio223isnowavailable

更新到最新版本的Android Studio,然后根据您的系统内存增加(studio.vmoptions)中的内存configuration文件

  -Xms256m -Xmx1280m -XX:MaxPermSize=350m 

如果您正在使用Google Play服务,请确保您没有在您的Gradle构build脚本中使用此function:

 compile 'com.google.android.gms:play-services:8.3.0' 

只能使用您的应用真正使用的那些Google API。 如果您正在使用的是Google地图,则可以使用以下内容:

 com.google.android.gms:play-services-maps:8.3.0 

当我这样做时,我的编译时间从2分钟到25秒左右。 有关可以select性编译的Google apis列表,请参阅:

https://developers.google.com/android/guides/setup

启用即时运行

  1. 打开设置或首选项对话框。
  2. 导航到构build,执行,部署>即时运行。
  3. 选中启用即时运行旁边的checkbox。

即时运行的限制。

部署到多个设备,Multidexing您的应用程序,使用第三方插件,推动更改多进程的应用程序,启动您的应用程序在工作configuration文件。

如果您的应用程序使用multidex支持(multiDexEnabled true),minSdkVersion必须是21或更高。 否则,android studio禁用即时运行。

Android版插件的Gradle版本必须是2.1.0或更高

启用离线工作android工作室加速:

转到文件>>设置或只需按Ctrl + Alt + S

文件>>设置>> Gradle。 请在Global Gradle设置下检查离线工作

提高Gradle性能

打开android studio后,从android studio的右侧打开gradle.properties文件,并添加以下两行。

  org.gradle.jvmargs=-Xmx1536m org.gradle.daemon=true org.gradle.parallel=true 

在buildTypes中configurationdebugging版本的变体

 debug { minifyEnabled false applicationIdSuffix ".debug" } 

更改后,您应该重新启动您的Android Studio。

注意:生成时间取决于您的处理器和RAM。 当我在同一时间编译4个android studio项目时,我注意到(i7-3610qm与8GB RAM),然后在窗口上慢响应。 build立过程完成后PC工作正常。

保持bulit版本和目标版本一样