Dexguard с Multidex

У меня проблема при интеграции Dexguard в проекты, которым необходимо включить Multidex, я не получаю ошибок компиляции, но при запуске приложения происходит сбой с этой ошибкой

java.lang.RuntimeException: Unable to instantiate application xx.xxx.xxx.XXXApp: java.lang.ClassNotFoundException: Didn't find class "xx.xxx.xxx.XXXApp" on path: DexPathList

Это файл app.gradle:

apply plugin: 'com.android.application'
...
apply plugin: 'dexguard'

android {
    compileSdkVersion 27
    buildToolsVersion "27.0.3"
    defaultConfig {
        applicationId "xx.xxx.xxx"
        ...
        multiDexEnabled true
    }
    buildTypes {
        debug {
            proguardFile getDefaultDexGuardFile('dexguard-debug.pro')
            proguardFile 'dexguard-project.txt'
            //proguardFile 'proguard-project.txt'
        }
        release {
            proguardFile getDefaultDexGuardFile('dexguard-release.pro')
            proguardFile 'dexguard-project.txt'
            //proguardFile 'proguard-project.txt'
        }
    }
    flavorDimensions "server"
    productFlavors {
        dev {
            applicationIdSuffix ".dev"
            dimension "server"
        }
        ...
        prod {
            dimension "server"
        }
    }
}

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    ...

    implementation 'com.android.support:multidex:1.0.1'

    //support libraries
    ...
    //play services
    ...
    //architecture components
    ...
    //others
    ...
}

apply plugin: 'com.google.gms.google-services'

В файле dexguard-project.txt я просто добавил опцию -multidex

Я также пробовал использовать -keep public class * extends android.app.Application, но безуспешно.

РЕДАКТИРОВАТЬ

Я использую собственный класс приложения, который расширяет другой пользовательский класс - поэтому я добавил фрагмент ниже

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

И это относительная часть манифеста

<application
        android:name = ".XXXApp"
        ...

Кто-нибудь сталкивался с такой же проблемой?

попробуйте stackoverflow.com/a/45320244/7505436

vm345 17.04.2018 11:02
java.lang.ClassNotFoundException: не удалось найти класс по пути: dexpathlist, попробуйте расширить класс вашего приложения с помощью MultiDexApplication
Manohar Reddy 17.04.2018 11:25

@ vm345 Спасибо, но я уже отключил InstantRun из-за других проблем, которые у меня были

Jameido 17.04.2018 11:47

@Redman, посмотрите обновленный вопрос, пожалуйста

Jameido 17.04.2018 11:47

сделать настраиваемое приложение расширением приложения Multidex

Manohar Reddy 17.04.2018 12:09
0
5
1 263
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

В итоге решение было довольно простым, просто изменил multidexEnabled на ложный

defaultConfig {
        applicationId "xx.xxx.xxx"
        ...
        multiDexEnabled false
    }

Другие вопросы по теме