我正在使用不同的 productFlavors 设置 Android库。 该库具有浅和完整风格。文件设置正确:
$(document).ready(function(){ ... });
主要班级
完整班级src/main/java/com/example/...
轻量级src/full/java/com/example/...
Android Studio正确理解了这一点并添加了src/light/java/com/example/...
。
问题:(full)
等依赖项按预期工作,但不是okhttp
。使用appcompat-v7
,ViewPager
,FragmentActivity
的所有内容。我已经尝试将依赖项添加到RecyclerView
但它也不起作用。 Android Studio无法解析依赖关系,导入无效,但ok fullCompile
,okhttp
等等除外。
我已尝试过exoplayer
,Invalidate Cache/Restart
,clean Project
,但都没有效果。
图书馆 Resync gradle
build.gradle
应用 apply plugin: 'com.android.library'
android {
compileSdkVersion 23
buildToolsVersion "23.0.1"
...
buildTypes {
release {
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
minifyEnabled false
}
}
lintOptions {
abortOnError false
}
publishNonDefault true
productFlavors {
full {
}
light {
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:support-v4:23.1.1'
compile 'com.android.support:appcompat-v7:23.1.1'
compile 'com.squareup.okhttp:okhttp:2.3.0'
fullCompile 'com.android.support:support-v4:23.1.1'
fullCompile 'com.android.support:appcompat-v7:23.1.1'
fullCompile 'com.android.support:recyclerview-v7:23.1.1'
fullCompile 'com.squareup.picasso:picasso:2.5.0'
}
build.gradle
答案 0 :(得分:3)
您必须在app gradle中声明配置。当它与库相关时,配置未正确声明。尝试:
configurations {
fullDebugCompile
fullReleaseCompile
lightDebugCompile
lightReleaseCompile
}
dependencies {
...
fullDebugCompile project(path:":library", configuration:"fullDebug")
fullReleaseCompile project(path:":library", configuration:"fullRelease")
lightDebugCompile project(path:":library", configuration:"lightDebug")
lightReleaseCompile project(path:":library", configuration:"lightRelease")
}
长解释
gradle android插件使用不同的应用程序和库实现,分别称为AppVariant
和LibraryVariant
。有时,变体和构建类型的工作方式在两种项目中都是不同的。在这种情况下,前一段时间的库总是在给定变体中的发布构建类型中编译,这使得库项目不像应用程序那么灵活。
这就是为什么他们决定启用publishNonDefault
选项并在Android Studio中为此类行为提供支持的原因,因此您可以在应用的不同版本中使用库的不同版本,但您必须指定哪个构建使用哪个库。这就是让您明确声明configurations
的原因。
Android Build Tools团队使用的约定名称为{buildType}{flavor}TaskName
,因此对于类路径配置,您必须使用相同的名称。
所有这一过程都有一个缺点,即如果你发布非默认依赖项,android插件将确保在构建应用程序之前编译所有可能的库配置,因此构建时间可能会增加一点(取决于图书馆大小)