簡體   English   中英

Android Studio中的Android庫和Java庫之間的區別

[英]Difference between Android library and Java library in Android Studio

在此處輸入圖片說明

在Android Studio中創建新模塊時,我們可以在Android庫和Java庫之間進行選擇。 通過兩者的修補,我的理解是, Android Library可以訪問Android資源,而Java Library只能訪問Java資源。

因此,在Android Studio中創建Java庫就像在普通的Java IDE(例如Eclipse)中創建新庫一樣。 (它甚至似乎使我們能夠訪問Android不支持的RMI。)

這是正確的嗎,還有其他區別應該注意嗎?

Android庫過去是“ Android庫項目”。

它只是android模塊,可以包含到您的項目中。 如您所說,它具有android資源,您自己的項目也可以訪問包含的庫資源(如樣式或布局)。

必須使用此庫類型來創建自定義視圖或活動或其他android元素

就像對每個項目類型的簡短描述所說,Android庫只是另一個Android應用程序項目,通常稱為模塊。Java庫是Java項目的另一個詞。 moduleproject之間的唯一區別是復雜性。 看一下intellij關於模塊的漂亮描述,以及它們與以下模塊的區別:

基於模塊的項目結構

此功能非常適合具有多個內部依賴項的復雜項目,尤其是J2EE項目。 模塊是項目的單獨邏輯部分,其中包含您的工作源,庫,對目標Java SDK的引用等。它可以作為獨立實體進行編譯,運行或調試。

在此處輸入圖片說明

一個項目可能包含一個或多個模塊。 模塊可能相互依賴。 可以在多個項目之間輕松共享模塊和庫。

資源

也是一本好書。

android庫是aar,而java庫是jar。 從技術上講,兩者都是罐子,但它們的結構組成略有不同。 例如,如下所示的aar:

res  <android resources dir>
values
AndroidManifest.xml
classes.jar
    <classpath structure>
         <.class's>
R.txt

Java庫如下所示:

<classpath structure>
     <.class's>
META-INF

如前所述,java庫不能包含任何android資源,例如布局,值,顏色,樣式。 一個android庫可以包含android資源,但不能包含任何原始android資產(即您放置在Assets文件夾中的任何內容),資源名稱彼此之間不沖突也是開發人員的責任。 android開發人員建議您為每個android庫中的資源名稱分配唯一的前綴。 Java庫無法引用任何android SDK類,例如android.content.Context等。)您可以采取一些技巧來解決最后的限制,但這涉及將aar轉換為jar。 只要您不在aar中使用任何android資源,就可以這樣做。 可能要進行這種轉換的原因是,您可以擁有“ compileOnly”依賴項。 當前,您不能對aar庫具有compileOnly依賴關系,但可以對jar庫具有依賴關系。 OSGI應用程序開發人員需要使用此技術,他們需要引用包含android SDK類的接口。 android開發人員團隊強烈要求修改compilieOnly限制。

暫無
暫無

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

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