AndroidStudio引入framework.jar

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。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容