博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android studio 优先源码编译解决隐藏文件报红问题
阅读量:2122 次
发布时间:2019-04-30

本文共 1646 字,大约阅读时间需要 5 分钟。

只写实用性

1、先整编以后找到jar

out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/classes_full_debug.jar或是classes.jar

2、将framework的jar包放到lib目录下,(这里取名为my_build.jar)

3、在module build 下面添加:preBuild内容 preBuild

dependencies {    ...}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 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) {            // nop, iml not found        }    }}

4、在module build 下面添加 :

dependencies {    ...    //以只读的方式打开 my_build.jar,在打包app的时候不会将其打包进去。这就解决了方法数超过64k的问题了    compileOnly files('libs/my_build.jar')}

5、在project build 下面添加:gradle.projectsEvaluated

allprojects {    repositories {        google()        jcenter()    }    gradle.projectsEvaluated {        tasks.withType(JavaCompile)            {                options.compilerArgs.add('-Xbootclasspath/p:app/libs/my_build.jar')            }    }        // 原文链接:https://blog.csdn.net/lei1217/article/details/71627916}

6、Project目录结构下,在app/app.iml中修改Framework.jar的调用优先级,将如下系统SDK的order定义放到最后面:(一般情况这个会自动生成,所以这步一般情况忽略,如果出了问题可以删除app.iml重新编译)

你可能感兴趣的文章
手抄笔记:深入理解linux内核-1
查看>>
内存堆与栈
查看>>
Leetcode C++《每日一题》20200621 124.二叉树的最大路径和
查看>>
Leetcode C++《每日一题》20200622 面试题 16.18. 模式匹配
查看>>
Leetcode C++《每日一题》20200625 139. 单词拆分
查看>>
Leetcode C++《每日一题》20200626 338. 比特位计数
查看>>
Leetcode C++ 《拓扑排序-1》20200626 207.课程表
查看>>
Go语言学习Part1:包、变量和函数
查看>>
Go语言学习Part2:流程控制语句:for、if、else、switch 和 defer
查看>>
Go语言学习Part3:struct、slice和映射
查看>>
Go语言学习Part4-1:方法和接口
查看>>
Leetcode Go 《精选TOP面试题》20200628 69.x的平方根
查看>>
Leetcode C++ 剑指 Offer 09. 用两个栈实现队列
查看>>
Leetcode C++《每日一题》20200707 112. 路径总和
查看>>
云原生 第十一章 应用健康
查看>>
Leetcode C++ 《第202场周赛》
查看>>
云原生 第十二章 可观测性:监控与日志
查看>>
Leetcode C++ 《第203场周赛》
查看>>
云原生 第十三章 Kubernetes网络概念及策略控制
查看>>
《redis设计与实现》 第一部分:数据结构与对象 || 读书笔记
查看>>