new*_*zer 5 android dependency-management build.gradle
我有一个 Android 项目,它在 build gradle 2.3.3 中运行良好,当我使用 build gradle 3.0.1 时,我遇到了一些构建错误。这是错误的build.gradle,它的项目名称是A。
apply plugin: 'com.android.library'
apply from: '../Localization/localize.gradle'
apply plugin: 'maven'
......
android {
compileSdkVersion 26
buildToolsVersion '26.0.2'
defaultConfig {
minSdkVersion 19
targetSdkVersion 26
versionCode buildVersionCode
versionName buildVersionNumber
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
externalNativeBuild {
cmake {
cppFlags "-std=c++11"
}
}
ndk{
// Specifies the ABI configurations of your native
// libraries Gradle should build and package with your APK.
/*abiFilters 'x86', 'x86_64', 'armeabi', 'armeabi-v7a',
'arm64-v8a'*/
abiFilters 'x86','armeabi-v7a'
}
testOptions {
unitTests.returnDefaultValues = true
}
consumerProguardFiles 'proguard-rules.pro'
// Set build time-stamp and version number
buildConfigField "String", "sProjectBuildTime", "\"${buildTimeStamp}\"";
buildConfigField "String", "sProjectVersionNumber", "\"${buildVersionNumber}\"";
......
}
Run Code Online (Sandbox Code Playgroud)
它适用于 localize.gradle,这是 localize.gradle 内容
// import legacy ANT tasks: http://www.javacodegeeks.com/2012/08/using
gradle-to-bootstrap-your-legacy.html for XSLT based localization
ant.projectName = 'A'
ant.importBuild '../../Tools/Localization/localize.xml'
// expose legacy ANT task as GradleBuild task
task gradleLocalize(type: GradleBuild) { GradleBuild antBuild ->
antBuild.buildFile = 'build.gradle'
antBuild.tasks = ['ant2gradleLocalize']
}
// automatically run localization GradleBuild task when the AndroidManifest gets checked during the build
tasks.whenTaskAdded { task ->
if (task.name.startsWith('check')) {
if (task.name.endsWith('DebugManifest') ||
task.name.endsWith('ReleaseManifest')) {
task.dependsOn gradleLocalize
}
}
}
Run Code Online (Sandbox Code Playgroud)
错误信息是评估项目':A'时出现问题。
无法应用插件 [id 'com.android.library'] 由于 Gradle 新的变体感知依赖管理的限制,在不同的类加载器中加载 Android Gradle 插件会导致构建错误。当子项目中包含 Android Gradle 插件的构建脚本类路径或复合构建中包含的项目设置不同时,可能会发生这种情况。要解决此问题,请将 Android Gradle 插件仅添加到顶级 build.gradle 文件的 buildscript 类路径。在复合构建的情况下,还要确保包含 Android Gradle 插件的构建脚本类路径在主项目和包含的项目中是相同的。如果您使用的 Gradle 版本已经解决了该问题,您可以通过设置 android. enableBuildScriptClasspathCheck=false 在 gradle.properties 文件中。要了解有关此问题的更多信息,请访问https://d.android.com/r/tools/buildscript-classpath-check.html。
我在整个项目中发现插件名称 com.android.library 它只出现一次,我猜也许项目 A 的 build.gradle 和 localize.grandle 有循环依赖,有人可以帮忙吗?我被这个阻塞了很长时间。谢谢!
| 归档时间: |
|
| 查看次数: |
571 次 |
| 最近记录: |