赞
踩
Android Studio 引入framework.jar 步骤,记录笔记
Android源码编译产生的framework.jar 在不同的版本上生成路径是不同的
- Android N/O: 7 和 8
- out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/classes.jar
- Android P/Q: 9 和 10
- out/soong/.intermediates/frameworks/base/framework/android_common/combined/framework.jar
- Android R: 11以上
- out/soong/.intermediates/frameworks/base/framework-minus-apex/android_common/combined/framework-minus-apex.jar
复制framework.jar 到工程的libs文件夹中
并在app路径下的build.graddle 文件中修改,见下图:
- //修改点一
- compileOnly files('libs\\framework.jar')
到这里,但是有个问题,就是和Android SDK中同名的类文件,会优先使用SDK中的类,framework.jar中的类不会优先使用,解决方法:需要进行下面步骤的配置:
同样是在app路径下的build.graddle 文件中修改
- //修改点二
- gradle.projectsEvaluated {
- tasks.withType(JavaCompile) {
- Set<File> fileSet = options.bootstrapClasspath.getFiles();
- List<File> newFileList = new ArrayList<>()
- newFileList.add(new File("libs/framework.jar"))
- newFileList.addAll(fileSet)
- options.bootstrapClasspath = files(newFileList.toArray())
- }
- }
同样是在app路径下的build.graddle 文件中修改,降低Android SDK的使用级别,优先使用framework.jar中的类文件
- //修改点三 :调整Android SDK优先级
- gradle.buildFinished {
- //这里可以配置多个modules模块使用framework.jar包
- String[] modules = ["app", "mymodule"]
- for (String m : modules) {
- def imlFile = file("../.idea/modules/${m}/frameworkjartest.${m}.iml")
- 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 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) {
- e.printStackTrace()
- }
- }
- }
然后sync 编译成功后,就可以找到对应的模块的imi文件,可以看到下图,说明配置ok
1. 上面的3个修改点,都是在app模块中的build.graddle 文件中
2. 笔者的AS工程版本信息,亲测可用
distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-bin.zip
AS的版本 : Android Studio 4.2.1
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。