Android - 调用系统隐式API


前言

调用系统隐式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里面最后一行,然后再重新打开项目编译解决飘红问题


总结

网上有很多这样的文章,大多都是零零散散的解决不了问题,我这里只是把我亲测有用的方法记录下来

相关推荐

  1. Android - 调用系统API

    2023-12-17 21:34:01       67 阅读
  2. 2024系统架构师---调用架构风格的概念与应用

    2023-12-17 21:34:01       34 阅读
  3. [Android]使用CompositionLocal传值

    2023-12-17 21:34:01       28 阅读
  4. Android AIDL实现开放系统API 提供三方app调用

    2023-12-17 21:34:01       39 阅读
  5. Android 14 适配之 - /显示 Intent 和 广播适配

    2023-12-17 21:34:01       20 阅读
  6. Android Compose 调用系统相机拍照

    2023-12-17 21:34:01       54 阅读
  7. mysql转换规则

    2023-12-17 21:34:01       59 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-17 21:34:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-17 21:34:01       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-17 21:34:01       82 阅读
  4. Python语言-面向对象

    2023-12-17 21:34:01       91 阅读

热门阅读

  1. Vue 项目中使用 Pinia 状态管理详细教程

    2023-12-17 21:34:01       59 阅读
  2. static(二)

    2023-12-17 21:34:01       36 阅读
  3. 我的创作纪念日1024

    2023-12-17 21:34:01       67 阅读
  4. mysql修改密码

    2023-12-17 21:34:01       60 阅读
  5. Keil下载及安装(官方版本)

    2023-12-17 21:34:01       68 阅读
  6. halcon2

    2023-12-17 21:34:01       60 阅读
  7. vue3.2结合element-plus自定义上传组件

    2023-12-17 21:34:01       66 阅读
  8. spring的事务传播行为

    2023-12-17 21:34:01       64 阅读
  9. IP小知识

    2023-12-17 21:34:01       50 阅读