我目前正在尝试将我的项目切换为使用 gradle 构建。在使用旧的构建系统时,我通过编译源代码并在 Android 库之前链接 classes.jar 文件来链接到私有/内部/隐藏的 android API。我目前正在尝试在 gradle 中做同样的事情,但一点运气都没有。
使用我当前的 build.gradle 文件,我收到以下错误:
Gradle: A problem occurred evaluating project ':Launcher2'.
> Could not find method external() for arguments [file collection] on project ':Launcher2'.
如果我在“应用插件:android”之前删除这些行
dependencies {
compile files('libraries/classes.jar')
}
我收到有关缺少位于我的 classes.jar 文件中的 com.android.internal 和 com.android.common 包的错误。
这是我的 build.gradle 文件。
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.5.6'
}
}
dependencies {
compile files('libraries/classes.jar')
}
plugin: 'android'
android {
buildToolsVersion "17.0"
compileSdkVersion 10
dependencies {
compile fileTree(dir: 'libraries', include: '*.jar')
compile project(':ActiveAndroid')
}
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
}
}
编辑:在阅读了更多的gradle文档之后,我能够成功地将库链接到项目中,但是依赖关系的顺序是错误的。等效于我正在尝试做的是将两个 .jar 文件添加到类路径的顶部,以便在 android SDK jar 文件之前声明它们。
我正在挖掘 android gradle 插件的源代码,看来这可能是不可能的。代码似乎不完整,不会构建。如果有人有任何见解,我将不胜感激。否则,看起来我现在必须切换回使用 Ant。