Android Studio使用自定義framework.jar

開發中,有時須要用到非公開的API,在之前,通常是經過反射去調用隱藏的API,可是這樣就會存在性能隱患。這裏介紹如何將 framework.jar 導入到 Android Studio 中,以去掉反射java

1. 準備 framewrok.jar

由於我是作系統應用開發,常常須要編譯整個系統源碼,因此 framework.jar 能夠直接獲得。路徑:
out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/classes.jarapp

更名獲得 framework.jaride

2. 把 framework.jar 放到項目中

把 framework.jar 放到 app 模塊的 libs 目錄下性能

3. 添加 app 模塊對 framework.jar 的依賴

依次打開 File –> Project Structure –> Modules 中找到 app ,在右邊選擇 Dependencies 選項卡,點擊左下角的 + 按鈕,選擇 File dependency ,在彈出的 Select Path 窗口中選擇 libs 中的 framework.jargradle

4. 修改 Scope 爲 Provided

在新增的 Dependencies 記錄的右邊,將 Compile 修改成 Provided ,點擊 OK 保存修改,Provided 的做用是隻參與編譯,但不打包到apk中ui

5. 修改項目根目錄的 build.gradle 文件

在項目根 build.gradle 中加入如下內容lua

allprojects {
    repositories {
        jcenter()
    }
    gradle.projectsEvaluated {
        tasks.withType(JavaCompile) {
            options.compilerArgs << '-Xbootclasspath/p:app/libs/framework.jar'
        }
    }
}

6. 編寫代碼

按照以上5步修改完成後,就能夠寫代碼了,須要注意的是,隱藏的API依然關聯不到,顯示紅色的,可是能夠順利編譯經過。spa

最後

解釋一下代碼的做用 allprojects 是要做用到全部的子模塊上,tasks.withType(JavaCompile) 是在 javac 的 task 中加入一個參數,就是在 Xbootclasspath 增長本身的 jar 包code

更多文章請關注公衆號



做者:菜刀文
連接:http://www.jianshu.com/p/a25a85b6372d
來源:簡書
著做權歸做者全部。商業轉載請聯繫做者得到受權,非商業轉載請註明出處。ci

相關文章
相關標籤/搜索