【问题标题】:Android gradle-experimental 0.2.0 add res and aidlAndroid gradle-experimental 0.2.0 添加 res 和aidl
【发布时间】:2015-08-08 15:16:08
【问题描述】:

我很难在 Android Studio 1.3、Gradle 2.5 和 gradle-experimental 插件 0.2.0 中使用外部库,因为 NDK 是必需的。

我找到了一些关于如何更改旧 gradle 文件的材料 here,但找不到任何其他文档文档。

在我广泛的搜索过程中,我设法找出了清单的变化,但没有发现 resaid 的变化。有没有人设法找出需要更改的内容或任何有用的文档?

apply plugin: 'com.android.model.library'

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle-experimental:0.2.0'
    }
}

model {
    android {
        compileSdkVersion = 19
        buildToolsVersion = "19.1.0"

        defaultConfig.with {
            applicationId = "org.opencv.android"
            minSdkVersion.apiLevel = 8
            targetSdkVersion.apiLevel = 19
            versionCode = 3000
            versionName = "3.0.0"
        }
    }

    android.sources {
        main {
            manifest.source.include 'AndroidManifest.xml' // OLD manifest.srcFile 'AndroidManifest.xml'
            java.source.srcDir 'src'
            resources.source.srcDirs 'src'
            res.srcDirs = ['res'] // ERROR
            aidl.srcDirs ['src'] // ERROR
        }
    }
}

错误是:

Gradle 同步失败:在 AndroidLanguageSourceSet 'main:aidl' 上找不到属性 'srcDirs'。

Gradle 同步失败:无法加载类 'com.android.build.gradle.model.AndroidLanguageSourceSet_Decorated'。

【问题讨论】:

  • 我不知道它是否能解决你的问题,但也许可以试试res.srcDirs += ['res']?
  • 错误信息现在和第一个一样。不管怎么说,还是要谢谢你。 Gradle sync failed: Could not find property 'srcDirs' on AndroidLanguageSourceSet 'main:res'.
  • 嗯.. 看起来它们现在都是同一类型(AndroidLanguageSourceSet)。所以相同的语法可能适用于所有人:java.source.srcDirs += 'src/main/java'res.source.srcDirs += 'src/main/res'aidl.source.srcDirs += 'src/main/aidl'(在我的情况下有效)`
  • 有效!我记得一两天前尝试过完全相同的事情。一定犯了一些错误(错字或忘记了 += )。谢谢!您可以将其发布为答案。

标签: android android-ndk android-gradle-plugin


【解决方案1】:

使用println 进行的一些调试显示javaresaidl 属于AndroidLanguageSourceSet 类型。它们现在都具有相同的 source 属性,并且其中包含 srcDirs 列表。您应该能够将自定义路径附加到 srcDirs 属性,例如:


android.source {
  main {
    java.source.srcDirs += 'src'
    res.source.srcDirs += 'res'
    aidl.source.srcDirs += 'aidl'
  }
}

不要忘记在新语法中使用= 来设置值,并使用+= 将其附加到列表中(在旧语法中,只需一个空格就足够了)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-14
    • 1970-01-01
    • 1970-01-01
    • 2016-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多