AS 导入Framework.jar

参考:https://blog.csdn.net/zhuzp_blog/article/details/51674468

https://blog.csdn.net/pshiping2014/article/details/79549680

https://www.jianshu.com/p/36cd2a7c888d

 

1.首先将framework.jar拷贝到项目的/libs文件夹中,然后右键framework.jar文件,然后Add as Library ,再选当前的module

完了之后,在你的Module的build.gradle中会增加了

implementation files('libs/framework.jar')

这个时候我们已经添加了framework.jar包,但是我们还有改变framework.jar的作用域属性,右键你的module,Open Module Setting,然后将framework.jar的Scope改为 Provided

改了framework.jar的作用域后,Module的build.gradle也会有改变,之前的compile files(‘libs/framework.jar’),会变成provided files(‘libs/framework.jar’)

provided files('libs/framework.jar')

或者手动添加

dependencies {

    implementation files('libs/framework.jar')

    provided files('libs/framework.jar')
}

但是我添加后编译不报错,运行报错
//implementation fileTree(include: ['*.jar'], dir: 'libs')

  //implementation files('libs/framework.jar')

  //provided files('libs/framework.jar')

compileOnly files('libs/framework.jar')

这样修改后久没有问题了

2.改了framework.jar 的scope后,再在修改project的build.gradle文件,改成如下所示

这是在原有的基础上加了gradle.projectsEvaluted{}里面的内容,这里要说明下”Xbootclasspath/p”后接的路径,是相对于当前Project的根目录,例子中的”:app\libs\framework.jar”其中的app为Module名,libs就是放framework.jar的文件夹了。

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

}

 

buildscript {

}

也要添加,否则可能编译是失败

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

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.修改app 上面右键->open Module Settings-Project Structure->Modules 修改jdk为1.8的

  implementation files('libs/framework.jar')

  provided files('libs/framework.jar')

//compileOnly files('libs/framework.jar')

改回来编译ok,并且运行ok

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值