Android new build system (gradle) and aspectj

后端 未结 5 539
再見小時候
再見小時候 2021-01-31 20:30

In Google IO the new build system gradle is announced to replace ant. My project is using aspectj and I would like to use it in my project. I couldn\'t figure out some variabl

5条回答
  •  臣服心动
    2021-01-31 21:04

    I figured out that the AAR can not be used as a jar library in my code. If you are using dependencies like this

    compile 'com.android.support:appcompat-v7:18.0.0'
    

    You need to find the jar file and add to the classpath. The following code will do it.

    tree = fileTree(dir: "${project.buildDir}/exploded-bundles", include: '**/classes.jar')
    tree.each { jarFile ->
        iajcClasspath += ":" + jarFile
    }
    

    So the whole section would be:

    variant.javaCompile.doLast {
        // Find the android.jar and add to iajc classpath
        def androidSdk = android.adbExe.parent + "/../platforms/" + android.compileSdkVersion + "/android.jar"
        println 'Android SDK android.jar path: ' + androidSdk
    
        def iajcClasspath = androidSdk + ":" + configurations.compile.asPath
        configurations.compile.dependencies.each { dep ->
            if(dep.hasProperty("dependencyProject")) {
                iajcClasspath += ":" + dep.dependencyProject.buildDir + "/bundles/release/classes.jar"
            }
        }
    
        // handle aar dependencies pulled in by gradle (Android support library and etc)
        tree = fileTree(dir: "${project.buildDir}/exploded-bundles", include: '**/classes.jar')
        tree.each { jarFile ->
            iajcClasspath += ":" + jarFile
        }
            println 'Classpath for iajc: ' + iajcClasspath
    
            ant.taskdef( resource:"org/aspectj/tools/ant/taskdefs/aspectjTaskdefs.properties", classpath: configurations.ajc.asPath)
    

    For the full example please see the build.gradle for AnyMemo project here: https://code.google.com/p/anymemo/source/browse/build.gradle?spec=svnf85aaa4b2d78c62876d0e1f6c3e28252bf03f820&r=f85aaa4b2d78c62876d0e1f6c3e28252bf03f820

提交回复
热议问题