为什么向我的库build.gradle文件中添加产品种类会导致我的本地应用无法解析从所述库导入的依赖项?

时间:2019-01-10 02:54:43

标签: android gradle android-productflavors

我正在为我的公司开发一个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
}

这是SDK /库build.gradle文件:

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'会导致另一个错误,导致该应用无法识别要使用哪个SDK的buildVariant。

如何在保持SDK中提供的产品风格的同时启动和运行我的应用?

0 个答案:

没有答案