车载系统应用开发集成系统API

背景

车载开发中,我们为了快速迭代,降低开发成本,往往都会把一些系统应用,剥离出来,做成普通的应用进行开发,这样做,环境配置更简单,编译效率更高,学习成本更低,开发和调试的速度也大大提高。但是我们在开发过程不可避免需要用到某些系统的某些API,如果所有的方法都用反射的话,会大大降低开发的效率。那么我们就需要集成一些系统编译的空方法和类。但是加载这个jar包,会有很多问题。

问题

隐藏的API和systemAPI 会爆红,编译也会失败,无法引用到jar里面的内容

通用解决方法

需要在指定模块gradle中 增加如下代码,把这个jar导入到编译链中。

groovy 复制代码
allprojects {
    gradle.projectsEvaluated {
        tasks.withType(JavaCompile).tap {
            configureEach {


                List<File> newFileList = new ArrayList<>();
                //相对位置,根据存放的位置修改路径
                newFileList.add(new File("./libs/framework.jar"))


                if (options.bootstrapClasspath != null && options.bootstrapClasspath.getFiles() != null) {
                    Set<File> fileSet = options.bootstrapClasspath.getFiles()
                    newFileList.addAll(fileSet)
                }

                options.bootstrapClasspath = files(newFileList.toArray())
            }
        }
    }
}

其他问题

但是在使用更高级别的工程上的时候,我们使用了更高级别的jdk的时候,这样使用就不生效,怎么都编译不过。

解决办法

这种集成framework.jar的方式,只针对 jdk8 有效,所以必须强制指定这个module 为jdk 8。并且和其他的代码隔离。才能使用,并且吧lint编译关闭,不关注报错,才行。

groovy 复制代码
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    kotlinOptions {
        jvmTarget = '1.8'
    }
    lintOptions {
        abortOnError false
        absolutePaths false
    }

总结

  • 需要先把jar加载到工程中
  • 然后再设置 模块的jdk
相关推荐
2501_915909063 小时前
iOS 应用反调试技详解术 检测调试器的原理与防护实践
android·ios·小程序·https·uni-app·iphone·webview
Lvan的前端笔记4 小时前
AndroidX 完全入门指南
android·androidx
帅次4 小时前
Android 应用高级面试:Window 近1年高频追问 18 题
android·面试·职场和发展
总捣什么乱15 小时前
MySQL MySQL是怎么保证主备一致的?
android·mysql·adb
zzm6285 小时前
精读 HinDroid:基于异构信息网络的安卓恶意软件检测
android
weixin_440784116 小时前
Android基础知识汇总
android·java·android studio
sbjdhjd6 小时前
安全初级 | Upload 文件上传漏洞实操
android·经验分享·安全·网络安全·开源·php·apache
small-pudding6 小时前
Cocos Creator Android 热更新方案实践:逻辑更新、远程 Bundle 与线上回滚
android
00后程序员张6 小时前
iOS加固技术路线全面解析:Bitcode模式、源码模式与汇编模式对比及爱加密优势
android·汇编·ios·小程序·uni-app·cocoa·iphone
yunsr7 小时前
PHP函数及漏洞防御
android·开发语言·php