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 文件中添加配置:

repositories {
    flatDir {
        dirs 'libs'
    }
}

dependencies {
    compileOnly files('libs/hisi-android.jar')
}


//预编译时替换掉sdk中对应的jar
preBuild {
    doLast {
        def imlFile = file(project.name + ".iml")
        // def imlFile = file(".idea\\modules\\app\\app.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
        }
    }
}

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

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

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

这个 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

猜你喜欢

转载自blog.csdn.net/HuanWen_Cheng/article/details/135034597
今日推荐