Android中靜態庫和共享庫的區別

與普通程序不一樣的是,Java程序(class文件)並非本地的可執行程序。當運行Java程序時,首先運行JVM(Java虛擬機),而後再把Java class加載到JVM裏頭運行,負責加載Java class的這部分就叫作Class Loader。一般class文件僅在須要使用時才加載。 這自己就是一種動態連接。
Java做爲一種天生的動態連接語言,沒法支持靜態連接。但C語言的靜態庫除了靜態連接的概念外,還隱含了一層意思,即庫中的代碼會打包到可執行文件中。JAVA中的JAR某種程度上相似一個可執行文件或庫,借用C語言中靜態庫和動態庫的概念,這裏把最終會合併到生成的JAR文件中的JAR包叫靜態庫,反之僅僅在編譯中使用,並不打包到生成的JAR包中,運行時需系統自行提供的JAR包叫動態庫。
C的靜態連接只把須要的代碼複製過來,而Java用相似Fat Jar的方法,把全部的依賴庫打包到最後的庫中,眉毛鬍子一把抓。這個問題能夠用ProGuard解決,用它本身的話說是 It detects and removes unused classes, fields, methods, and attributes。

Fat Jar 、ProGuard如何解決,做用是什麼url

原文連接:http://zhidao.baidu.com/link?url=pc0szdts51Kc4HkC3699fVoD4POHppVpQL2B7Ith5voUCPuQLw9fjL7vZnhN-aJRtttgUr2tCvzInMIKAEx5MMEOU1Hhu-xg8VRnUecIqcGrem

相關文章
相關標籤/搜索