Android - 调用系统隐式API
2023-12-17 16:20:10
前言
调用系统隐式API首先到系统源码中找到classes.jar文件也就是系统API的jar包,然后添加到项目中在项目中引用
1、找系统API
直接参考https://codeleading.com/article/43715759046/
亲测有效,可以成功导出framework.jar
2、项目中引入系统API
1.将framework.jar文件放入as的项目中的libs目录下
2.在project的builed.gradle文件中的allprojects括号中添加以下代码
gradle.projectsEvaluated {
tasks.withType(JavaCompile) {
options.compilerArgs.add('-Xbootclasspath/p:app\\libs\\framework.jar')
}
}
3.在android括号中添加
sourceSets {
main {
jni.srcDirs = []
jniLibs.srcDirs = ['libs']
}
}
4.在module的builed.gradle文件中的dependencies括号中添加
compileOnly files('libs\\framework.jar')
5.在dependencies外面也就是最下面添加以下代码(表示优先调用引入的framework.jar)
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
}
}
}
通过以上5步操作后,Sync一下完成引入framework.jar
3…常见问题记录
引入framework.jar包后代码仍然飘红如何解决?
进入 项目.idea\modules\app\ 目录有一个 项目名.app.iml文件
打开这个文件将component里面的这一行代码
<orderEntry type="jdk" jdkName="Android API 29 Platform" jdkType="Android SDK" />
移动到component里面最后一行,然后再重新打开项目编译解决飘红问题
总结
网上有很多这样的文章,大多都是零零散散的解决不了问题,我这里只是把我亲测有用的方法记录下来
文章来源:https://blog.csdn.net/2301_77563065/article/details/132711173
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!