android包源碼下載
⑴ Gradle獲取源碼sourceSets
在寫gradle插件時可能會使用到源碼文件,如作源碼文件的版本對比,源旅余碼分析等,但源碼如何來獲取呢?一般gradle項目的源碼默認都是在固定的位置,如project/app/src/main/java 。但源碼的位置並非一定要在此,這只是一個 默認位置 ,在Gradle的配置文件build.gradle里是可以配置源碼的位置的,下面可以看下在Android和Java項目中是如何配置的。
Android源碼配置是在android下面的sourceSets參數里進行配置。
Java項目sourceSets與Android項目的不同,它在最外層直接配置。
我們知道在gradle的配置文件中,每個名稱都是一個Extension,每個Extension可以配置指定的參數列表。如android{},是由AppPlugin通過project.getExtensions().create("android",AppExtension)來創建的,而AppExtension類的成員變數定義了gradle參數,如defaultConfig,proctFlavors,buildTypes,signingConfigs等老培。然而事實並非如何,gradle里還有一種配置自定義參數的方式,即Convention。Convention方式侍鎮唯中每個成員變數對應的是一個extension。其中Java項目中的sourceSets即是使用如何方式進行配置的。
下面看一下如何獲取獲取項目的源碼。既然源碼是通過自定義參數配置的,那麼獲取的時候通過拿到自定義的參數對象,獲取其sourceSets欄位即可。
android使用的是BaseExension對象配置的參數,所有通過Plugin獲取到extension對象,取其中的sourceSets欄位。
Java項目是通過Convention配置的,所以需要找到Convention對象,即JavaPluginConvention。通過此對象來獲取Java項目的源碼文件
注意Java項目創建了Jar任務用來打包,而Jar也有一個getSource方法,此方法獲取的並不是源碼文件,而是編譯過的class文件。
⑵ android系統是開源去哪裡下載源代碼
他這不是編程原代碼對外公開,而是系統外部介面對外公開,簡單說,開源就好比是,英特爾生產一個CPU 然後告訴你所有的腳都是干嗎用的,這個告訴你干嗎用的就等於是安桌的開源了, 你知道CPU那些腳干嗎用的後,然後再根據這些腳的功能生產主板,針對這些腳所生產出來的主板就好比那些為因安桌開源後,別人針對安桌所編寫出來的軟體了,