美文网首页程序员Android开发经验谈Android开发
Android Studio 导入系统jar包的正确姿势

Android Studio 导入系统jar包的正确姿势

作者: EvanZch | 来源:发表于2018-08-30 11:39 被阅读2次

前言

前段时间负责了一个系统设置的项目,里面用到了大量的系统隐藏方法,所以自己用Eclipse打了一个系统jar包,但是导入到Android studio的时候,中间踩了很多坑,现在总结一下,防止大家踩坑。

正文

按照下面步骤一步一步来,基本不会出现大问题。

1、将系统jar包放到module的libs文件夹下

2、在Module下的build.gradle添加

provided files('libs/android_framework.jar')

注意 provided作用是只在编译时使用,最终不会打包到Apk中

3、在Project下的build.gradle文件中添加

   gradle.projectsEvaluated {
        tasks.withType(JavaCompile) {
            options.compilerArgs.add('-Xbootclasspath/p:app/libs/android_framework.jar')         
    }

app/libs/android_framework.jar 为jar包路径,app为Module名

这个时候基本就算大功告成了,但是,你会发现,使用系统隐藏方法的地方还是会爆红,那是因为Android Studio在编译时优先使用系统的Sdk。

解决办法:

找到Module下的.iml文件,在里面将你导入的jar包放在sdk之前,这样Android studio编译时优先使用导入的系统jar而不是sdk中的。

最终,Android studio在编译时优先使用导入的jar包,什么系统隐藏方法啥的,使用起来畅通无阻!!

相关文章

网友评论

  • 有点健忘:有点疑问,请教下,你这说说的系统jar和普通的jar有区别的吗?
    我记得平时导入jar包,都是复制到libs目录下,然后右键jar文件,选择add as library,然后gradle文件里就看到多了一行 implementation files('libs/xxx.jar')
    第三步那代码都没见过:sweat:
  • 无心下棋:然而依赖的第一行你没删。
    EvanZch:@无心下棋 嗯嗯,现在provided替换成compileOnly了,我当时用的时候是provided,后面没更新,谢谢提醒,不过不清楚你说的什么第一行代码没删?
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    这行代码?
    无心下棋:@Evan_zch 标题3上面那张图的第一行代码。provided前面那行。并且应该用compileOnly替换provided
    EvanZch:@无心下棋 啥?

本文标题:Android Studio 导入系统jar包的正确姿势

本文链接:https://www.haomeiwen.com/subject/mvyrwftx.html