【问题标题】:Adding a productFlavor in Gradle (Android) causes a compilation error在 Gradle (Android) 中添加 productFlavor 会导致编译错误
【发布时间】:2016-02-17 07:38:57
【问题描述】:

Gradle 可以使用以下 build.gradle 文件正常编译:

apply plugin: 'com.android.library'
android {
    compileSdkVersion 21
    buildToolsVersion "22.0.1"
    defaultConfig {
        minSdkVersion 8
        targetSdkVersion 16
        versionCode 1
        versionName "1.0"
    }
   sourceSets {

        debug {
            jniLibs.srcDirs = ['src/main/jniLibs-dbg']
            res.srcDirs = ['src/main/res-dbg', 'src/main/res-common']
        }
        release {
            jniLibs.srcDirs = ['src/main/jniLibs-rel']
            res.srcDirs = ['src/main/res-rel', 'src/main/res-common']
        }
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }

    }
    lintOptions {
        abortOnError false
    }
}
dependencies {
    compile 'com.android.support:support-v4:23.0.0'
    debugCompile files('libs/debug.jar')
    releaseCompile files('libs/nonDebug.jar')
}

但是,当我添加 productFlavors 时,编译失败:

productFlavors {
        flavor1{

        }
        flavor2{

        }
    }

口味是故意空的。我只是想看看编译是否成功。稍后我将添加每种口味的资源。 控制台日志显示 assembleDebug 任务失败,因为它找不到 debug.jar 中的类文件

这是我看到的错误:

出了什么问题:

Execution failed for task ':app:compileDebugJava'.
> Compilation failed; see the compiler error output for details.

Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.

有什么想法吗?

【问题讨论】:

  • > 编译失败;有关详细信息,请参阅编译器错误输出。看来您可以提供一些重要的日志。
  • 设置apply plugin: 'android'
  • @Student 你检查我的答案了吗?
  • 我做到了。没有运气。见下文...

标签: android gradle


【解决方案1】:

问题是

apply plugin: 'com.android.library

关键部分是在库 build.gradle 中将 publishNonDefault 设置为 true,然后您必须按照用户指南的建议定义依赖项。

publishNonDefault true
productFlavors {
    flavor1{}
    flavor2{}
}

此外,您正在将风味应用到库中,因此您还需要在项目 gradle 上定义您将在项目中使用的风味库

例如

market1Compile project(path: ':lib', configuration: 'flavor1Release')
market2Compile project(path: ':lib', configuration: 'flavor2Release')

更多详情请查看以下链接

Multi flavor app based on multi flavor library in Android Gradle

如果您发现任何问题,请告诉我,我也会提供帮助

【讨论】:

  • 感谢桑迪,但不幸的是它没有解决问题。
  • 问题是驻留在debug.jar中并从应用程序中引用的所有Java文件都找不到。编译器喊包 x.y.x 不存在。问题与依赖关系有关,但仅在我有 productFlavors 时才会出现。
  • 不幸的是我还没有得到解决方案.. :-( 仍在苦苦挣扎。我认为问题与依赖关系有关。添加 productFlavor 对依赖有何影响? ....打败我...
  • 是的,它会影响你将要使用这个库的项目依赖,所以你需要决定你想要在项目中使用哪个风格库,你可以在项目依赖中定义它
  • 桑迪,感谢您的帮助,我刚刚注意到 Android 库构建良好,而失败在于应用程序使用该库编译。
【解决方案2】:

你的 Logcat 抛出了什么

注意:某些输入文件使用或覆盖已弃用的 API。

首先升级你的buildToolsVersion & compileSdkVersion

android {
compileSdkVersion 23
buildToolsVersion "23.0.1"
defaultConfig {
    minSdkVersion 8
    targetSdkVersion 23
    versionCode 1
    versionName "1.0"
}

您可以更改您的minSdkVersion 8 级别,使用15 并设置targetSdkVersion 23

再次为

注意:使用 -Xlint:deprecation 重新编译以了解详细信息。注意:一些输入 文件使用未经检查或不安全的操作。注意:重新编译 -Xlint:详细信息未选中。

你可以去这里

Failure on build with Gradle on command line with an android studio project : Xlint error

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-19
    • 2021-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多