Ошибка синхронизации Gradle с плагином Dexguard (Android Studio)

У меня возникли проблемы с попыткой интегрировать dexguard в мой проект android/gradle.

  • Dexguard: 5.5.32
  • градация: 2.2.1
  • gradle-плагин: 1.3.0
  • buildToolsVersion: 23.0.1

Я получаю следующую ошибку, когда я apply plugin: 'dexguard':

Error:Unable to load class 'com.android.builder.SdkParser'

ИЗМЕНИТЬ:

Вот файл градиента моего приложения:

buildscript {
    repositories {
        flatDir { dirs '/usr/local/DexGuard5.5.32/lib' }
        jcenter()
    }
    dependencies {
        classpath ':dexguard:'
        classpath 'com.android.tools.build:gradle:1.3.0'
    }
}

apply plugin: 'com.android.application'
apply plugin: 'dexguard' //This, when uncommented produces the error

dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')
    compile files('libs/commons-collections4-4.0.jar')
    compile files('libs/commons-codec-1.10.jar')
    compile files('libs/gson-2.3.1.jar')
    compile files('libs/jaxb2-maven-plugin:2.1.jar')
    compile project(':sdk')
    compile project(':zxing-lib')
}

android {
    signingConfigs {
        release {
            //my signing config
        }
    }
    compileSdkVersion 22
    buildToolsVersion '23.0.1'
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_7
        targetCompatibility JavaVersion.VERSION_1_7
    }
    sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'
            java.srcDirs = ['src/main/java', 'src/main/native', 'src/test/java']
            resources.srcDirs = ['src/main/java', 'src/main/native', 'src/test/java']
            aidl.srcDirs = ['src/main/java', 'src/main/native', 'src/test/java']
            renderscript.srcDirs = ['src/main/java', 'src/main/native', 'src/test/java']
            res.srcDirs = ['res']
            assets.srcDirs = ['assets']
        }

        // Move the tests to tests/java, tests/res, etc...
        instrumentTest.setRoot('tests')
    }
    packagingOptions {
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/NOTICE.txt'
    }
    buildTypes {
//The following should be uncommented when dexuard works!!!
//        debug {
//            proguardFile plugin.getDefaultDexGuardFile('dexguard-debug.pro')
//            proguardFile 'dexguard-project.txt'
//            proguardFile 'dexguard-project-debug.txt'
//            proguardFile 'proguard-project.txt'
//        }
//        release {
//            proguardFile plugin.getDefaultDexGuardFile('dexguard-release.pro')
//            proguardFile 'dexguard-project.txt'
//            proguardFile 'dexguard-project-release.txt'
//            proguardFile 'proguard-project.txt'
//        }
    }
    allprojects {
        gradle.projectsEvaluated {
            tasks.withType(JavaCompile) {
                options.compilerArgs << "-Xlint:deprecation"
            }
        }
    }
    defaultConfig {
        targetSdkVersion 22
        signingConfig signingConfigs.release
    }
    productFlavors {

        app2 {
            applicationId "some.app.id"
        }
        app {
            applicationId "some.app.id2"
        }
    }
}

Что ты думаешь ??


person Moumou    schedule 08.10.2015    source источник
comment
Публикация вашего файла gradle также может помочь.   -  person Sharj    schedule 11.10.2015
comment
Пожалуйста пожалуйста. Начните с обновления всего. 1) Gradle 2.7 отсутствует. 2) Вышел Gradle-плагин 1.3.1. 3) Преобразуйте все зависимости в Gradle, а не в jar-файлы. 4) Преобразуйте исходные наборы eclipse в обычный gradle.   -  person Jared Burrows    schedule 12.10.2015
comment
@JaredBurrows Хотя я согласен с вами по пунктам 1/, 2/ и 3/, я не уверен, как 3/ может решить эту проблему. Что вы имеете ввиду под 4/?   -  person Moumou    schedule 12.10.2015
comment
Вам вообще не нужно указывать наборы источников.   -  person Jared Burrows    schedule 12.10.2015
comment
@JaredBurrows Ах да, я еще не обратил внимания на структуру моего проекта :/   -  person Moumou    schedule 12.10.2015
comment
Просто откопал старую версию DexGuard 5.5, и docs/gradlebuild.html указывает DexGuard supports gradle-plugin 0.12.1, for Gradle version 1.12). Как уже упоминал @dextor, вам, вероятно, придется обновить DexGuard, чтобы использовать последние плагины SDK и gradle.   -  person scottyab    schedule 12.10.2015


Ответы (2)


Ваш плагин DexGuard выглядит ужасно устаревшим. Последняя версия, согласно веб-сайту GuardSquare, — 7.0.22.

Обновление является обязательным, так как версия 7.x обеспечивает совместимость с gradle-plugin 1.3.x и инструментами сборки 23.x.

person Sebastiano    schedule 12.10.2015
comment
Да, я знаю. Я изучал это, но не могу найти ничего о том, как его обновить. Нужно ли покупать новую версию или как? - person Moumou; 12.10.2015
comment
Это зависит от лицензии, которая у вас есть/была. В моем случае лицензия продлевается на ежегодной основе, поэтому, если срок действия вашей лицензии истек, вам нужно будет ее продлить. Сделав это, вы получите доступ к новейшим версиям DexGuard, которые обеспечивают совместимость с последними инструментами/инструментами сборки. - person Sebastiano; 12.10.2015
comment
Хорошо, я посмотрю на это (на сайте GuardSquare ничего не нашел о лицензии). Спросите у того, кто этим занимается. - person Moumou; 12.10.2015

Что выдает ваш Logcat

Error:Unable to load class 'com.android.builder.SdkParser'

Причина

Эта проблема вызвана тем, что плагин Android Gradle не соответствует версии Gradle.

Предоставлено

На самом деле вы используете старую версию DexGuard5.5.32. Вот почему возникают проблемы. Используйте последнюю версию Dexguard и последние SDK и плагины gradle.

Выпущен DexGuard 6.0

В этом разделе вы познакомитесь с шагами по усилению защиты вашего приложения с помощью DexGuard, от обеспечения безопасности связи до шифрования строк и классов.

И обновите версию tools.build:gradle для лучшего подхода.

dependencies {
    classpath ':dexguard:'
    classpath 'com.android.tools.build:gradle:1.4.0-beta2'
}

С уважением

Вы можете установить compileSdkVersion 23 вместо 22 .

Попробуйте этот способ. Я надеюсь, что это поможет вам.

person IntelliJ Amiya    schedule 17.10.2015