[轉]androidstudio更改優先載入系統包framework.jar的順序

andi_song發表於2019-02-16

資料參考:

①   androidstudio更改優先載入系統包framework.jar的順序

②   Android studio匯入framework編譯的classes.jar包

步驟整理如下:

1.在當前專案目錄下建立libs目錄,存放要匯入的jar包,並新增到library

2.新增優先處理jar包程式碼,參考如下:

allprojects {
    repositories {
        google()
        jcenter()

        //新增以下程式碼,使framework.jar包編譯先於android.jar
        gradle.projectsEvaluated {
            tasks.withType(JavaCompile) {
                options.compilerArgs.add('-Xbootclasspath/p:libs\\framework.jar')    // libs/framework.jar為專案相對目錄
            }
        }

    }
}

3.在app.iml配置中將sdk移動到最後,新增以下程式碼


preBuild {
    doLast {
        def imlFile = file(project.name + ".iml")
        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)
            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
        }
    }
}

4.以上可以正常編譯,但是還存在一個問題沒有找到對策:程式碼提示仍處在 Cannot resolve method ‘xxxx()’狀態

相關文章