我有一个简单的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项目.在这个项目下面嵌套了多个子项目(有时它们是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)