13

Instant Run 已经有一段时间不再工作了,也就是说,它比标准构建慢。

AOSP 错误跟踪器中有一些材料,但我无法解决这个问题。我相信你们中的一些人会提供帮助。

没有即时运行

构建大约需要 1.30 分钟。

即时运行

我第一次运行该应用程序,然后应用了一些小的更改。例如,更改int a = 1int a = 2方法内部,或更改字符串。

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

  • 一个看似完整的构建发生了(调用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内容。不使用杰克。安卓工作室 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'
4

4 回答 4

1

如果您使用的是 Google Play 服务,请确保您没有在 Gradle 构建脚本中使用它:

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

仅使用您的应用真正使用的那些 Google API。如果你使用的是谷歌地图,你会使用这个:

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

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

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

于 2017-01-04T07:17:12.083 回答
1

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

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

    -Xms256m
    -Xmx1280m
-XX:MaxPermSize=350m
于 2017-01-04T07:13:38.083 回答
1

启用即时运行

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

Instant Run 的限制。

部署到多个设备,对您的应用程序进行多重索引,使用第三方插件,将更改推送到多进程应用程序,在工作配置文件中启动您的应用程序。

如果您的应用程序使用 multidex 支持 (multiDexEnabled true),则 minSdkVersion 必须为 21 或更高。否则,android studio 会禁用 Instant Run。

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

启用离线工作 android studio 以加快速度:

转到文件>>设置或只需按 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 中配置 debug 的 Build Variant

debug {
        minifyEnabled false
        applicationIdSuffix ".debug"
    }

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

注意: 构建时间取决于您的处理器和 RAM。我注意到(i7-3610qm with 8gb ram)当您同时编译 4 个 android studio 项目然后在窗口上响应缓慢。构建过程完成后,电脑工作正常。

于 2017-01-05T05:03:58.643 回答
-1

保持构建版本和目标版本相同

于 2017-01-03T11:43:39.980 回答