相关疑难解决方法(0)

lint任务上的gradle构建失败

我有一个简单的Android项目,我用Android Studio 0.4.0创建.我使用Gradle 1.9和Gradle Android插件0.7.昨天我在我的gradle构建脚本中添加了Jake Wharton的ButterKnife库:

dependencies {
            compile 'com.android.support:support-v4:19.0.0'
            compile 'com.android.support:appcompat-v7:19.0.0'

            // Butterknife
            compile 'com.jakewharton:butterknife:4.0.1'
}
Run Code Online (Sandbox Code Playgroud)

当我从Android Studio运行应用程序时,构建运行正常并在我的设备上正确执行.但是当我尝试(从命令行)时gradle build,构建失败.这是我的皮棉报告中的一部分:

InvalidPackage: Package not included in Android

/home/yami/.gradle/caches/modules-2/files-2.1/com.jakewharton/butterknife/4.0.1/f43b36925363701633d01adb8e54df7150397a78/butterknife-4.0.1.jar: Invalid package reference in library; not included in Android: javax.annotation.processing. Referenced from butterknife.internal.InjectViewProcessor.
/home/yami/.gradle/caches/modules-2/files-2.1/com.jakewharton/butterknife/4.0.1/f43b36925363701633d01adb8e54df7150397a78/butterknife-4.0.1.jar: Invalid package reference in library; not included in Android: javax.annotation.processing. Referenced from butterknife.internal.InjectViewProcessor.
/home/yami/.gradle/caches/modules-2/files-2.1/com.jakewharton/butterknife/4.0.1/f43b36925363701633d01adb8e54df7150397a78/butterknife-4.0.1.jar: Invalid package reference in library; not included in Android: javax.annotation.processing. Referenced from butterknife.internal.InjectViewProcessor.
/home/yami/.gradle/caches/modules-2/files-2.1/com.jakewharton/butterknife/4.0.1/f43b36925363701633d01adb8e54df7150397a78/butterknife-4.0.1.jar: Invalid package reference in library; not included …
Run Code Online (Sandbox Code Playgroud)

android gradle android-gradle-plugin

94
推荐指数
6
解决办法
11万
查看次数

如何从多项目目录的顶层禁用Android Gradle Plugin中的lint abortOnError

我有一个顶级的Android Gradle项目.在这个项目下面嵌套了多个子项目(有时它们是2级深),即:

top level project
   |
project1

vendor libraries
      |
     lib1

     lib2
Run Code Online (Sandbox Code Playgroud)

lint正在中止我在某些库项目中的构建.我可以编辑每个单独的库项目build.gradle以解决问题

android {
   lintOptions {
      abortOnError false
   }
}
Run Code Online (Sandbox Code Playgroud)

但是,我更喜欢顶级build.gradle脚本中的以下代码:

subprojects {

    afterEvaluate {
        if (getPlugins().hasPlugin('android') ||
            getPlugins().hasPlugin('android-library')) {

            println name // for debugging

            android {
                lintOptions {
                    abortOnError false
                }
            }
        }

    }
}
Run Code Online (Sandbox Code Playgroud)

条件语句确保只挂钩到带有android插件的项目中.我只能使用afterEvaluate来使用它.但是,我的构建仍然在lint错误上失败.

有没有人有一个干净的解决方案从顶层注入这些设置?

更新:

重新排列子项目并在ifEvaluate或使用allprojects后仍然会出现以下类型的错误:

7: Task failed with an exception.
-----------
* What went wrong:
Execution failed for task ':3rdparty:OrmLiteQueryBuilder:lint'.
> [Ljava/util/HashMap$Entry;

* Try:    
Run with --stacktrace option to …
Run Code Online (Sandbox Code Playgroud)

android gradle build.gradle android-gradle-plugin

12
推荐指数
1
解决办法
1万
查看次数