我有一个具有模块依赖性的 Android 应用程序。这个模块本身有一个 jar 库作为依赖,它有两个变体,每个变体都相对于主应用程序的构建变体。当我在主应用程序中切换构建变体时,我设法自动选择了选择正确 jar 的模块的构建变体,但这并未反映在代码中,其中在构建变体特定代码中找不到来自 jar 的特定类.
这是主应用程序和依赖模块的 build.gradle 文件中的相关代码:
主应用程序 - build.gradle
buildTypes {
type1 {initWith(debug)}
type2 {initWith(debug)}
}
productFlavors {
live{}
test{}
}
dependencies {
type1Compile project(path: ':module', configuration: 'one')
type2Compile project(path: ':module', configuration: 'two')
}
模块 - build.gradle
android {
compileSdkVersion 25
buildToolsVersion "25.0.2"
useLibrary 'org.apache.http.legacy'
publishNonDefault true
defaultConfig {
minSdkVersion 14
targetSdkVersion 22
}
buildTypes {
release {
minifyEnabled = false
proguardFiles getDefaultProguardFile('proguard-android.txt'),
'proguard-rules.pro'
}
one {initWith(release)}
two {initWith(release)}
}
}
dependencies {
oneCompile files('libs/versionOne/mylib.jar')
twoCompile files('libs/versionTwo/mylib.jar')
}
因此,当我构建testType1
变体时,Android Studio 会自动选择one
变体,并且通过干净的构建一切正常。但是如果我切换到testType2
,尽管two
选择了模块的变体,编辑器将突出显示缺少的类和方法。
当我在应用程序的构建变体之间切换时,如何让 gradle 选择正确的 jar?
一些注意事项:模块需要库,因为它使用了两个版本之间通用的一些类。我知道这可能看起来像糟糕的项目设计,但它是由不同人在不同时代构建的应用程序,我现在必须“按原样”开发它。
经过一番摸索,我找到了一些线索。首先,我的两个jar包所在的同名,在不同的文件夹中。在将 jars 重命名为也有不同的名称后,gradle 设法在构建变体切换后选择正确的一个,前提是完成了额外的“同步项目与 gradle 文件”。所以现在它不是立竿见影的,但最终它正在起作用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句