關於androidstuio導入系統源碼的問題
最近公司需要做一些將系統源碼導出來,然後加入一些功能,在導入androidstudio過程中遇到過一些問題,這裡記錄下,方便以後需要。
一般導入成功的都是系統比較相對獨立的app,比如計算器、Schedule power on off等,網上查閱一些資料後,最終解決。
這裡以Schedule power on off為例。
1、導出Schedule power on off源碼,路徑為/package/apps/
如圖:
新建androidstudio項目,導入相關代碼以及相關資源文件,rebuild一下,發現報錯。
為瞭能在android studio裡使用framework層隱藏的接口,需要自己編譯下framework的源碼,得到framework.jar和classes.jar。具體路徑如下:
如果編譯debug版本:
out/target/product/projectXX/system/framewor framework.jar
如果是user版本:
out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/classes.jar
這裡新建一個ext_libs,將class.jar改為framework.jar
app.build使用:
allprojects { repositories { jcenter() } gradle.projectsEvaluated { tasks.withType(JavaCompile) { //使用全路徑 options.compilerArgs.add('-Xbootclasspath/p:D://workspace/SchedulePowerOnOff-master/app/ext_libs/framework.jar') } } }
android{ repositories { flatDir { dirs 'libs' } } // u ...... }
provided files('ext_libs/framework.jar')
使用provided隻是在編譯時使用,不打包到apk中
build.gradle中
allprojects { repositories { maven { // url 'https://maven.google.com/' url 'https://dl.google.com/dl/android/maven2/' name 'Google' } jcenter() } gradle.projectsEvaluated { tasks.withType(JavaCompile) { options.compilerArgs.add('-Xbootclasspath/p:D://workspace/SchedulePowerOnOff-master/app/ext_libs/framework.jar') } } }
然後rebuild一下,會發現隱藏的方法還是會報錯。這是因為沒有優先使用ext_libs下的framework.jar
修改:app.iml
如圖
將截圖處移至最後面。便可解決。
build一下,發現隱藏方法導包成功。到此就結束瞭。
以上就是關於androidstuio導入系統源碼的詳細內容,更多關於androidstuio導入系統源碼的資料請關註WalkonNet其它相關文章!
推薦閱讀:
- Flutter學習筆記(二)創建一個flutter項目
- Android Studio 2020新版本卡在Gradle downloading/sync failed/下載緩慢/下載超時的問題
- 使用Composing builds提升Android編譯速度
- AndroidStudio圖片壓縮工具ImgCompressPlugin使用實例
- 教你使用IDEA搭建spring源碼閱讀環境的詳細步驟