@razer89
Android-разработчик

Как увеличить скорость билда в AndroidStudio, если используется multidex?

Здравствуйте! Достиг в своем приложении лимита в 65к методов, пришлось подключить multidex. Но время, затрачиваемое на билд, увеличилось в разы, если не в десятки раз. Нашел вот этот способ, однако, после этого приложение стало крашится с эксепшеном
ClassNotFoundException: Didn't find class "android.support.multidex.MultiDexApplication"

Вот так выглядит build.gradle:
apply plugin: 'com.android.application'

repositories {
    mavenCentral()
    maven {
        url "https://oss.sonatype.org/content/repositories/snapshots"
    }
    flatDir {
        dirs 'libs'
    }
}

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.1"
    defaultConfig {
        targetSdkVersion 23
        versionCode 5
        versionName "0.5"
        multiDexEnabled true
    }
    productFlavors {
        dev {
            minSdkVersion 21
        }
        prod {
            minSdkVersion 14
        }
    }
    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.android.support:appcompat-v7:23.1.0'
    compile 'com.android.support:support-v4:23.1.0'
    compile 'com.android.support:recyclerview-v7:23.1.0'
    compile 'com.android.support:cardview-v7:23.1.0'
    compile 'org.jsoup:jsoup:1.8.2'
    compile 'com.google.android.gms:play-services-maps:8.3.0'
    compile 'com.google.android.gms:play-services-appindexing:8.3.0'
    compile 'com.google.android.gms:play-services-auth:8.3.0'
    compile 'com.google.android.gms:play-services-plus:8.3.0'
    compile 'com.android.support:multidex:1.0.1'
    compile 'com.quinny898.library.persistentsearch:library:1.0.0-SNAPSHOT'
    compile 'com.android.support:design:23.0.1'
    compile('io.socket:socket.io-client:0.6.2') {
        exclude group: 'org.json', module: 'json'
    }
    compile 'org.parceler:parceler:1.0.4'
    compile 'uk.co.chrisjenx:calligraphy:2.1.0'
    compile files('libs/universal-image-loader-1.9.4.jar')
    compile 'de.hdodenhof:circleimageview:1.3.0'
    compile 'com.ms-square:expandableTextView:0.1.4'
    compile 'uk.me.lewisdeane.ldialogs:ldialogs@aar'
    compile 'com.daimajia.slider:library:1.1.5@aar'
    compile 'info.hoang8f:fbutton:1.0.5'
    compile 'com.orhanobut:dialogplus:1.10@aar'
    compile 'com.appyvet:materialrangebar:1.1'
    compile 'com.cocosw:bottomsheet:1.2.0'
}

В манифесте, естественно, указано:
android:name="android.support.multidex.MultiDexApplication"

А класс MyApplication наследуется от MultiDexApplication.
Подозреваю, что что-то не то с productFlavors, поскольку если удалить этот блок, а minSdkVersion перенести в defaultConfig - все билдится нормально, но ОЧЕНЬ долго. Прошу помощи!
Заранее спасибо
  • Вопрос задан
  • 1505 просмотров
Решения вопроса 1
@Tiberal
А какой у вас билд вариант в студии выбран? должен быть devrelease или что то типо этого. Есть подозрение,что вы билдите сразу весь проект, и при сборке prodrelease оно и крашиться. Еще можете попробовать экстендиться от обычного апликейшен и ограничиться только методом

@Override
    protected void attachBaseContext(Context base) {
        super.attachBaseContext(base);
        MultiDex.install(this);
    }


для мультидекса. Так же я бы на вашем месте попробовал собрать вручную и посмотреть что в логах)

./gradlew tasks - покажет все таски
выберите нужный и запустите ./gradlew assemble(таска) --debug
ну и посмотрите что вам грэдл наговорит)
Но я бы не надеялся на особо значительный прирост скорости сборки.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы