做android應用開發時, 如果想使用framework的一些接口(對應用層是hide的),有兩種方法, 一是, 反射; 二是, 將源碼編譯後的framework-immediate裏的classes.jar引用到工程中(或者android sdk目錄下的 platform/android-XX/data/layoutlib.jar)。 第一種方式, 使用比較多; 第二種方式, 比較方便, 引用jar包後直接用, 以免寫繁瑣的反射的代碼。
引用classes.jar包的步驟爲:
1. 將classes.jar複製到工程libs目錄下;
2. 在build.gradle文件中的dependencies里加上 provided files('libs/classes.jar'), 注意, 這裏不是compile fileTree(dir: 'libs', include: ['*.jar'])。
因爲: 用compile fileTree這種方式, 會將classes.jar最後打包到apk中, 使得apk變得非常大。
而! provided files的作用是, 讓工程引用改jar包, 但是不打包到apk中, 這正是我們需要的。