AS 导入Framework.jar

本文详细介绍了在Android项目中集成Framework.jar的步骤,包括拷贝并添加至项目库,调整作用域属性,修改编译顺序及设置JDK版本等关键操作,确保Framework.jar能正确编译和运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考:https://blog.youkuaiyun.com/zhuzp_blog/article/details/51674468

https://blog.youkuaiyun.com/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

 

 

D:\java1.8\bin\java.exe -ea -Didea.test.cyclic.buffer.size=1048576 "-javaagent:D:\idea\IntelliJ IDEA 2024.2.3\lib\idea_rt.jar=54408:D:\idea\IntelliJ IDEA 2024.2.3\bin" -Dfile.encoding=UTF-8 -classpath "C:\Users\Administrator\.m2\repository\org\junit\platform\junit-platform-launcher\1.8.2\junit-platform-launcher-1.8.2.jar;C:\Users\Administrator\.m2\repository\org\junit\platform\junit-platform-engine\1.8.2\junit-platform-engine-1.8.2.jar;C:\Users\Administrator\.m2\repository\org\opentest4j\opentest4j\1.2.0\opentest4j-1.2.0.jar;C:\Users\Administrator\.m2\repository\org\junit\platform\junit-platform-commons\1.8.2\junit-platform-commons-1.8.2.jar;C:\Users\Administrator\.m2\repository\org\apiguardian\apiguardian-api\1.1.2\apiguardian-api-1.1.2.jar;D:\idea\IntelliJ IDEA 2024.2.3\lib\idea_rt.jar;D:\idea\IntelliJ IDEA 2024.2.3\plugins\junit\lib\junit5-rt.jar;D:\idea\IntelliJ IDEA 2024.2.3\plugins\junit\lib\junit-rt.jar;D:\java1.8\jre\lib\charsets.jar;D:\java1.8\jre\lib\deploy.jar;D:\java1.8\jre\lib\ext\access-bridge-64.jar;D:\java1.8\jre\lib\ext\cldrdata.jar;D:\java1.8\jre\lib\ext\dnsns.jar;D:\java1.8\jre\lib\ext\jaccess.jar;D:\java1.8\jre\lib\ext\jfxrt.jar;D:\java1.8\jre\lib\ext\localedata.jar;D:\java1.8\jre\lib\ext\nashorn.jar;D:\java1.8\jre\lib\ext\sunec.jar;D:\java1.8\jre\lib\ext\sunjce_provider.jar;D:\java1.8\jre\lib\ext\sunmscapi.jar;D:\java1.8\jre\lib\ext\sunpkcs11.jar;D:\java1.8\jre\lib\ext\zipfs.jar;D:\java1.8\jre\lib\javaws.jar;D:\java1.8\jre\lib\jce.jar;D:\java1.8\jre\lib\jfr.jar;D:\java1.8\jre\lib\jfxswt.jar;D:\java1.8\jre\lib\jsse.jar;D:\java1.8\jre\lib\management-agent.jar;D:\java1.8\jre\lib\plugin.jar;D:\java1.8\jre\lib\resources.jar;D:\java1.8\jre\lib\rt.jar;D:\abandon\demo1\target\test-classes;D:\abandon\demo1\target\classes;D:\apache-maven-3.8.6-bin\apache-maven-3.8.6\mvn_resp\org\springframework\boot\spring-boot-starter-web\2.6.13\spring-boot-starter-web-2.6.13.jar;D:\apache-maven-3.8.6-bin\apache-maven-3.8.6\mvn_resp\org\springframework\boot\spring-boot-s
03-18
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值