關於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其它相關文章!

推薦閱讀: