基于 Android studio 版本 2022.2.1
运行报错是因为之前同事用的都是3.x的 studio 换成4.x之后就不行了
下面的systemui是实际的项目 需要替换成自己的项目
运行报错
替换 systemui 目录下的 gradle文件
原代码
tasks.withType(JavaCompile) {
// options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation"
options.compilerArgs << "-Xbootclasspath/p:hq_systemui/libs/framework.jar"
}
替换方案
tasks.withType(JavaCompile) {
String path = getRootDir().getAbsolutePath()
options.compilerArgs << "-Xbootclasspath/p:$path/${project.name}/libs/framework.jar"
}
代码报红解决方案
生成iml 文件
修改studio gradle配置
勾选上该选项 重新编译后会生成.iml文件
修改2个 iml文件
.idea目录下 -> moudule -> systemui
找到以下这行代码 放置到同标签内的最后一行
<orderEntry type="jdk" jdkName="Android API 31 Platform" jdkType="Android SDK" />
执行systemui 的gradle task任务prebuild
systemui > task > other > prebuild
查看报红代码 已经正常
点击查看mleft属性可跳转
不需要手动修改文件的解决方案
def modifyIml(String path){
//此处文件名根据实际情况修改:
def imlFile = file(path)
println "${imlFile.path}"
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 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
println "no iml found"
}
}
preBuild {
doLast {
modifyIml("${buildDir}/../../.idea/modules/hq_systemui/hqg611project.hq_systemui.iml")
modifyIml("${buildDir}/../../.idea/modules/hq_systemui/hqg611project.hq_systemui.main.iml")
}
}