AndroidStudio4.x引用framework.jar

三个步骤

这里的使用的Android Studio 4.1.2。

1.在allprojects中加入gradle.projectsEvaluated

/libs/framework.jar为路径

allprojects {
    repositories {
        mavenCentral()
        google()
        jcenter()
    }

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

2.在dependencies 中依赖framework.jar

    dependencies {
        //implementation fileTree(include: '*.jar', dir: 'libs')
        compileOnly files('/libs/framework.jar')
    }

3.在dependencies下面加入preBuild,也是最重要的一步,

是为了把Android SDK的引用放到最后,这样当framework.jarandroid.jar都有这个类时,优先引用framework.jar里面的类。

    dependencies {
        //implementation fileTree(include: '*.jar', dir: 'libs')
        compileOnly files('/libs/framework.jar')
    }

    preBuild {
        doLast {
            def imlFile = file(project.name + ".iml")
            println('yxp change ' + project.name + '.iml order')
            try {
                def parsedXml = (new XmlParser()).parse(imlFile)
                //这里有可能是'1'也有可能是'2',也有可能是其他,需要自己去判断
                def parseXmlComponent = parsedXml.component[2];
                def jdkNode = parseXmlComponent.orderEntry.find { it.'@type' == 'jdk' }
                parseXmlComponent.remove(jdkNode)
                def sdkString = "Android API " + android.compileSdkVersion.substring("android-".length()) + " Platform"
                new groovy.util.Node(parseXmlComponent, 'orderEntry', ['type': 'jdk', 'jdkName': sdkString, 'jdkType': 'Android SDK'])
                groovy.xml.XmlUtil.serialize(parsedXml, new FileOutputStream(imlFile))
            } catch (FileNotFoundException e) {
                // nop, iml not found
            }
        }
    }

这里def parseXmlComponent = parsedXml.component[2];2是说在第几个Component,我这里是第三个,所以选2,具体需要自己去判断,在工程的iml文件里面。

我的framework.jar在第三个里面,所以填写下标2
改变后的orderEntry,可以看到framework.jarsdk 29前面。

  
     //省略...
    
    
    
    
  

最后可能还需要加入multiDexEnabled true

android{
        defaultConfig {
            applicationId "com.noahedu.xxxxxx"
            minSdkVersion 23
            targetSdkVersion 23
            versionCode 300093
            versionName "3.00.093AS"
            multiDexEnabled true
        }
}
    dependencies {
        //implementation fileTree(include: '*.jar', dir: 'libs')
        implementation 'com.android.support:multidex:1.0.3'
        compileOnly files('/libs/framework.jar')
    }

你可能感兴趣的:(AndroidStudio4.x引用framework.jar)