Android應用程序打包時,會將SDK中類的代碼一塊兒打包到apk中麼

好比,我程序中用到ListView這個類,ListView來自於對應編譯版本的sdk,那麼在打包應用apk時,會將sdk中的ListView一塊兒打包到apk中麼。android

換句話說:安裝在手機上的應用,應用中用到的ListView是依賴手機系統?api

再換句話說:安裝在手機上的應用,用到的ListView,這個SDK提供的api的內部的代碼邏輯,是跟着系統變化,仍是在應用打包的時候就已經肯定?ui

另外:這和Android的編譯版本,目標版本之間有什麼的關係呢?blog

答:編譯器

不會帶在apk裏面,用的系統的,所謂系統定製,就包括這些標準組件的默認外觀。編譯

它的代碼在/system/framework/framework.jar裏面,它包含了全部系統自帶的標準組件,包括View、Button。。以及你說的ListView等。gui

這是android標準組件,編譯器在編譯時只是引用一下,能編譯經過就行,實際上你的apk裏面並無這些標準組件的實現代碼。擴展

apk在設備裏面啓動後默認會將framework.jar加載進來,因此你的的apk運行的時候會有這些代碼。打包

另外,android-support-v4.jar或者v7裏面的擴展組件是會編譯到apk裏面去的,由於它並非android的標準組件。List

** android.jar是你建工程的時候默認引進去設置爲不編譯代碼到apk裏面的,它對應系統裏面的framework.jar**

最直接驗證的方法,用jd-gui反編譯看下,你會發現裏面只有你本身的代碼和第三方jar包的代碼

包不包含代碼和編譯版本、目標版本不要緊

編譯版本即你編譯時使用的api版本(android.jar版本)

目標版本,系統不會對該版本作兼容處理,對更高版本會按照該版本的處理方式作兼容處理

相關文章
相關標籤/搜索