13

Instant Run が機能しなくなってしばらく経ちました。つまり、標準のビルドよりも遅いのです。

AOSP バグ トラッカーにはいくつかの資料がありますが、これを解決することはできませんでした。私はあなたの何人かが助けると確信しています。

インスタントランなし

ビルドには約 1.30 分かかります。

インスタントラン付き

初めてアプリを実行してから、いくつかの小さな変更を適用します。たとえば、メソッド内に変更int a = 1したり、文字列を変更したりします。int a = 2

次に、もう一度実行をクリックします。何が起こるのですか:

  • assembleDebug一見完全なビルドが行われます (すべてのモジュールを呼び出します)。約1.30分かかります。
  • 2 回目のラウンドが行われ、 だけがコールされapp:assembleDebugます。さらに約 1 分かかります。

    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 コンソールへの出力はまったくありません。2 番目のラウンドでは、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

build.gradleファイルに関連する dex はありません。ジャックを使用していません。アンドロイド スタジオ 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

(他にも 2 つの「ライブラリ」モジュールがあります)

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 のみを使用してください。使用しているのが Google マップだけの場合は、次のようにします。

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

インスタントランを有効にする

  1. 設定または環境設定ダイアログを開きます。
  2. Build, Execution, Deployment > Instant Run に移動します。
  3. [Instant Run を有効にする] の横にあるチェックボックスをオンにします。

Instant Run の制限。

複数のデバイスへのデプロイ、アプリのマルチデックス化、サードパーティのプラグインの使用、マルチプロセス アプリへの変更のプッシュ、仕事用プロファイルでのアプリの起動。

アプリで multidex サポート (multiDexEnabled true) を使用する場合、minSdkVersion は 21 以上である必要があります。それ以外の場合、android studio は Instant Run を無効にします。

Gradle バージョンの Android プラグインは 2.1.0 以降である必要があります

オフライン作業の android studio を有効にして高速化します。

ファイル>>設定に移動するか、単にctrl + alt + sを押します

ファイル >> 設定 >> Gradle. グローバルGradle設定でオフライン作業を確認してください

Gradle のパフォーマンスを改善する

android studio を開いた後、android studio の右側からgradle.propertiesファイルを開き、次の 2 行を追加します。

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

buildTypes でデバッグのビルド バリアントを構成する

debug {
        minifyEnabled false
        applicationIdSuffix ".debug"
    }

変更後、Android Studio を再起動する必要があります。

注: ビルド時間は、プロセッサと RAM によって異なります。(8GB RAMのi7-3610qm)で、4つのAndroid Studioプロジェクトを同時にコンパイルすると、ウィンドウの応答が遅くなることに気付きました。ビルドプロセス終了後、PC は正常に動作します。

于 2017-01-05T05:03:58.643 に答える
1

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

Android Studio の最新バージョンに更新し、システム メモリに基づいて (studio.vmoptions) のメモリ プロファイルを増やします。

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

ビルド バージョンとターゲット バージョンを同じに維持する

于 2017-01-03T11:43:39.980 に答える