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')
}
}
}