Android studio Artic Fox2020 引入 framework.jar

第一步:在依赖中 引入framework.jar

dependencies {
    //引用framework_android11.jar,compileOnly仅参与编译
    compileOnly files('libs/framework_android11.jar')
 }

 第二步:在build.gradle中 配置依赖优先级,否则Android studio默认引用配置的Android sdk进行编译

preBuild {
    doLast {
         //def imlFile = file(project.name + ".iml")     //AndroidStudio 3.x 适用
         //Android studio4.0的app.iml文件路径为项目/.idea/modules/app/app.iml。早期版本,app.iml文件在项目根目录下
         //def imlFile = file("\\..\\.idea\\modules\\app\\app.iml")
         def imlFile = file("\\..\\.idea\\modules\\app\\XXXX.app.iml" )
         println 'path=' + projectDir.absolutePath
 //        println 'Change ' + project.name + '.iml order'
         try {
             def parsedXml = (new XmlParser()).parse(imlFile)
             def jdkNode = parsedXml.component[1].orderEntry.find { it.'@type' == 'jdk' }
             parsedXml.component[1].remove(jdkNode)
             println 'api =' +  android.compileSdkVersion.substring("android-".length())
             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
             e.printStackTrace();
         }
     }
}

 第三步: 在build.gradle中的Android节点设置编译参数   

android {
    gradle.projectsEvaluated {
        tasks.withType(JavaCompile) {
            Set<File> fileSet = options.bootstrapClasspath.getFiles()
            List<File> newFileList =  new ArrayList<>();
            //JAVA语法,可连续调用,输入参数建议为相对路径
            newFileList.add(new File("libs/framework.jar"))
            //最后将原始参数添加
            newFileList.addAll(fileSet)
            options.bootstrapClasspath = files(
                    newFileList.toArray()
            )
        }
    }
}

 注意事项:Android studio 3.X中写法 为如下:

allprojects {
    gradle.projectsEvaluated {
        tasks.withType(JavaCompile) {
            options.compilerArgs.add('-Xbootclasspath/p:app\\libs\\framework.jar')
        }
    }
}

 

posted @ 2022-10-20 15:17  迷~途  阅读(255)  评论(0编辑  收藏  举报