簡體   English   中英

Android / Java庫

[英]Android/Java libraries

這些問題是我嘗試理解Android如何處理JAR文件和外部庫等。這是概念性的。

在Java中,JRE附帶了一個JAR文件rt.jar,因此每個應用程序都可以訪問java核心庫。

  1. Java類加載器是否僅在應用程序需要時加載類?

  2. rt.jar是否相當於android的/ system / framework / jars?

  3. 當我們使用SDK開發應用程序時,我們在其中一個android API中包含了android.jar。 android.jar本質上是該API的編譯AOSP(減去一些隱藏的庫)嗎?

  4. android.jar實際上並不包含在APK中,是嗎? 一旦在設備上,APK正在使用/system/framework/framework.jar,對嗎?

  5. 如果是4,那么android如何告訴應用程序使用該庫? 這是我可以查看源代碼的東西嗎?

  6. 當我們將JAR添加到Android項目時,這就像包含靜態庫一樣嗎? 來自庫的代碼只是編譯成classes.dex,就像項目的其余部分一樣?

  7. 當我們向應用程序添加一個android庫項目時,它是否也被編譯成classes.dex? 這和6之間的唯一區別是庫項目可以包含資源嗎?

  8. 如果每個應用程序都引用/system/framework/framework.jar(以及其他應用程序,如services.jar等),那么該設備上是否有一堆該庫一次運行的實例? 它是否像多次加載到內存中的動態庫一樣?

我喜歡這些問題的答案,但我也很欣賞一些關於這些事情的好地方的建議。

如果我在任何答案中出錯,請糾正我,我將編輯:

1.- Android多年來一直是JIT,但有一個新的運行時強制AOT提高性能,因為大多數設備都可以處理它: Dalvik ART

2.- ??

3-5.-由IDE提供的android jar用於編譯目的,但實際的實現是由操作系統加載的,這就是它們如何實現向后兼容性(和碎片化)以及在三星或亞馬遜等熟悉的roms上工作的相同APK。

6.-是的,所有內容都包含在classes.dex中,並且在所有依賴項之間存在65k方法的硬件。 對於可能已包含在OS中的依賴性,存在一些編譯器時間替換。

7.-我不確定新的AAR,但模塊或其他項目是編譯和捆綁在一起的,是的。

8.-這些東西有一個共享內存空間,以及系統資產: Commonsware - 什么是Dalvik部分內存消耗。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM