Android 必知必会- 解决在 Android Studio 中 framework 等 jar 包无法被引用的问题

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

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

这是在知乎上的原问题的描述。尝试了该问题下面的多个答案,并没有十分完美的方案,直到一个为公司编译 Android 系统的同事,最近无奈转战到 Android Studio 开始…..

背景

先了解一些基础点:

Android Studio 中的六种依赖

Compile,Provided,APK,Test compile,Debug compile,Release compile

Compile

compile 是对所有的 build type 以及 favlors 都会参与编译并且打包到最终的 apk 文件中。

Provided

Provided 是对所有的 build type 以及 favlors 只在编译时使用,类似 eclipse 中的 external-libs ,只参与编译,不打包到最终 apk 。

APK

只会打包到 apk 文件中,而不参与编译,所以不能再代码中直接调用 jar 中的类或方法,否则在编译时会报错

Test compile

Test compile 仅仅是针对单元测试代码的编译编译以及最终打包测试 apk 时有效,而对正常的 debug 或者 release apk 包不起作用。

Debug compile

Debug compile 仅仅针对 debug 模式的编译和最终的 debug apk 打包。

Release compile

Release compile 仅仅针对 Release 模式的编译和最终的 Release apk 打包。

PS:我们会用到 Provided 引用。