美文网首页程序员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