经过更多的研究,我已经能够使一切按预期进行。以下是最终的build.gradle文件:
项目build.gradle:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.1.0'
}
}
allprojects {
repositories {
jcenter()
}
}
应用程序模块build.gradle:
import org.aspectj.bridge.IMessage
import org.aspectj.bridge.MessageHandler
import org.aspectj.tools.ajc.Main
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'org.aspectj:aspectjtools:1.8.1'
}
}
apply plugin: 'com.android.application'
repositories {
mavenCentral()
}
def gsonVersion = '2.2.4'
def aspectJVersion = '1.8.1'
dependencies {
compile project(':blahblah')
compile "org.aspectj:aspectjrt:${aspectJVersion}"
compile 'com.android.support:support-v4:19.1.0'
compile "com.google.code.gson:gson:${gsonVersion}"
compile 'com.google.android.gms:play-services:6.1.11'
compile files('libs/commons-lang3-3.3.2.jar')
}
android {
compileSdkVersion 19
buildToolsVersion "22.0.1"
defaultConfig {
applicationId "com.example.myapp"
minSdkVersion 14
targetSdkVersion 19
}
lintOptions {
abortOnError true
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}
}
// The section below is what performs the AOP "weaving" (injecting the AOP code into
// the appropriate classes). Please do not remove.
final def log = project.logger
final def variants = project.android.applicationVariants
variants.all { variant ->
if (!variant.buildType.isDebuggable()) {
log.debug("Skipping non-debuggable build type '${variant.buildType.name}'.")
return;
}
JavaCompile javaCompile = variant.javaCompile
javaCompile.doLast {
String[] args = ["-showWeaveInfo",
"-1.5",
"-inpath", javaCompile.destinationDir.toString(),
"-aspectpath", javaCompile.classpath.asPath,
"-d", javaCompile.destinationDir.toString(),
"-classpath", javaCompile.classpath.asPath,
"-bootclasspath", project.android.bootClasspath.join(File.pathSeparator)]
log.debug "ajc args: " + Arrays.toString(args)
MessageHandler handler = new MessageHandler(true);
new Main().run(args, handler);
for (IMessage message : handler.getMessages(null, true)) {
switch (message.getKind()) {
case IMessage.ABORT:
case IMessage.ERROR:
case IMessage.FAIL:
log.error message.message, message.thrown
break;
case IMessage.WARNING:
log.warn message.message, message.thrown
break;
case IMessage.INFO:
log.info message.message, message.thrown
break;
case IMessage.DEBUG:
log.debug message.message, message.thrown
break;
}
}
}
}
“blashblah”库模块构建.gradle:
def gsonVersion = '2.2.4'
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath "com.android.tools.build:gradle:1.1.0"
classpath 'com.uphyca.gradle:gradle-android-aspectj-plugin:0.9.12'
}
}
apply plugin: 'com.android.library'
apply plugin: 'android-aspectj'
repositories {
mavenCentral()
}
dependencies {
compile "com.google.code.gson:gson:${gsonVersion}"
}
android {
compileSdkVersion 19
buildToolsVersion "22.0.1"
lintOptions {
abortOnError true
}
}