AS中导入framework.jar包编译,运行全部通过

需要将定制化的framework包导入到AS中。

1.将jar包放在libs目录下:

2.右键将包add as library

3.在app的build.gradle下 dependence下:

记住:implementation fileTree(include: ['*.jar'], dir: 'libs')必须注释,否则会报错。

将implementation 改为compileOnly(原来的provided已经废弃)

4.然后我们需要将framework的编译顺序更改到系统自带android.jar之前,以前是手动更改,后来发现一段脚本,得救了。在app的build.gradle下,最后添加

具体代码如下:

preBuild{doLast{defimlFile=file(project.name+".iml")println'Change '+project.name+'.iml order'try{defparsedXml=(newXmlParser()).parse(imlFile)defjdkNode=parsedXml.component[1].orderEntry.find{it.'@type'=='jdk'}parsedXml.component[1].remove(jdkNode)defsdkString="Android API "+android.compileSdkVersion.substring("android-".length())+" Platform"newNode(parsedXml.component[1],'orderEntry',['type':'jdk','jdkName':sdkString,'jdkType':'Android SDK'])groovy.xml.XmlUtil.serialize(parsedXml,newFileOutputStream(imlFile))}catch(FileNotFoundExceptione){//nop,imlnotfound}}}

这段代码是用来将系统jar包自动放置于最后的位置。编译之后,打开app.iml可以查看到效果:

然后为了使framwork包生效,需要在系统的build.gradle下添加一段代码

具体代码如下:

//添加以下代码,使cframework-base.jar包编译先于android.jargradle.projectsEvaluated{tasks.withType(JavaCompile){options.compilerArgs.add('-Xbootclasspath/p:D:\\git\\MyApplication\\app\\libs\\framework-base.jar')}}

这个地方一定要注意一点:后面的路径已经要右键framework包---copy relative path,

copy relative path,copy relative path(重要的事情要说三遍,楼主就是这里栽了跟头,csdn,stackoverflow上很多大牛都遇到了)


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

推荐阅读更多精彩内容