Почему добавление продуктов в мои библиотеки build.gradle приводит к тому, что мое локальное приложение не может разрешить импортированные зависимости из указанной библиотеки? - PullRequest
0 голосов
/ 10 января 2019

Я разрабатываю приложение для Android для своей компании. Проект содержит каталоги: наш sdk (в данном случае библиотека) и пример приложения, которое импортирует sdk. Когда я добавляю разновидности продуктов в sdk (библиотеку), приложение разрывается из-за невозможности разрешить зависимости, импортированные из sdk.

Ошибки:

  1. ошибка не может найти класс символов S
  2. ошибка не может найти класс символов SO
  3. ошибка пакета S не существует
  4. метод ошибки не отменяет или реализовать метод из супертипа

Вот файл build.gradle верхнего уровня / уровня проекта

buildscript {
    repositories {
        jcenter()
        google()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.2.0'
        classpath 'com.novoda:bintray-release:0.9'
    }
}

allprojects {
    repositories {
        jcenter()
        google()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

Вот файл build.gradle SDK / библиотеки:

apply plugin: 'com.android.application'
apply plugin: 'com.novoda.bintray-release'

android {
    compileSdkVersion 27
    defaultConfig {
        minSdkVersion 14
        targetSdkVersion 27
        versionCode 1
        versionName version
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

    defaultPublishConfig "nonlocationVersionRelease"
    publishNonDefault true

    flavorDimensions "version"

    productFlavors {
        nonlocation {
            dimension "version"
        }
        location {
            dimension "version"
        }
    }

    buildTypes {
        release {
            minifyEnabled false
            //proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        debug {
            debuggable true
        }
    }



    lintOptions {
        abortOnError false
    }
}

configurations {
    javadocDeps
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:support-annotations:28.0.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    implementation 'com.mcxiaoke.volley:library:1.0.19'
    implementation 'com.google.android.gms:play-services-ads:15.0.1'
}

publish {
    userOrg = '*******'
    groupId = 'com.*******.android'
    artifactId = '*******'
    publishVersion = '2.0.0'
    desc = '******* sdk'
    website = 'https://github.com/*******/*******-android-public-sdk'
}

и вот файл приложения build.gradle:

apply plugin: 'com.android.application'

def computeVersionCode = { ->
    def stdout = new ByteArrayOutputStream()
    exec {
        commandLine 'git', 'rev-list', 'HEAD', '--count'
        standardOutput = stdout
    }
    return stdout.toString().trim().toInteger();
}

android {
    compileSdkVersion 27
    defaultConfig {
        applicationId "com.*******.demo"
        minSdkVersion 15
        targetSdkVersion 27

        versionCode computeVersionCode()
        versionName "1.0"

        renderscriptTargetApi 20
        renderscriptSupportModeEnabled true
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

    signingConfigs {
        debugConfig {
            storeFile file("debug.jks")
            storePassword "*******"
            keyAlias "com.*******.android"
            keyPassword "*******"
        }

        releaseConfig {
            storeFile file("release.jks")
            storePassword "*******"
            keyAlias "com.*******.android"
            keyPassword "*******"
        }
    }

    buildTypes {
        debug {
            signingConfig signingConfigs.debugConfig
        }
        release {
            signingConfig signingConfigs.releaseConfig
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

    lintOptions {
        abortOnError false
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    testImplementation 'junit:junit:4.12'
    implementation 'com.android.support:appcompat-v7:27.1.1'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    implementation 'com.android.support:design:27.1.1'
    implementation 'com.android.support:preference-v7:27.1.1'
    implementation 'com.google.guava:guava:23.0'
    implementation 'com.squareup:seismic:1.0.2'
    implementation 'net.hockeyapp.android:HockeySDK:3.7.0'
    implementation 'jp.wasabeef:blurry:1.0.5'

    implementation project(path: ':*******-sdk', configuration:'default')
}

Я пытался исправить это в течение 4 дней и все еще застрял. Я перепробовал все типичные решения, найденные в stackoverflow. Это был каскад проблемы за проблемой, и этот специфический возник непосредственно после обновления того, как SDK загружается в файл build.gradle приложения. Я подозреваю, что что-то не так с этой строкой, где я импортирую SDK как зависимость (конец build.gradle приложения):

implementation project(path: ':*******-sdk', configuration:'default')

, но не включая 'configuration:' default '', вызывает другую ошибку, из-за которой приложение не может определить, какой buildVariant SDK использовать.

Как мне запустить и запустить мое приложение, сохранив при этом вкусы продуктов, найденные в SDK?

...