AndroidStudio引入framework.jar

2022-07-08  本文已影响0人  AnterC

framework.jar生成目录在out\target\common\obj\JAVA_LIBRARIES\framework_intermediates\classes.jar

第一步:将framework.jar拷贝到module/libs目录下;

第二步:在Project的build.gradle的allprojects{ }中加入

gradle.projectsEvaluated {

    tasks.withType(JavaCompile) {

        options.compilerArgs.add('-Xbootclasspath/p:app\\libs\\framework.jar')

    }

}

或者在module的build.gradle的android{ }加入

gradle.projectsEvaluated {

        tasks.withType(JavaCompile) {

            Set<File> fileSet = options.bootstrapClasspath.getFiles()

            List<File> newFileList = new ArrayList<>()

            newFileList.add(new File("libs/framework.jar"))

            newFileList.addAll(fileSet)

            options.bootstrapClasspath = files(newFileList.toArray())

        }

    }

第三步:在module的build.gradle的最外层加入如下代码,为的是在iml文件中将jdkType="Android SDK"那一行移到framework.jar的后面;

preBuild {

    doLast {

        // 注意:iml的路径要根据自己的实际情况来写

        def imlFile = file("../.idea/modules/b561/AvmLive.b561.main.iml")

        try {

            def parsedXml = (new XmlParser()).parse(imlFile)

            def jdkNode = parsedXml.component[1].orderEntry.find { it.'@type' == 'jdk' }

            parsedXml.component[1].remove(jdkNode)

            def sdkString = "Android API " + android.compileSdkVersion.substring("android-".length()) + " Platform"

            new groovy.util.Node(parsedXml.component[1], 'orderEntry', ['type': 'jdk', 'jdkName': sdkString, 'jdkType': 'Android SDK'])

            groovy.xml.XmlUtil.serialize(parsedXml, new FileOutputStream(imlFile))

        } catch (FileNotFoundException e) {

            // nop, iml not found

        }

    }

}

第四步:编译运行module。

上一篇下一篇

猜你喜欢

热点阅读