在Android Studio中如何将依赖的jar包放在SDK的android.jar前?

在编译原生Contacts应用时需用到非公开的API,需要引入framework等jar包,但在Android Studio中SDK带的jar包的优先级最高,导致引入的framework等jar包无法被引用,请问如何将framework等jar包的优先级调成最高?
关注者
45
被浏览
10,705

13 个回答

之前官方明确说不支持,如果你的framework.jar是完整的Android jar 可以考虑去替换本地sdk 目录下的 android.jar,等我查查看现在是否支持了,再来回答。

======补充=====
官方是不支持的,试试这个:How to put my libraries in front of android.jar by editing build.gradle in Android-Studio
//add @20161019
近日有多人反馈说是没设置成功,我再补几张图,细微部分再详细说明下。
//added end
来来来,最近几天在纠结这个问题,现在已经解决,新鲜出炉。
第一步,把jar包放在工程下的libs目录里,如果没有就新建这个目录,名字随意,为了简单,我写成test.jar。
第二步,通过File菜单或者F4进入project structure,左边选中app,再进到dependencies,点 + 选择file dependency ,再从libs目录选择你要的jar包,这里是test.jar,选择后把 scope置为Provided
最后,千万别忘了,要把你添加的jar挪到最前面,点击右边的蓝色向上箭头即可。
//add pic

第三步,找到工程根目录下的build.gradle,把
allprojects {
    repositories {
        jcenter()
    }
}

这段实现改为
allprojects {
    repositories {
        jcenter()
    }
    gradle.projectsEvaluated {
        tasks.withType(JavaCompile) {
            options.compilerArgs.add('-Xbootclasspath/p:app\\libs\\test.jar')
        }
    }
}
如图:

补充说明,as版本2.1.2,只要是2.1应该都是这样,其他版本未测试
//add @20161019 as
(已升级到2.2.1,依然正常。)
//added end
这时再来编译你的工程吧!
如果觉得此问题可以帮助你,请点赞,谢谢。