Android studio 使用自定义修改的framework.jar

319 阅读1分钟

首先将系统编译生成的framework.jar弄到AS工程中,将framework.jar 放到AS工程的app目录下,不建议放到libs目录下,因为libs目录下的jar文件默认会被编译进apk

1 在app/build.gradle文件的标签下添加一行    compileOnly files('framework.jar')

  1. 为了让classes.jar 在android.jar 前先加载 需要在app下的build.gradle 底下添加
preBuild {
 doLast {
 def imlFile = file("../.idea/modules/app/app.iml")
        println 'Change ' + file("../.idea/modules/app/app.iml")
        try {
            def parseXml = new XmlParser().parse(imlFile)
            def jdkNode = parseXml.component[1].orderEntry.find { it.'@type' == 'jdk' }
 parseXml.component[1].remove(jdkNode)
            def sdkString = "Android API " + android.compileSdkVersion + " Platform"
 new Node(parseXml.component[1], 'orderEntry', ['type': 'jdk', 'jdkName': sdkString, 'jdkType': 'Android SDK'])
            groovy.xml.XmlUtil.serialize(parseXml, new FileOutputStream(imlFile))
        } catch (FileNotFoundException e) {
            //nop, iml not found.
 println("iml file not found")
        }
    }
}
  1. 还需要在工程的build.gradle添加
allprojects {
 gradle.projectsEvaluated {
 tasks.withType(JavaCompile) {
            options.compilerArgs << '-Xbootclasspath/p:app/framework.jar'
 }
    }
}

完成后clean 重新build,查看app.iml文件,确认以下这行出现在framework.jar后面就可以了