替换framework.jar包之后 运行异常 及 代码报红解决方案

基于 Android studio 版本 2022.2.1

运行报错是因为之前同事用的都是3.x的 studio 换成4.x之后就不行了
下面的systemui是实际的项目 需要替换成自己的项目

运行报错

image.png

替换 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配置


image.png

勾选上该选项 重新编译后会生成.iml文件

修改2个 iml文件

.idea目录下 -> moudule -> systemui


image.png

找到以下这行代码 放置到同标签内的最后一行

<orderEntry type="jdk" jdkName="Android API 31 Platform" jdkType="Android SDK" />

执行systemui 的gradle task任务prebuild

systemui > task > other > prebuild


image.png

查看报红代码 已经正常

image.png

点击查看mleft属性可跳转


image.png

不需要手动修改文件的解决方案


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

推荐阅读更多精彩内容