android - 为什么将产品风味添加到我的库 build.gradle 文件会导致我的本地应用程序无法解析从所述库导入的依赖项?
问题描述
我正在为我的公司开发一个 android 应用程序。该项目包含目录:我们的 sdk(在本例中为库)和一个导入 sdk 的示例应用程序。当我将产品风味添加到 sdk(库)时,应用程序由于无法解析从 sdk 导入的依赖项而中断。
错误是:
- 错误找不到符号类 S
- 错误找不到符号类 SO
- 错误包S不存在
- 错误方法不会覆盖或实现超类型中的方法
这是顶级/项目级别的 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 上找到的所有典型解决方案。这是一个接一个问题的级联问题,这个特定问题是在更新了如何在应用程序的 build.gradle 文件中加载 sdk 之后直接出现的。我怀疑我将 sdk 作为依赖项导入的这一行有问题(应用程序的 build.gradle 结束):
implementation project(path: ':*******-sdk', configuration:'default')
但不包括 'configuration: 'default'' 会导致另一个错误,即应用程序无法辨别要使用 SDK 的哪个 buildVariant。
如何让我的应用程序启动并运行,同时保持 SDK 中的产品风格?
解决方案
推荐阅读
- r - 如何将表格从列布局传递到 R 中的行布局?
- python - 泊松分布后的随机数生成
- c - 无法在 Linux 上的 VSCode 中打开源文件 (ms-vscode.cpptools)
- matlab - MOSEK:prob.a 未指定
- r - 在 `pivot_wider()` 之后从数据框中删除冗余/重复的列
- python-3.x - 如何使用 ODOO 12 在看板视图的标题上添加按钮和字段?
- c# - 使用 FileSystemInfo 检查 c# 中是否不存在文件夹
- python - 为什么在给定的代码中没有执行特定的行?
- node.js - 如何向电子添加禁用站点隔离试验?
- python - 如何将不同行的排名值分配给新列?