当前位置:   article > 正文

Android Studio导入各厂商定制的framework代码

Android Studio导入各厂商定制的framework代码

在做android方案定制开发中,常常会碰到需要调用厂商自己定制sdk拓展的系统接口,而Android studio默认使用的是谷歌官方标准sdk,无法调用厂商私有接口,这时就需要将标准sdk中相关代码替换成厂商的,最常见的framework.jar中的代码,以此为例,将厂商提供的framework编译成framework.jar导入Android Studio,编译时替换掉标准sdk中的framework.jar,从而实现调用厂商私有的接口。

这里已海思Hi3798MV200平台Android N为例,编译出的framework.jar路径为:out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/classes.jar

将其重命名为hisi-android.jar拷贝到 项目libs目录下,

然后在 module 的 build.gradle 文件中添加配置:

  1. repositories {
  2. flatDir {
  3. dirs 'libs'
  4. }
  5. }
  6. dependencies {
  7. compileOnly files('libs/hisi-android.jar')
  8. }
  9. //预编译时替换掉sdk中对应的jar
  10. preBuild {
  11. doLast {
  12. def imlFile = file(project.name + ".iml")
  13. // def imlFile = file(".idea\\modules\\app\\app.iml")
  14. println('Change ' + project.name + '.iml order')
  15. try {
  16. def parsedXml = (new XmlParser()).parse(imlFile)
  17. def jdkNode = parsedXml.component[1].orderEntry.find { it.'@type' == 'jdk' }
  18. parsedXml.component[1].remove(jdkNode)
  19. def sdkString = "Android API " + android.compileSdkVersion.substring("android-".length()) + " Platform"
  20. new groovy.util.Node(parsedXml.component[1], 'orderEntry', ['type': 'jdk', 'jdkName': sdkString, 'jdkType': 'Android SDK'])
  21. groovy.xml.XmlUtil.serialize(parsedXml, new FileOutputStream(imlFile))
  22. } catch (FileNotFoundException e) {
  23. // nop, iml not found
  24. }
  25. }
  26. }

注意:
使用 compileOnly(默认是 implementation),compileOnly 表示 jar 包只参与编译,不会打包进去。

然后在 整个项目 的 build.gradle 文件中添加配置:

  1. gradle.projectsEvaluated {
  2. tasks.withType(JavaCompile) {
  3. options.compilerArgs.add('-Xbootclasspath/p:D:\\AS\\AndroidStudioProjects\\KTV\\ktv\\k900_kugou_karaok\\libs\\hisi-android.jar')
  4. }
  5. }

这个 task 在编译之前, 自动更改module.iml,将下面代码会移动最后

<orderEntry type="jdk" jdkName="Android API 30 Platform" jdkType="Android SDK" />
才能在编译时使用我们引入的 framework.jar。

至此就可以正常调用厂商私有接口而不会编译报错,但是Android Studio上还是会显示红色,这不影响使用。

参考:https://blog.csdn.net/yzwfeng/article/details/125540849

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/319181
推荐阅读
相关标签
  

闽ICP备14008679号